如何提高Windows Subversion客户端更新性能?

时间:2009-06-12 17:03:54

标签: performance svn

如何改善Subversion客户端更新性能?它似乎是客户端上的磁盘绑定。

详细说明:

  • CollabNet Windows客户端版本1.6.2(r37639)
  • Windows XP SP2
  • 3 GB RAM,PF使用率约为1 GB,系统缓存为1.1 GB。
  • 磁盘已启用写入缓存
  • 更新需要7-15分钟(更新时很少)。
  • Checkout有36,083个目录/文件(来自svn列表)
  • 存储库有58,750个修订版。
  • 结帐大约需要2.7 GB
  • Perf监视器显示更新期间%Disk写入时间保持在90%附近。
  • 最大磁盘读取字节数/秒达到12.8M,写入速度达到5.2M
  • CPU,页面文件使用情况和网络使用率都很低。
  • 观察服务器性能似乎表明它不是瓶颈。

除了获得更快的磁盘(特别是配置更改)之外,我对答案特别感兴趣。

一些建议的更新:

  • 我需要整个事情,所以稀疏的目录不起作用。
  • 另一位客户(TortoiseSVN)也需要7分钟
  • 已配置TortoiseSVN图标叠加层,因此它们不会导致问题。
  • 防病毒配置为跳过该目录,因为它不会导致问题。

8 个答案:

答案 0 :(得分:2)

我经历了同样的事情。最近用svn替换了Perforce,但如果我们无法克服Windows上的性能问题,我必须考虑另一种工具。 使用svn 1.6.6,Win XP和Vista客户端。 RedHat服务器。 我的观察与你的观点相符:

  • 巨大的磁盘写入活动。
  • 防病毒不是瓶颈。
  • 无论使用女巫svn-clients。
  • 没有服务器或网络瓶颈。

补充资料 操作速度提高3倍以上:

  • Linux(Ubuntu)。
  • Linux(Ubuntu)在Win Vista主机上的VirtualBox上运行。
  • 在RedHat主机上的VMWare上运行Win XP。

答案 1 :(得分:1)

您是否需要工作副本上的每个存储库?如果您真的只关心树的特定部分,请查看Subversion的Sparse Directories(a.k.a。“Sparse Checkouts”)功能。它允许您操作工作副本,使其仅包含感兴趣的目录。

举个例子,您可以使用它来修剪文档,与安装程序相关的文件等。根据您在本地计算机上真正需要的内容,采用这种方法可能会严重影响您的等待时间。

答案 2 :(得分:1)

尝试svn客户端版本1.5。。它帮助我在我的Vista笔记本电脑上。版本1.6。非常慢。

答案 3 :(得分:0)

这更有可能是您的网络以及移动的数据量以及您的客户端。你在用Tortoise吗?移动那么多数据时,我发现自己有点慢!

答案 4 :(得分:0)

您使用的是TortoiseSVN吗?如果是这样,图标叠加确实会降低操作速度。如果你去TortoiseSVN设置/图标叠加,你可以调整几个设置来控制你想要使用叠加层的级别,包括完全关闭它们。看看这是否会影响你的表现。

答案 5 :(得分:0)

您是否运行使用按访问扫描的病毒检查程序?这真的可以让它爬行。如果是这样,请将其关闭,看看是否有帮助。如果有帮助,大多数扫描仪都可以排除特定目录。

答案 6 :(得分:0)

似乎没有人指出我经常考虑设计缺陷的一个原因。 Subversion为离线操作创建了结帐的第二个“原始”副本。如果您正在查看4G文件,它实际上是将8G写入磁盘。

将结帐与导出进行比较。这将显示编写第二份副本时的巨大差异。

你无能为力。

答案 7 :(得分:0)

升级到svn 1.7

来自Discussion of Slow Performance of SVN Update

  

svn 1.6中的更新过程如下:

     
      
  1. 搜索整个工作副本,看看当前有什么,然后将其锁定,以便在接下来的步骤中没有人更改答案
  2.   
  3. 告诉服务器
  4.   
  5. 从服务器接收您需要的任何新内容,随时将更改应用于文件
  6.   
  7. 再次递归整个工作副本,解锁
  8.         

    如果有许多目录和文件,步骤1和4可以占用a   很多时间。这与你对长期的观察是一致的   没有网络流量的延迟。

在svn 1.7中更改了工作副本格式。现在,所有元信息都存储在工作副本的根文件夹中的SQLite数据库中,并且不再需要执行步骤1和4,这些步骤在svn update期间消耗了大部分时间。