Understanding VisualSVN Server performance settings

Applies to: VisualSVN Server 4.0 and later

VisualSVN Server allows tuning several performance-related settings. You can find the settings on the Performance tab in VisualSVN Server Properties dialog. The available settings are briefly described below.

Memory for shared object cache (MB)

Shared object cache contains various metadata such as repository tree entries. Metadata caching helps reduce disk I/O and improve performance. On server operating systems, the cache size is 128 MB, by default. This shared object cache size is optimal in most cases.

When VisualSVN Server is installed on a client operating systems such as Windows 10, the default size of shared object cache is 32 MB.

When to adjust the size of the shared object cache

It is recommended to increase the size of the shared object cache in the following cases:

  • The repositories contain subtrees with 10,000 or more direct descendants (for example, more than 10,000 entries in the tags/ folder).
  • VisualSVN Server hosts many active projects.

The size of shared object cache should not be greater than half of the server's physical RAM. It is also generally impractical to increase the size of shared object cache to be more than 1024 MB (1 GB).

Dynamic HTTP compression

Dynamic HTTP compression saves time and bandwidth by reducing the size of data transferred from VisualSVN Server to its clients. This comes at the expense of increased load on the server’s CPU. The setting is enabled by default for optimal network bandwidth usage.

When to use dynamic HTTP compression

For networks where the majority of clients accessing the server through a high-latency connection, or when the effective bandwidth is lower than 100 Mbps, it is recommended to leave the compression on.

For all other cases consider disabling compression. In particular, if the server and all its clients reside in the same 1 Gbps or faster local network, it is highly recommended to disable the compression.

Additional technical details on dynamic HTTP compression

VisualSVN Server can use one of two different compression algorithms, where the choice is governed by the type and version of a client communicating with the server. For modern clients, built against Subversion 1.10 or later, the server uses the LZ4 algorithm, which has a relatively small impact on the CPU load. On the contrary, the GZIP algorithm used for older Subversion clients and web-browsers requires significant server CPU resources.

If all clients had supported LZ4, then disabling compression would have been reasonable for 1 Gbps or faster networks. However, even a single client using GZIP compression for bulk or heavy operations may have a severe impact on the overall server performance. Therefore it may be also beneficial to disable compression in 100 Mbps networks.

A typical cause for performance degradation relates to use of build automation servers. It often happens that a build server uses an outdated Subversion client which only supports GZIP compression. Even a single such build server performing frequent checkouts and updates may cause a high load of the server's CPU and slow down ongoing operations. In a situation like this, and assuming sufficient bandwidth, it is strongly recommended to disable the compression. Another effective strategy would be to deploy an additional VDFS slave with the compression turned off to work with the build server only.

Adjusting performance settings via VisualSVN Server Manager

Follow these steps to change the performance settings through the management console:

  1. Start VisualSVN Server Manager console.
  2. Click Action | Properties.
  3. Click Performance tab.
  4. Adjust the required settings.
  5. Click Apply.

Adjusting performance settings via VisualSVN Server PowerShell

The performance settings can be changed by running Set-SvnServerConfiguration VisualSVN Server PowerShell cmdlet. For example, run the following PowerShell command to configure VisualSVN Server with 256 MB shared memory object cache:

Set-SvnServerConfiguration -SvnInMemoryCacheSize 256

Learn more about Set-SvnServerConfiguration cmdlet in the dedicated section of the article KB88: VisualSVN Server PowerShell Cmdlet Reference

Last Modified: