mirror of
https://github.com/kdlucas/byte-unixbench.git
synced 2024-12-11 23:30:07 +08:00
Merge pull request #41 from gstrauss/Run-on-active-CPUs
Run - detect num active CPUs
This commit is contained in:
commit
34ecf4ec6a
@ -670,6 +670,9 @@ sub processCpuFlags {
|
|||||||
# array of N entries, one per CPU, where each entry is a hash containing
|
# array of N entries, one per CPU, where each entry is a hash containing
|
||||||
# these fields:
|
# these fields:
|
||||||
# describing the model etc. Returns undef if the information can't be got.
|
# describing the model etc. Returns undef if the information can't be got.
|
||||||
|
#
|
||||||
|
# future: on systems without /proc/cpuinfo, might check for Perl modules:
|
||||||
|
# Sys::Info::Device::CPU or Sys::CpuAffinity
|
||||||
sub getCpuInfo {
|
sub getCpuInfo {
|
||||||
if (!("$^O" eq "darwin")) {
|
if (!("$^O" eq "darwin")) {
|
||||||
open(my $fd, "<", "/proc/cpuinfo") || return undef;
|
open(my $fd, "<", "/proc/cpuinfo") || return undef;
|
||||||
@ -716,6 +719,39 @@ sub getCpuInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Get number of available (active) CPUs (not including disabled CPUs)
|
||||||
|
# or, if not num of available CPUs, the total number of CPUs on the system
|
||||||
|
# Returns undef if the information can't be obtained.
|
||||||
|
#
|
||||||
|
# There is no shortage of platform-specific methods to obtain this info.
|
||||||
|
# This routine -is not- exhaustive, but adds some additional portability.
|
||||||
|
# Most modern unix systems implement sysconf(_SC_NPROCESSORS_ONLN).
|
||||||
|
sub getNumActiveCpus {
|
||||||
|
my $numCpus;
|
||||||
|
|
||||||
|
#(POSIX::_SC_NPROCESSORS_ONLN value not typically provided by POSIX.pm)
|
||||||
|
#$numCpus = POSIX::sysconf(POSIX::_SC_NPROCESSORS_ONLN);
|
||||||
|
#if (defined($numCpus)) { chomp $numCpus; return $numCpus if $numCpus; }
|
||||||
|
|
||||||
|
$numCpus = `getconf _NPROCESSORS_ONLN 2>/dev/null`;
|
||||||
|
if (defined($numCpus)) { chomp $numCpus; return $numCpus if $numCpus; }
|
||||||
|
|
||||||
|
$numCpus = `getconf NPROCESSORS_ONLN 2>/dev/null`;
|
||||||
|
if (defined($numCpus)) { chomp $numCpus; return $numCpus if $numCpus; }
|
||||||
|
|
||||||
|
$numCpus = `nproc 2>/dev/null`;
|
||||||
|
if (defined($numCpus)) { chomp $numCpus; return $numCpus if $numCpus; }
|
||||||
|
|
||||||
|
$numCpus = `python -c 'import os; print os.sysconf(os.sysconf_names["SC_NPROCESSORS_ONLN"]);' 2>/dev/null`;
|
||||||
|
if (defined($numCpus)) { chomp $numCpus; return $numCpus if $numCpus; }
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
return $ENV{"NUMBER_OF_PROCESSORS"} if $ENV{"NUMBER_OF_PROCESSORS"};
|
||||||
|
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Get information on the host system. Returns a reference to a hash
|
# Get information on the host system. Returns a reference to a hash
|
||||||
# with the following fields:
|
# with the following fields:
|
||||||
# name Host name
|
# name Host name
|
||||||
@ -766,6 +802,12 @@ sub getSystemInfo {
|
|||||||
$info->{'numCpus'} = scalar(@$cpus);
|
$info->{'numCpus'} = scalar(@$cpus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Get available number of CPUs (not disabled CPUs), if possible.
|
||||||
|
my $numCpus = getNumActiveCpus();
|
||||||
|
if (defined($numCpus)) {
|
||||||
|
$info->{'numCpus'} = $numCpus; # overwrite value from getCpuinfo()
|
||||||
|
}
|
||||||
|
|
||||||
# Get graphics hardware info.
|
# Get graphics hardware info.
|
||||||
$info->{'graphics'} = getCmdOutput("3dinfo | cut -f1 -d\'(\'");
|
$info->{'graphics'} = getCmdOutput("3dinfo | cut -f1 -d\'(\'");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user