是否可以在空闲计算机中使用Perl脚本来控制cpu的使用?
像some.pl 50
将消耗50%的CPU,some.pl 100
将消耗100%的CPU。
最佳答案
是的,当然有可能。以下代码段在的瞬间计算特定进程的处理器负载百分比。您可能首先想收集一定数量的值,然后取它们的平均值以获得平滑的结果。
然后,简单地,如果负载不够高,则告诉该过程进行工作;如果负载太大,则告诉该过程暂停工作。use constant UTIME => 13;
use constant STIME => 14;
use List::Util qw(sum);
use Time::HiRes qw(sleep);
use autodie qw(:all);
sub pidload {
my ($pid) = @_;
open my $pstat, '<', "/proc/$pid/stat";
my @pstat = split ' ', <$pstat>;
close $pstat;
return $pstat[UTIME] + $pstat[STIME];
}
sub cpuload {
open my $stat, '<', '/proc/stat';
my @total = split ' ', <$stat>;
close $stat;
shift @total;
return sum @total;
}
my ($pid) = @ARGV;
my $prev_cpu = cpuload;
my $prev_pid = pidload $pid;
while (1) {
sleep 0.1;
my $now_pid = pidload $pid;
my $now_cpu = cpuload;
printf "%.0f\n", 100*(($now_pid - $prev_pid) / ($now_cpu - $prev_cpu));
$prev_cpu = $now_cpu;
$prev_pid = $now_pid;
}
关于perl - 是否可以在空闲计算机中使用Perl脚本来控制cpu的使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11534787/