}
                $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};
 # 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;