是否可以在空闲计算机中使用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/

10-16 11:44