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

Re: [DISCUSS] delete ra_neon

From: C. Michael Pilato <cmpilato_at_collab.net>
Date: Thu, 17 May 2012 10:27:14 -0400

On 05/17/2012 09:48 AM, Mark Phippard wrote:
> On Thu, May 17, 2012 at 9:45 AM, C. Michael Pilato <cmpilato_at_collab.net> wrote:
>> On 05/17/2012 03:43 AM, Justin Erenkrantz wrote:
>>> Again, the outstanding optimization to do on the ra_serf side is to
>>> reduce the number of PROPFIND requests and make that not proportional
>>> to the number of files - most likely either to the number of
>>> directories or only when custom properties are set. -- justin
>>
>> I've got a patch almost complete that:
>>
>> 1. teaches mod_dav_svn to send non-custom properties across the wire even in
>> skelta-mode, with a flag to say "Hey, there are some custom ones here, too!"
>>
>> 2. teaches ra_serf to assume that if the server is sending actual props
>> across the wire for a given file/dir, it shouldn't perform the PROPFIND
>> unless specifically told to do so by the server.
>>
>> I was toying with this a couple of week's ago when I made the
>> "fetch-from-the-pristine-cache" changes. I'll polish it up and post ASAP.
>
> Will this avoid the HEAD request too? I assume so.

No, I haven't yet taken a crack at removing the HEAD request. That will
significantly help the fetch-from-pristine-cache situation, but this is a
parallel line of optimization that needs to occur.

I tweaked my patch to send all svn: properties across the wire in the
REPORT, leaving only truly custom properties to be manually fetched. (Or so
I thought ... it looks like directories are getting PROPFINDs regardless ...
haven't looked into that yet.) I then ran three clean checkouts against my
local server, grabbing an old Subversion trunk directory from a local
repository. Here are the timings:

UNPATCHED SERVER, UNPATCHED CLIENT

   real 13.74
   user 1.86
   sys 4.00
   ***
   real 11.88
   user 2.09
   sys 3.18
   ***
   real 12.60
   user 2.08
   sys 3.34

   There were 1915 PROPFINDs in each of the three runs.

PATCHED SERVER, UNPATCHED CLIENT

   real 13.83
   user 2.06
   sys 3.40
   ***
   real 12.88
   user 2.12
   sys 3.00
   ***
   real 11.22
   user 1.96
   sys 2.92

   There were 1915 PROPFINDs in each of the three runs.

PATCHED SERVER, PATCHED CLIENT

   real 10.27
   user 1.80
   sys 3.13
   ***
   real 7.68
   user 1.74
   sys 3.82
   ***
   real 7.14
   user 1.76
   sys 2.65

   There was only 203 PROPFINDs (for directories)

To be clear, a "patched server" is one that does the inline property thing
regardless of whether the client is prepared to handle it. So, in the
patched server/unpatched client situation, the server is sending all those
properties across the wire but the client is still turning around and
PROPFINDing the same properties again. It appears that the "waste" in this
situation (including the properties in the REPORT response only to have them
ignored) is negligible -- the real cost here is truly in the PROPFINDs.

-- 
C. Michael Pilato <cmpilato_at_collab.net>
CollabNet   <>   www.collab.net   <>   Enterprise Cloud Development

Received on 2012-05-17 16:27:53 CEST

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