首页 文章

如何可靠地监控CPU频率(在linux中)?

提问于
浏览
0

我想要监控各个内核的CPU工作频率 . 我不确定监控CPU频率的正确方法是什么,以更低的开销可靠地形成内核级别和硬件级别 .

如果有人能回答我的几个问题,我将非常感激 .

假设我通过将应用程序固定到核心来运行应用程序 . 我想监视它在执行阶段(开始到结束)所需的频率并捕获它 . 我想要从硬件级别(从MSR可能)获得所需的准确频率 .

不确定捕获这个的准确方法是什么?有办法吗?是否有任何工具或命令可以直接从MSR中读取频率值?

我尝试了几种选择,不确定这是否反映了正确的频率:

注意:我试图每10ms,20ms,30ms,.....等等对核心频率进行采样 .

从内核级别:

  • 我正在读一个sysfs文件:

cat / sys / devices / system / cpu / cpu2 / cpufreq / cpuinfo_cur_freq

不确定上面是否每10ms,20ms等给出正确的频率值 . 是否每隔10ms时间间隔读取此文件会产生任何开销?

  • 然后我使用的是turbostat命令,但这并没有告诉我在指定的时间间隔内特定核心的正确频率是多少,而是告诉我繁忙的%等,但我正在寻找采样时间间隔的准确频率我指定的

问题:

  • 从系统的角度来看,以最低开销监控CPU频率的最佳可靠方法是什么?

  • 可以用来监视CPU频率的最小采样间隔时间(我知道这取决于CPU调控器) . 我目前正在假设并感兴趣Ondemand power governor正在设置核心,我试图监控CPU频率 .

如果有人可以指导我,那将是一个很大的帮助 .

1 回答

  • 0

    我假设你想要在应用程序事件的基础上跟踪cpu频率之间的所有变化,而不是那些sysfs提供的摘要:

    cpufreq具有跟踪的跟踪点 - trace_cpu_frequency(),您可以添加其他自定义跟踪点来跟踪应用程序的事件 - 例如将消息写入trace / trace_marker . 您可以在执行后看到记录的所有事件,包括cpufreq TP和您的跟踪标记 .

相关问题