【发布时间】:2018-02-16 09:01:01
【问题描述】:
我正在使用 EC2 亚马逊服务器执行 63 个文件的数据处理, 我正在使用的服务器有 16 个核心,但使用 perl Parallel::ForkManager 线程数 = 核心数,然后似乎有一半的核心正在休眠,工作核心不是 100% 并且在 25%~50% 左右波动 我还检查了 IO,它大多是空闲的。
use Sys::Info;
use Sys::Info::Constants qw( :device_cpu );
my $info = Sys::Info->new;
my $cpu = $info->device( CPU => %options );
use Parallel::ForkManager;
my $manager=new Parallel::ForkManager($cpu->count);
for($i=0;$i<=$#files_l;$i++)
{
$manager->start and next;
do_stuff($files_l[$i]);
$manager->finish;
}
$manager->wait_all_children;
【问题讨论】:
-
拨打
do_stuff大概需要多长时间? -
如果将
$cpu->count替换为0,CPU 有多忙? -
$cpu->count是否与您通过查看/proc/cpuinfo所期望的相符? -
你将什么
%options传递给Sys::Info?
标签: multithreading perl