Subversion - 检出数千个小文件特别慢,瓶颈在哪里?

Subversion - 检出数千个小文件特别慢,瓶颈在哪里?

我使用千兆局域网,其中有一台 2 核 3 Ghz 的服务器,专用于为我们的存储库提供服务。

我检查了一个包含约 30,000 个文件的项目,其中大部分文件都很小,它的传输速度仅为约 1 MB/秒。大约有 140 MB,所以它需要很长时间。

瓶颈肯定不是硬盘……毕竟是 SSD。是处理问题吗?

Windows 服务器 2008

答案1

Subversion 有一个真的性能记录不佳,尤其是在 Windows 上。问题在于假设所有文件系统操作都很快。因此他们在更新前接触几千个文件,在更新后再次接触它们。而且通常下载的每个文件都至少会导致写入和重命名。

问题是 NTFS 在一次处理几千个文件时速度不是很快(即使是在 SSD 上;我在这里看到了这一点 ;-)),所以它有点崩溃了。你可能无能为力,但为了进行比较,你可以看看它在 Linux 或其他类 Unix 上的速度有多快。

答案2

有两个问题:

a) ntfs:如果您已启用对 8.3 文件名的支持,则 Windows 必须想出唯一的 8.3 名称。它会将这些名称“附加”为额外名称,如果目录中的文件名非常相似,那么想出唯一 8.3 名称的算法将有很多工作要做。算法的工作方式在“Windows Internals 第 5 版,第 946-947 页”中有很好的解释。您可以禁用该功能,签出http://support.microsoft.com/?scid=kb;en-us;121007&x=15&y=12

请记住,您不仅将 30k 个文件检出到工作目录中,而且 svn 还会创建一个 .svn 子文件夹,其中包含这 30k 个文件的本地副本...

b) 资源管理器:资源管理器需要完成相当多的工作,才能显示包含大量项目的文件夹。显示列表中的所有统计信息、创建图标等非常耗时。

我怀疑主要问题 a)

相关内容