dumping ground for random patches and texts
 help / color / mirror / Atom feed
* [PATCH 01/10] ipc: move nproc_shards from v2writable
@ 2023-03-16 20:01 Eric Wong
  2023-03-16 20:01 ` [PATCH 02/10] search: relocate all_terms from lei_search Eric Wong
                   ` (8 more replies)
  0 siblings, 9 replies; 11+ messages in thread
From: Eric Wong @ 2023-03-16 20:01 UTC (permalink / raw)
  To: spew

We'll be using nproc_shards for indexing non-Inbox stuff.
---
 lib/PublicInbox/IPC.pm        | 26 +++++++++++++++++++++++++-
 lib/PublicInbox/V2Writable.pm | 26 +-------------------------
 2 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm
index 548a72eb..730f2cf6 100644
--- a/lib/PublicInbox/IPC.pm
+++ b/lib/PublicInbox/IPC.pm
@@ -19,7 +19,7 @@ use PublicInbox::WQWorker;
 use Socket qw(AF_UNIX MSG_EOR SOCK_STREAM);
 my $MY_MAX_ARG_STRLEN = 4096 * 33; # extra 4K for serialization
 my $SEQPACKET = eval { Socket::SOCK_SEQPACKET() }; # portable enough?
-our @EXPORT_OK = qw(ipc_freeze ipc_thaw);
+our @EXPORT_OK = qw(ipc_freeze ipc_thaw nproc_shards);
 my ($enc, $dec);
 # ->imports at BEGIN turns sereal_*_with_object into custom ops on 5.14+
 # and eliminate method call overhead
@@ -454,4 +454,28 @@ sub detect_nproc () {
 	undef
 }
 
+# SATA storage lags behind what CPUs are capable of, so relying on
+# nproc(1) can be misleading and having extra Xapian shards is a
+# waste of FDs and space.  It can also lead to excessive IO latency
+# and slow things down.  Users on NVME or other fast storage can
+# use the NPROC env or switches in our script/public-inbox-* programs
+# to increase Xapian shards
+our $NPROC_MAX_DEFAULT = 4;
+
+sub nproc_shards ($) {
+	my ($creat_opt) = @_;
+	my $n = $creat_opt->{nproc} if ref($creat_opt) eq 'HASH';
+	$n //= $ENV{NPROC};
+	if (!$n) {
+		# assume 2 cores if not detectable or zero
+		state $NPROC_DETECTED = PublicInbox::IPC::detect_nproc() || 2;
+		$n = $NPROC_DETECTED;
+		$n = $NPROC_MAX_DEFAULT if $n > $NPROC_MAX_DEFAULT;
+	}
+
+	# subtract for the main process and git-fast-import
+	$n -= 1;
+	$n < 1 ? 1 : $n;
+}
+
 1;
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index ed5182ae..d3d13941 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -8,7 +8,7 @@ use strict;
 use v5.10.1;
 use parent qw(PublicInbox::Lock PublicInbox::IPC);
 use PublicInbox::SearchIdxShard;
-use PublicInbox::IPC;
+use PublicInbox::IPC qw(nproc_shards);
 use PublicInbox::Eml;
 use PublicInbox::Git;
 use PublicInbox::Import;
@@ -29,30 +29,6 @@ my $OID = qr/[a-f0-9]{40,}/;
 # an estimate of the post-packed size to the raw uncompressed size
 our $PACKING_FACTOR = 0.4;
 
-# SATA storage lags behind what CPUs are capable of, so relying on
-# nproc(1) can be misleading and having extra Xapian shards is a
-# waste of FDs and space.  It can also lead to excessive IO latency
-# and slow things down.  Users on NVME or other fast storage can
-# use the NPROC env or switches in our script/public-inbox-* programs
-# to increase Xapian shards
-our $NPROC_MAX_DEFAULT = 4;
-
-sub nproc_shards ($) {
-	my ($creat_opt) = @_;
-	my $n = $creat_opt->{nproc} if ref($creat_opt) eq 'HASH';
-	$n //= $ENV{NPROC};
-	if (!$n) {
-		# assume 2 cores if not detectable or zero
-		state $NPROC_DETECTED = PublicInbox::IPC::detect_nproc() || 2;
-		$n = $NPROC_DETECTED;
-		$n = $NPROC_MAX_DEFAULT if $n > $NPROC_MAX_DEFAULT;
-	}
-
-	# subtract for the main process and git-fast-import
-	$n -= 1;
-	$n < 1 ? 1 : $n;
-}
-
 sub count_shards ($) {
 	my ($self) = @_;
 	# always load existing shards in case core count changes:

^ permalink raw reply related	[flat|nested] 11+ messages in thread
* [PATCH 01/10] ipc: move nproc_shards from v2writable
@ 2023-03-15 10:10 Eric Wong
  2023-03-15 10:11 ` [PATCH 06/10] codesearch: initial cut w/ -cindex tool Eric Wong
  0 siblings, 1 reply; 11+ messages in thread
From: Eric Wong @ 2023-03-15 10:10 UTC (permalink / raw)
  To: spew

We'll be using nproc_shards for indexing non-Inbox stuff.
---
 lib/PublicInbox/IPC.pm        | 26 +++++++++++++++++++++++++-
 lib/PublicInbox/V2Writable.pm | 26 +-------------------------
 2 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/lib/PublicInbox/IPC.pm b/lib/PublicInbox/IPC.pm
index 548a72eb..730f2cf6 100644
--- a/lib/PublicInbox/IPC.pm
+++ b/lib/PublicInbox/IPC.pm
@@ -19,7 +19,7 @@ use PublicInbox::WQWorker;
 use Socket qw(AF_UNIX MSG_EOR SOCK_STREAM);
 my $MY_MAX_ARG_STRLEN = 4096 * 33; # extra 4K for serialization
 my $SEQPACKET = eval { Socket::SOCK_SEQPACKET() }; # portable enough?
-our @EXPORT_OK = qw(ipc_freeze ipc_thaw);
+our @EXPORT_OK = qw(ipc_freeze ipc_thaw nproc_shards);
 my ($enc, $dec);
 # ->imports at BEGIN turns sereal_*_with_object into custom ops on 5.14+
 # and eliminate method call overhead
@@ -454,4 +454,28 @@ sub detect_nproc () {
 	undef
 }
 
+# SATA storage lags behind what CPUs are capable of, so relying on
+# nproc(1) can be misleading and having extra Xapian shards is a
+# waste of FDs and space.  It can also lead to excessive IO latency
+# and slow things down.  Users on NVME or other fast storage can
+# use the NPROC env or switches in our script/public-inbox-* programs
+# to increase Xapian shards
+our $NPROC_MAX_DEFAULT = 4;
+
+sub nproc_shards ($) {
+	my ($creat_opt) = @_;
+	my $n = $creat_opt->{nproc} if ref($creat_opt) eq 'HASH';
+	$n //= $ENV{NPROC};
+	if (!$n) {
+		# assume 2 cores if not detectable or zero
+		state $NPROC_DETECTED = PublicInbox::IPC::detect_nproc() || 2;
+		$n = $NPROC_DETECTED;
+		$n = $NPROC_MAX_DEFAULT if $n > $NPROC_MAX_DEFAULT;
+	}
+
+	# subtract for the main process and git-fast-import
+	$n -= 1;
+	$n < 1 ? 1 : $n;
+}
+
 1;
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index ed5182ae..d3d13941 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -8,7 +8,7 @@ use strict;
 use v5.10.1;
 use parent qw(PublicInbox::Lock PublicInbox::IPC);
 use PublicInbox::SearchIdxShard;
-use PublicInbox::IPC;
+use PublicInbox::IPC qw(nproc_shards);
 use PublicInbox::Eml;
 use PublicInbox::Git;
 use PublicInbox::Import;
@@ -29,30 +29,6 @@ my $OID = qr/[a-f0-9]{40,}/;
 # an estimate of the post-packed size to the raw uncompressed size
 our $PACKING_FACTOR = 0.4;
 
-# SATA storage lags behind what CPUs are capable of, so relying on
-# nproc(1) can be misleading and having extra Xapian shards is a
-# waste of FDs and space.  It can also lead to excessive IO latency
-# and slow things down.  Users on NVME or other fast storage can
-# use the NPROC env or switches in our script/public-inbox-* programs
-# to increase Xapian shards
-our $NPROC_MAX_DEFAULT = 4;
-
-sub nproc_shards ($) {
-	my ($creat_opt) = @_;
-	my $n = $creat_opt->{nproc} if ref($creat_opt) eq 'HASH';
-	$n //= $ENV{NPROC};
-	if (!$n) {
-		# assume 2 cores if not detectable or zero
-		state $NPROC_DETECTED = PublicInbox::IPC::detect_nproc() || 2;
-		$n = $NPROC_DETECTED;
-		$n = $NPROC_MAX_DEFAULT if $n > $NPROC_MAX_DEFAULT;
-	}
-
-	# subtract for the main process and git-fast-import
-	$n -= 1;
-	$n < 1 ? 1 : $n;
-}
-
 sub count_shards ($) {
 	my ($self) = @_;
 	# always load existing shards in case core count changes:

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-03-16 20:01 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-16 20:01 [PATCH 01/10] ipc: move nproc_shards from v2writable Eric Wong
2023-03-16 20:01 ` [PATCH 02/10] search: relocate all_terms from lei_search Eric Wong
2023-03-16 20:01 ` [PATCH 03/10] admin: hoist out resolve_git_dir Eric Wong
2023-03-16 20:01 ` [PATCH 04/10] admin: ensure resolved GIT_DIR is absolute Eric Wong
2023-03-16 20:01 ` [PATCH 05/10] test_common: create_inbox: use `$!' properly on mkdir failure Eric Wong
2023-03-16 20:01 ` [PATCH 06/10] codesearch: initial cut w/ -cindex tool Eric Wong
2023-03-16 20:01 ` [PATCH 07/10] cindex: parallelize prep phases Eric Wong
2023-03-16 20:01 ` [PATCH 08/10] cindex: use read-only shards during " Eric Wong
2023-03-16 20:01 ` [PATCH 09/10] searchidxshard: improve comment wording Eric Wong
2023-03-16 20:01 ` [PATCH 10/10] cindex: use DS and workqueues for parallelism Eric Wong
  -- strict thread matches above, loose matches on Subject: below --
2023-03-15 10:10 [PATCH 01/10] ipc: move nproc_shards from v2writable Eric Wong
2023-03-15 10:11 ` [PATCH 06/10] codesearch: initial cut w/ -cindex tool Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).