24 May 2022 09:25:26 UTC
- Distribution: MCE
- Module version: 1.879
- Source (raw)
- Browse (raw)
- How to Contribute
- Testers (1294 / 1 / 0)
- KwaliteeBus factor: 1
- 55.44% Coverage
- License: perl_5
- Perl: v5.8.1
- Activity24 month
- Download (219.32KB)
- MetaCPAN Explorer
- Subscribe to distribution
- This version
- Latest version++ed by:45 non-PAUSE usersMARIOROY Mario Royand 1 contributors
- Mario E. Roy <marioeroy AT gmail DOT com>
MCE::Util - Utility functions
This document describes MCE::Util version 1.879
A utility module for MCE. Nothing is exported by default. Exportable is 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 );
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
The portable code for detecting the number of processors was adopted from Test::Smoke::SysInfo.
Mario E. Roy, <marioeroy AT gmail DOT com>