[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Performance branch review: single revision changes

From: Stefan Fuhrmann <stefanfuhrmann_at_alice-dsl.de>
Date: Sun, 19 Sep 2010 21:58:36 +0200

Hi there,

as per public request, this is a list of smaller changes made on the
performance branch. Each revision can be reviewed (hopefully)
without further context and be merged into trunk independently.

* r982335
  Limit the amount of unused memory kept in apr_pools
  to the same amount as everywhere else, e.g. SVN.exe main().
  Justification:
    (1) uniform handling of memory pools
    (2) Without this change, apr pools will fragment indefinitely (?)
        for strings (e.g. fulltexts) and other chunks larger than 80kB.
        This already happens on trunk if memcached usage has been
        enabled.

* r984984
  Reduce the number of revprop lookups during export and
  checkout by caching rev,author,timestamp triples locally in
  the report generation code.
  Justification:
    (1) Reduce I/O overhead, especially for pre-1.7 repos
    (2) Ensures consistent reports even if revprops get changed
        by concurrent accesses

* r985472
  Minimize the number of retry attempts when looking for an
  unused temporary file name.
  Justification:
    Some functions (e.g. svn export) request temp file names without
    any randomized sub-string in it, thus retries may take longer and
    longer. This seems to hurt SVN developers more often than
    ordinary users (process gets killed more frequently) but it also
    makes the client less sensitive to cluttered TEMP folders etc.

* r985477
  Eliminate OS overhead for determining the default permissions for
  temp files.
  Justification:
    Significant reduction in sys / OS overhead in svn export.

* r985482
  Reduce the calling overhead for svn I/O functions by inlining the
  APR result -> svn_error_t conversion wrapper.
  Justification:
    A very simple change that reduces the costs of our deep
    calling hierarchies.

* r985500
  Just another temp file name handling improvement: Use the already
  properly encoded file name information from the APR file instead
  of constructing it.
  Justification:
    Further reduction of the client-side overhead in svn export
    (and possibly others).

* r985606
  A somewhat larger change: Reduce the ra_svn de-marshalling
  overhead mainly by pre-allocating sufficient container capacity
  in various places.
  Justification:
    In LAN environments, the data processing on the client becomes
    a bottleneck for faster servers.

* r986453
  An even larger change: Speed up file translation by further optimizing
  the search for "interesting chars" and replacing EOLs only if they
  have actually changed (allowing for larger chunks of data per write
  output operation).
  Justification:
    Apart from the physical I/O and the MD5 translation, this is the
    most CPU-demanding part of an svn export. This patch more than
    doubles its performance. It should also speed up svn checkout by
    the same amount (not factor) of time.

* r987888
  Ignore files generated by MS VisualStudio 2010.
  Justification:
    Dev usability improvement. No functional changes.
Received on 2010-09-19 21:59:29 CEST

This is an archived mail posted to the Subversion Dev mailing list.