Hi - Thanks, committing this, with corrected comments and changelog entries and a bit of man page cleanup.
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog index 619ebd8c9202..026908c85000 100644 --- a/debuginfod/ChangeLog +++ b/debuginfod/ChangeLog @@ -1,3 +1,7 @@ +2022-05-09 Noah Sanci <nsa...@redhat.com> + + * debuginfod.cxx (main): Set nonzero defaults for fdcache. + 2022-05-04 Frank Ch. Eigler <f...@redhat.com> Mark Wielaard <m...@klomp.org> diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx index 4aaf41c0886e..fde4e194b526 100644 --- a/debuginfod/debuginfod.cxx +++ b/debuginfod/debuginfod.cxx @@ -3826,6 +3826,13 @@ main (int argc, char *argv[]) error (EXIT_FAILURE, 0, "unexpected argument: %s", argv[remaining]); + // Make the prefetch cache spaces a fraction of the main fdcache if + // unspecified. + if (fdcache_prefetch_fds == 0) + fdcache_prefetch_fds = fdcache_fds / 2; + if (fdcache_prefetch_mbs == 0) + fdcache_prefetch_mbs = fdcache_mbs / 2; + if (scan_archives.size()==0 && !scan_files && source_paths.size()>0) obatched(clog) << "warning: without -F -R -U -Z, ignoring PATHs" << endl; diff --git a/doc/ChangeLog b/doc/ChangeLog index 303e3dc05dc5..cb754d04ba3f 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2022-05-09 Frank Ch. Eigler <f...@redhat.com> + + * debuginfod.8: Tweak prefetch descriptions. + 2022-01-31 Frank Ch. Eigler <f...@redhat.com> * debuginfod-client-config.7: Elaborate DEBUGINFOD_URLS. diff --git a/doc/debuginfod.8 b/doc/debuginfod.8 index ee8e4078e5b5..95b827e9cc35 100644 --- a/doc/debuginfod.8 +++ b/doc/debuginfod.8 @@ -232,34 +232,36 @@ loops in the symbolic directory tree might lead to \fIinfinite traversal\fP. .TP -.B "\-\-fdcache\-fds=NUM" "\-\-fdcache\-mbs=MB" "\-\-fdcache\-prefetch=NUM2" +.B "\-\-fdcache\-fds=NUM" "\-\-fdcache\-mbs=MB" Configure limits on a cache that keeps recently extracted files from archives. Up to NUM requested files and up to a total of MB megabytes will be kept extracted, in order to avoid having to decompress their -archives over and over again. In addition, up to NUM2 other files -from an archive may be prefetched into the cache before they are even -requested. The default NUM, NUM2, and MB values depend on the -concurrency of the system, and on the available disk space on the +archives over and over again. The default NUM and MB values depend on +the concurrency of the system, and on the available disk space on the $TMPDIR or \fB/tmp\fP filesystem. This is because that is where the -most recently used extracted files are kept. Grooming cleans this +most recently used extracted files are kept. Grooming cleans out this cache. .TP .B "\-\-fdcache\-\-prefetch\-fds=NUM" "\-\-fdcache\-\-prefetch\-mbs=MB" -Configure how many file descriptors (fds) and megabytes (mbs) are -allocated to the prefetch fdcache. If unspecified, values of -\fB\-\-prefetch\-fds\fP and \fB\-\-prefetch\-mbs\fP depend -on concurrency of the system and on the available disk space on -the $TMPDIR. Allocating more to the prefetch cache will improve -performance in environments where different parts of several large -archives are being accessed. +.B "\-\-fdcache\-prefetch=NUM2" + +In addition to the main fdcache, up to NUM2 other files from an +archive may be prefetched into another cache before they are even +requested. Configure how many file descriptors (fds) and megabytes +(mbs) are allocated to the prefetch fdcache. If unspecified, these +values depend on concurrency of the system and on the available disk +space on the $TMPDIR. Allocating more to the prefetch cache will +improve performance in environments where different parts of several +large archives are being accessed. This cache is also cleaned out +during grooming. .TP .B "\-\-fdcache\-mintmp=NUM" -Configure a disk space threshold for emergency flushing of the cache. -The filesystem holding the cache is checked periodically. If the -available space falls below the given percentage, the cache is -flushed, and the fdcache will stay disabled until the next groom +Configure a disk space threshold for emergency flushing of the caches. +The filesystem holding the caches is checked periodically. If the +available space falls below the given percentage, the caches are +flushed, and the fdcaches will stay disabled until the next groom cycle. This mechanism, along a few associated /metrics on the webapi, are intended to give an operator notice about storage scarcity - which can translate to RAM scarcity if the disk happens to be on a RAM