On 05/17/2012 09:48 AM, Mark Phippard wrote: > On Thu, May 17, 2012 at 9:45 AM, C. Michael Pilato <[email protected]> > 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 <[email protected]> CollabNet <> www.collab.net <> Enterprise Cloud Development
signature.asc
Description: OpenPGP digital signature

