NAME
MCE::Util - Utility functions
VERSION
This document describes MCE::Util version 1.901
SYNOPSIS
use
MCE::Util;
DESCRIPTION
A utility module for MCE. Nothing is exported by default. Exportable is get_ncpu.
get_ncpu()
Returns the number of logical (online/active/enabled) CPU cores; never smaller than one.
my
$ncpu
= MCE::Util::get_ncpu();
Specifying 'auto' for max_workers calls MCE::Util::get_ncpu automatically. MCE 1.521 sets an upper-limit when specifying 'auto'. The reason is mainly to safeguard apps from spawning 100 workers on a box having 100 cores. This is important for apps which are IO-bound.
use
MCE;
## 'Auto' is the total # of logical cores (lcores) (8 maximum, MCE 1.521).
## The computed value will not exceed the # of logical cores on the box.
my
$mce
= MCE->new(
max_workers
=>
'auto'
,
## 1 on HW with 1-lcores; 2 on 2-lcores
max_workers
=> 16,
## 16 on HW with 4-lcores; 16 on 32-lcores
max_workers
=>
'auto'
,
## 4 on HW with 4-lcores; 8 on 16-lcores
max_workers
=>
'auto*1.5'
,
## 4 on HW with 4-lcores; 12 on 16-lcores
max_workers
=>
'auto*2.0'
,
## 4 on HW with 4-lcores; 16 on 16-lcores
max_workers
=>
'auto/2.0'
,
## 2 on HW with 4-lcores; 4 on 16-lcores
max_workers
=>
'auto+3'
,
## 4 on HW with 4-lcores; 11 on 16-lcores
max_workers
=>
'auto-1'
,
## 3 on HW with 4-lcores; 7 on 16-lcores
max_workers
=> MCE::Util::get_ncpu,
## run on all lcores
);
In summary:
1. Auto
has
an upper-limit of 8 in MCE 1.521 (
# of lcores, 8 maximum)
2. Math may be applied
with
auto (*/+-) to change the upper limit
3. The computed value
for
auto will not exceed the total
# of lcores
4. One can specify max_workers explicitly to a hard value
5. MCE::Util::get_ncpu returns the actual
# of lcores
ACKNOWLEDGMENTS
The portable code for detecting the number of processors was adopted from Test::Smoke::SysInfo.
INDEX
AUTHOR
Mario E. Roy, <marioeroy AT gmail DOT com>