Hi there,

as I promised, I'm going to conduct some in-depth 
analysis and comprehensive SVN performance testing.
That is very time-consuming process.

However, it seems that many people have incorrect
or outdated ideas about the current state of affairs.
To add a bit more substance to the discussion, I like
to present some preliminary data and not to wait
until I collected all data I intend to. 

Side note: Maybe, these numbers make it clearer why 
my patches should be committed after review.

Bottom line: 
* SVN servers tend to be CPU-limited
  (we already observed that problem @ our company
  with SVN 1.4)
* packed repositories are ~20% faster than non-packed, 
  non-sharded
* optimal file cache size is roughly /trunk size
  (plus branch diffs, but that is yet to be quantified)
* "cold" I/O from a low-latency source takes 2 .. 3 times
  as long as from cached data
* a fully patched 1.7 server is twice as fast as 1.6.9

"Export" has been chosen to eliminate problems
with client-side w/c performance.

Please note that all measurements were taken in
a true client/server setup. You can achieve similar
performance in low-latency broad-band networks.

-- Stefan^2.


Test system
-----------

2x XEON 5550 (8 cores total), 2.66GHz, hyper-threading disabled, turbo boost 
disabled
24GB RAM
4x128GB cheapo ssd on RAID-0 controller w/ 256 MB cache

LINUX 2.6.28-18-generic SMP
64 bits

repositories on ext4 
export to tempfs


Repository mirrors used
-----------------------

tsvn       :  mirror of tortoisesvn.tigris.org repository, non-sharded, 
non-packed SVN 1.5 format
              export of /tr...@head
tsvn_packed:  mirror of tortoisesvn.tigris.org repository, packed SVN 1.6 format
              export of /tr...@head
apache.org :  mirror of apache.org repository, packed SVN 1.6 format
              export of /subversion/tr...@head
kde.org    :  mirror of kde.org repository, packed SVN 1.6 format
              export of /tr...@head

criterion     tsvn       tsvn_packed   apache.org   kde.org
repo size     5.3G       4.8G          30.4G        58.4G
revisions     18,937     18,937        943,322      1,125,690
export items  3,840      3,840         1,941        399,419
export size   81M        81M           38M          8.4G


Export using the old server
---------------------------

~/subversion-1.6.9/subversion/svnserve/svnserve -d -T -r /mnt/archive/svnroot/
time svn-1.6.9 export --ignore-externals -q svn://localhost/$TOEXPORT /dev/shm/t

1st run       tsvn       tsvn_packed   apache.org   kde.org
real          0m10.242s  0m9.774s      0m7.473s     20m4.354s
user          0m2.280s   0m2.372s      0m1.104s     2m39.870s
sys           0m0.428s   0m0.424s      0m0.236s     0m35.590s

2nd run       tsvn       tsvn_packed   apache.org   kde.org
real          0m5.494s   0m4.907s      0m3.045s     11m4.798s
user          0m2.416s   0m2.484s      0m1.136s     2m45.506s
sys           0m0.352s   0m0.328s      0m0.216s     0m37.718s


Export using the new server + patches, wire-compression off
-----------------------------------------------------------

~/subversion-1.7.patched/subversion/svnserve/svnserve -d -T -r 
/mnt/archive/svnroot/
time svn-1.6.9 export --ignore-externals -q svn://localhost/$TOEXPORT /dev/shm/t

1st run       tsvn       tsvn_packed   apache.org   kde.org
real          0m6.453s   0m5.817s      0m6.119s     13m22.418s
user          0m1.572s   0m1.680s      0m0.784s     1m42.710s
sys           0m0.544s   0m0.572s      0m0.252s     0m40.351s

2nd run       tsvn       tsvn_packed   apache.org   kde.org
real          0m2.520s   0m2.092s      0m1.792s     5m45.944s
user          0m1.360s   0m1.228s      0m0.796s     1m38.662s
sys           0m0.400s   0m0.392s      0m0.224s     0m36.386s


Resource usage 
--------------

These numbers are for the patched server

criterion     tsvn       tsvn_packed   apache.org   kde.org
cache usage   97M        106M          61M          10.0G

Typical CPU load during 1st KDE export (100% == 1 core)
~70 .. 100% CPU load (svnserve)
~20 ..  40% CPU load (svn)
~10 ..  20% sys

Typical CPU load during 2nd KDE export (100% == 1 core)
      ~100% CPU load (svnserve)
~20 ..  70% CPU load (svn)
~15 ..  30% sys

Reply via email to