On Sat, Sep 10, 2011 at 08:48:50PM +0300, Daniel Shahaf wrote: > After cherry-picking r1167546 from trunk to the fs-successor-ids branch > in r1167550, reintegrating that branch to trunk takes a long time > (sufficiently long for the server to assume the client has > disconnected). > > Stefan debugged this and found that most time is spent in > combine_with_lastrange(). (Backtrace attached.) > > Adding a debug print (patch attached) just above the qsort() shows an > interesting pattern: > > [[[ > DBG: mergeinfo.c: 439: Sorting with 253 elements > DBG: mergeinfo.c: 439: Sorting with 254 elements > DBG: mergeinfo.c: 439: Sorting with 255 elements > DBG: mergeinfo.c: 439: Sorting with 256 elements > DBG: mergeinfo.c: 439: Sorting with 257 elements > DBG: mergeinfo.c: 439: Sorting with 258 elements > DBG: mergeinfo.c: 439: Sorting with 259 elements > DBG: mergeinfo.c: 439: Sorting with 260 elements > DBG: mergeinfo.c: 439: Sorting with 261 elements > DBG: mergeinfo.c: 439: Sorting with 262 elements > DBG: mergeinfo.c: 439: Sorting with 263 elements > ]]] > > That happens with both serf and neon, and Stefan reports it was fast > yesterday (before my cherry-pick and other commits today).
As of r1167681, this merge doesn't hog the CPU anymore. However, it runs out of memory very quickly: $ time svn merge --reintegrate ^/subversion/branches/fs-successor-ids Out of memory - terminating application. Abort trap (core dumped) 0m6.36s real 0m0.71s user 0m0.19s system I haven't yet debugged this to the point of understanding what is going on.