Here are some quick benchmarks with our environment of the improvement the patch provides.
1.7.4 1.7.4-patch svn co 8m24s 4m8s svn st 13.3s 3.2s svn ci 1m31s 4.1s svn rm * 1.85s 6.3s svn revert 46.6s 4.0s Seems to me that the default behavior should be to enable excusive locking when the sqlite database is on an nfs filesystem (i.e. stat -fc%T .) and to disable it when the system is local. The exclusive locking on nfs "could" be disabled through the config file, but I think the performance data shows that you would always want to use exclusive when you're on nfs. "Moe, Mark" <mark....@medtronic.com> writes: > Yes, I tried it and it was very effective! See below: > > 1.6.17 1.7.4 1.7.4-patched > NFS benchmark* 1534s 4074s 572s > Local benchmark* 365s 162s 118s > NFS svn co 29s 163s 18s > Local svn co 4s 4s 3s > > Are there any downsides to this patch? It sounds like the only > downside is a delay to simultaneous read operations for the same > working-copy. Those operations are very rare for compared to the huge > gains in NFS working-copy performance. It probably rare in a Unix command line environment. GUI environments are more difficult, it's not hard to imagine GUIs that run status to update one window while update runs in another, and those windows could show the same working copy. I don't know whether the current GUIs do behave that way since the current concurrency isn't perfect: run status during update and if a work-queue item exists then status will fail. The other question is how well locking works on NFS. If we add this feature will it break existing setups? Is exclusive locking more or less reliable than the current locking? My guess is that exclusive locking is already part of the current system and so exclusive locking is at least as reliable as the current system. > * The benchmark command runs a variety of svn commands and is from here > https://ctf.open.collab.net/sf/wiki/do/viewPage/projects.csvn/wiki/BenchmarkInstructions. I know it works on test case benchmarks, I'm more interested in numbers from a real use cases. However, it is good to know that it works on systems other than my own NFS setup. I don't really know how to proceed. The performance gains are huge on NFS and it's hard to see any other way to fix the 1.7 regression. We could sacrifice concurrency for performance and enable it all the time, essentially deciding that this is the way that WCNG will use SQLite. I suppose we could try to enable it automatically if appropriate, but I don't know what test we use to make the decision. The alternative is to make it user controllable via .subversion/config but there is opposition to adding such controls. That raises the questions what is the default and what do we recommend people use? -- Philip Michael Rytting Agilent Technologies michael_rytt...@agilent.com<mailto:michael_rytt...@agilent.com> 719-590-3708