"All" my CPUs is only 4, but it's probably ridiculous for
somebody with a 16-core system to have 16 processes for
accessing SQLite DBs.

We do the same thing in Pmdir for parallel Maildir access
(and V2Writable).
---
 lib/PublicInbox/LeiImportKw.pm  | 4 +++-
 lib/PublicInbox/LeiNoteEvent.pm | 3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/LeiImportKw.pm b/lib/PublicInbox/LeiImportKw.pm
index 2863d17f..379101c2 100644
--- a/lib/PublicInbox/LeiImportKw.pm
+++ b/lib/PublicInbox/LeiImportKw.pm
@@ -11,7 +11,9 @@ use parent qw(PublicInbox::IPC);
 sub new {
        my ($cls, $lei) = @_;
        my $self = bless { -wq_ident => 'lei import_kw worker' }, $cls;
-       my ($op_c, $ops) = $lei->workers_start($self, $self->detect_nproc);
+       my $j = $self->detect_nproc // 4;
+       $j = 4 if $j > 4;
+       my ($op_c, $ops) = $lei->workers_start($self, $j);
        $op_c->{ops} = $ops; # for PktOp->event_step
        $self->{lei_sock} = $lei->{sock};
        $lei->{ikw} = $self;
diff --git a/lib/PublicInbox/LeiNoteEvent.pm b/lib/PublicInbox/LeiNoteEvent.pm
index 5f692e75..a0591a09 100644
--- a/lib/PublicInbox/LeiNoteEvent.pm
+++ b/lib/PublicInbox/LeiNoteEvent.pm
@@ -80,8 +80,9 @@ sub lei_note_event {
        my $self = $cfg->{-lei_note_event} //= do {
                my $wq = bless { lms => $lms }, __PACKAGE__;
                # MUAs such as mutt can trigger massive rename() storms so
-               # use all CPU power available:
+               # use some CPU, but don't overwhelm slower storage, either
                my $jobs = $wq->detect_nproc // 1;
+               $jobs = 4 if $jobs > 4; # same default as V2Writable
                my ($op_c, $ops) = $lei->workers_start($wq, $jobs);
                $lei->wait_wq_events($op_c, $ops);
                note_event_arm_done($lei);
--
unsubscribe: one-click, see List-Unsubscribe header
archive: https://public-inbox.org/meta/

Reply via email to