diff options
-rw-r--r-- | lib/PublicInbox/SearchIdxPart.pm | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/PublicInbox/SearchIdxPart.pm b/lib/PublicInbox/SearchIdxPart.pm index d5a3fd17..5582d672 100644 --- a/lib/PublicInbox/SearchIdxPart.pm +++ b/lib/PublicInbox/SearchIdxPart.pm @@ -20,6 +20,11 @@ sub new { } $v2writable = undef; close $w; + + # F_SETPIPE_SZ = 1031 on Linux; increasing the pipe size here + # speeds V2Writable batch imports across 8 cores by nearly 20% + fcntl($r, 1031, 1048576) if $^O eq 'linux'; + eval { partition_worker_loop($self, $r) }; die "worker $part died: $@\n" if $@; die "unexpected MM $self->{mm}" if $self->{mm}; @@ -63,8 +68,10 @@ sub partition_worker_loop ($$) { # called by V2Writable sub index_raw { my ($self, $len, $msgref, $artnum, $object_id) = @_; - print { $self->{w} } "$len $artnum $object_id\n", $$msgref or die + my $w = $self->{w}; + print $w "$len $artnum $object_id\n", $$msgref or die "failed to write partition $!\n"; + $w->flush or die "failed to flush: $!\n"; } 1; |