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

Link latency and ra_svn/ra_dav performance

From: Tobias Ringström <tobias_at_ringstrom.mine.nu>
Date: 2003-10-22 22:52:49 CEST

The current implementation of both ra_svn and ra_dav are implemented
without overlapping requests. In other words they always wait for the
response from the server for the previous request before sending the
next request. This is a huge performance problem over high latency
links, but it is very noticable even over a fast LAN. This is an issue
for both import/commit and export/co/update.

Fortunately for me, the ra_svn implementation was very easy to hack to
demonstrate the possible performance gains. Using the attached patch,
the svn protocol becomes much more streamy. I performed a checkout of a
repository containing 138 small files (around 1 kiB average) over a 25
ms (~1 Mb) ssh tunneled link. Before applying the patch above the
checkout took 10 seconds. After applying the patch it takes 2 seconds,
i.e. a five-fold improvement.

So what do you think? Can we make the protocols streamy? Should I create
an issue?

/Tobias

Index: subversion/libsvn_ra_svn/editor.c
===================================================================
--- subversion/libsvn_ra_svn/editor.c (revision 7486)
+++ subversion/libsvn_ra_svn/editor.c (working copy)
@@ -180,7 +180,6 @@
   ra_svn_baton_t *b = dir_baton;
 
   SVN_ERR(svn_ra_svn_write_cmd(b->conn, pool, "close-dir", "c", b->token));
- SVN_ERR(svn_ra_svn_read_cmd_response(b->conn, pool, ""));
   return SVN_NO_ERROR;
 }
 
@@ -279,7 +278,6 @@
 
   SVN_ERR(svn_ra_svn_write_cmd(b->conn, pool, "close-file", "c(?c)",
                                b->token, text_checksum));
- SVN_ERR(svn_ra_svn_read_cmd_response(b->conn, pool, ""));
   return SVN_NO_ERROR;
 }
 
@@ -513,7 +511,6 @@
   SVN_CMD_ERR(ds->editor->close_directory(entry->baton, pool));
   apr_hash_set(ds->tokens, token, APR_HASH_KEY_STRING, NULL);
   apr_pool_destroy(entry->pool);
- SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
   return SVN_NO_ERROR;
 }
 
@@ -651,7 +648,6 @@
   SVN_CMD_ERR(ds->editor->close_file(entry->baton, text_checksum, pool));
   apr_hash_set(ds->tokens, token, APR_HASH_KEY_STRING, NULL);
   apr_pool_destroy(entry->pool);
- SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
   return SVN_NO_ERROR;
 }
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Oct 22 22:53:35 2003

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.