On Thu, Aug 10, 2023 at 6:53 PM <kjohn...@eclypse.org> wrote: > > Let me start by saying that I recognize that this situation is probably > specific to Debian. Even so, it seems possible that someone here might be > able to give me helpful ideas about where or how to start looking to track > down the symptom I am seeing. > > A set of svnadmin dump commands that run as part of a backup procedure seem > to be _much_ slower in Bookworm than in Bullseye. Prior to the upgrade to > Bullseye, these commands took slightly less than one hour. After the > upgrade, similar commands (dumping a few more revisions) require more than > six hours. The script that performs these commands has not been changed. > > Bookworm has subversion 1.14.2. Bullseye had 1.14.1. > > If you had these symptoms, where would you start to look? > > Thanks, > > Ken
That's a pretty significant slowdown. Unfortunately there's no easy way to say what might cause it, since many things can happen (and change) between OS releases. Subversion is only one of many, probably thousands, of components that changed during the OS upgrade. Whatever is causing the slowdown could be in Subversion or in another component. I assume the two releases are running on the same hardware? Same storage hardware? Same file system format? Can you think of anything else significant that may have changed in the system besides the OS upgrade itself? Has anything very large, or a very large number of revisions, been committed to the repository after the OS upgrade took place? Could anything significant be happening in the background? Especially something related to disks? The strategy should be divide and conquer, trying to isolate the problem to a specific component or at least rule out as many things as possible to narrow down the search space. Since you've noticed a slowdown related to dumping the Subversion repositories, and if there's nothing else that you can easily test first, then you might try to rule out (or rule in) whether the slowdown is caused by changes in Subversion between 1.14.1 and 1.14.2. Since it was "fast" with 1.14.1 and "slow" with 1.14.2, the way I might approach it would be to build both 1.14.1 and 1.14.2 on the new OS and try the dump with each. You don't need to build with all the options and dependencies; you only need the minimal dependencies (APR, APR-util, sqlite-amalgamation, and utf8proc) to get a functional svnadmin. You probably shouldn't do builds and tests on a production system that is serving repositories; I would use another machine for the tests. If your builds of 1.14.1 and 1.14.2 take approximately the same time to perform the dump, then the problem is not in Subversion itself, you've ruled that out, and you'd have to look elsewhere in the system: If both are "slow" then something else changed in the OS or hardware or the repository being dumped. If both are "fast" while the package manager's 1.14.2 is "slow" then I'd wonder what's different about the packaged binaries. If, however, there is a significant speed difference -- i.e., if 1.14.1 is "fast" and 1.14.2 is "slow" -- then I'd start looking into what changed in Subversion; if we get to this stage, then I would go into strategies of how to minimize the search effort within Subversion. But first, we have to know whether Subversion is the component to dive further into. By the way, this is the list of changes between 1.14.1 and 1.14.2, with the trunk revision from which each change was merged to the 1.14.x branch. Before I wrote the above, I looked over this list to see if anything glaringly obvious caught my attention; I didn't see anything like that, which is why I'm suggesting to rule out effects from other components first. * r1889487 swig-py: Fix doubly destroying memory pool with cyclic garbage collector. * r1896877 Fix misleading -r option documentation for some svnadmin subcommands. * r1887704 Follow up to r1865987, r1866588: Unbreak a msgid. * r1891908 Fix a bug where «make davautocheck» immediately after configure failed hard because of an unbuilt dependency. * r1885199 swig-py: Skip some tests on Python 2 if default encoding is 'utf-8'. * r1886708 swig-py: Fix dependency of make copy-swig-py target. * r1883838, r1883989, r1886460, r1886582 Add test coverage for CVE-2020-17525 (mod_authz_svn NULL deref) * r1887641, r1890013 Fix encoding of error message on failure of system() call. * r1889629 Document how the port number is passed to custom tunnels. * r1897449 tests: Include additional information in an error message. * r1894734 Fix issue #4880, "Use-after-free of object-pools when running in httpd" * r1892121 Fix an error message when running make davautocheck. * r1883355 Use the APR-1.4+ API for flushing file contents to disk. * r1899227 Don't show unreadable copyfrom paths in 'svn log -v' * r1898633 Fix sporadic testCrash_RequestChannel_nativeRead_AfterException failure * r1892470, r1892471, r1892541 Fix an assertion failure triggered by the conflict resolver. * r1881534 Fix issue #4864 "build/ac-macros/macosx.m4: workaround AC_RUN_IFELSE" * r1896609 Bumps copyright date to 2022 * r1890231 README: Document new home of our IRC channels at libera.chat * r1894491 INSTALL: Document not to build ZLib with ASM optimizations * r1884474 Fixes authz tests on Windows Hope this helps, Nathan