+ # getconf(1) is POSIX, but *NPROCESSORS* vars are not
+ for (qw(_NPROCESSORS_ONLN NPROCESSORS_ONLN)) {
+ `getconf $_ 2>/dev/null` =~ /^(\d+)$/ and return $1;
+ }
+
+ # should we bother with `sysctl hw.ncpu`? Those only give
+ # us total processor count, not online processor count.
+ undef
+}
+
+sub nproc_shards ($) {
+ my ($creat_opt) = @_;
+ my $n = $creat_opt->{nproc} if ref($creat_opt) eq 'HASH';
+ $n //= $ENV{NPROC};