【问题标题】:Capture turbospeed while running a program在运行程序时捕获涡轮速度
【发布时间】:2014-07-30 16:54:20
【问题描述】:

我想创建一个自动化程序来在程序运行时捕获 CPU 的涡轮速度。

我的自动化脚本应该使用 perl 语言。

我确实尝试过使用:

system("script mytest.txt");
system("./turbostat");

当我执行这个程序时,只有脚本行有效,turbostat 无效。

有人可以建议我通过什么方法来捕捉涡轮速度吗?

【问题讨论】:

  • 如果你在一个普通的 Linux 系统上,你可能会读到/proc/cpuinfo。对于每个内核,您可以阅读“型号名称”,其中通常包括处理器的设计速度,以及“cpu MHz”字段,该字段将说明内核的运行速度。
  • 其实我想知道程序执行时的涡轮速度。我有一个名为 turbostat 的程序,它会在我运行基准测试时显示 CPU 的速度。所以我想写一个代码,当我运行我的基准测试时会自动记录涡轮速度:D
  • 您是在询问 Intel Turbo Boost,目前有多少个 100MHz 或 133MHz 的倍数有效?如果不是,也许您可​​以解释一下“涡轮速度”一词的含义(这似乎并不常见)。
  • 嗨 DavidO,turbospeed 是我运行程序时 CPU 的速度,以 MHz 为单位。例如,我想知道当我执行一个名为 ABC.exe 的程序时 CPU 的速度是多少。有一个叫做 turbostat 的软件,它会在我们执行它时向我们显示速度。我的问题是我需要创建一个 perl 脚本来运行并在运行 ABC.exe 程序的同时节省 CPU 速度:)
  • 大多数现代 CPU 都有多个内核,它们可能以不同的时钟速度运行。此外,您不(很容易)知道给定进程正在使用哪些核心。但我猜你还没有检查/proc/cpuinfo 中的“cpu MHz”字段,因为如果你已经这样做了,你会看到它们报告了每个内核的当前速度。这个速度从一个瞬间变化到下一个瞬间,因此您可能必须进行监控,然后在继续监控/报告的同时分叉您的工作人员。

标签: linux perl automation


【解决方案1】:

看看Sys::Info::Device::CPU 模块。

概要

   use Sys::Info;
   use Sys::Info::Constants qw( :device_cpu );
   my $info = Sys::Info->new;
   my $cpu  = $info->device( CPU => %options );

   printf "CPU: %s\n", scalar($cpu->identify)  || 'N/A';
   printf "CPU speed is %s MHz\n", $cpu->speed || 'N/A';
   printf "There are %d CPUs\n"  , $cpu->count || 1;
   printf "CPU load: %s\n"       , $cpu->load  || 0;

【讨论】:

  • 感谢您的回复。实际上,我想知道程序执行时的涡轮速度。我有一个名为 turbostat 的程序,它会在我运行基准测试时显示 CPU 的速度。所以我想写一个代码,当我运行我的基准测试时会自动记录涡轮速度:D
猜你喜欢
  • 2019-02-03
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多