我最近向我的svn存储库提交了一个大的变更集(~7,000个文件).这7,000个文件仅占使用FSFS后端并与svnserve 1.7一起提供的存储库总大小的5%.从那以后,在这个大型提交之后的结账修改需要花费20倍的时间.
Subversion在内部做什么导致速度减慢,有没有办法解决这个问题?
在手动检查错误的修订版时,我可以看到结帐开始变慢的点.结帐开始是非常快速地将文件添加到工作副本(您无法足够快地读取tty输出).一旦结帐到达某个目录(错误的修订将2,000个文件添加到此目录(其中已包含17,000个文件)),文件将被添加到工作副本中,速度明显变慢(如每秒5个文件),用于其余的结帐.在错误的版本之前进行的修订会在整个时间内非常快速地将文件添加到工作副本中.此目录中的文件各约为1KB.
我svnserve为版本1.6和1.7 编译了我自己的版本--with-debuging和--with-gprof,以便我们可以深入了解正在发生的事情.一些进一步的讨论表明,svnadmin 1.7中与内存缓存相关的一些增强功能实际上是在此版本中将其删除.即,使用svnserve 1.6服务存储库会使这个问题消失.我猜这是在http://subversion.apache.org/docs/release-notes/1.7.html#server-performance-tuning中讨论的内存缓存,它基于gprof配置文件,用于在错误修订时的结帐时间(和之前的那个).在rBAD中,某些svn fsfs到内存缓存函数的调用比rGOOD大约多2,000,000,000倍.
roh*_*hit -1
是的,SVN v1.7 版本推出了许多性能增强功能。但这些都是基于一些一般性的假设。对于极端情况,例如单次提交中的大量文件或尺寸巨大的文件,需要调整发行说明中指定的预设参数。
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |