]> Sergey Matveev's repositories - public-inbox.git/commitdiff
v2writable: reduce partititions by one
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Wed, 18 Apr 2018 09:13:08 +0000 (09:13 +0000)
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>
Wed, 18 Apr 2018 09:14:12 +0000 (09:14 +0000)
git fast-import and the main V2Writable process combined takes
about one CPU, so avoid having too many Xapian partitions which
cause unnecessary I/O contention.

lib/PublicInbox/V2Writable.pm

index 1cc4b005f86525352bcd1cb81f7ee19139ec9ee5..66f8a8a3f181948332ac28b396b1d4990108094d 100644 (file)
@@ -22,8 +22,11 @@ use IO::Handle;
 my $PACKING_FACTOR = 0.4;
 
 # assume 2 cores if GNU nproc(1) is not available
-sub nproc () {
-       int($ENV{NPROC} || `nproc 2>/dev/null` || 2);
+sub nproc_parts () {
+       my $n = int($ENV{NPROC} || `nproc 2>/dev/null` || 2);
+       # subtract for the main process and git-fast-import
+       $n -= 1;
+       $n < 1 ? 1 : $n;
 }
 
 sub count_partitions ($) {
@@ -73,7 +76,7 @@ sub new {
                rotate_bytes => int((1024 * 1024 * 1024) / $PACKING_FACTOR),
                last_commit => [], # git repo -> commit
        };
-       $self->{partitions} = count_partitions($self) || nproc();
+       $self->{partitions} = count_partitions($self) || nproc_parts();
        bless $self, $class;
 }