2017-03-23 105 views
0

我正試圖監視單個內核的CPU工作頻率。我不確定用什麼正確的方法來監控CPU頻率,從而形成內核級別和硬件級別,而且開銷較小。如何可靠地監控CPU頻率(在Linux中)?

我將非常感謝,如果有人可以回答我有幾個問題。

假設我正在運行一個應用程序,將它固定在覈心上。我想監視它在執行階段(開始到結束)所要求的頻率,並捕獲它。我想要它從硬件級別(從MSR的可能)要求的準確頻率。

不知道什麼是捕捉這個的準確方法?有沒有辦法?是否有任何工具或命令可以直接從MSR讀取頻率值?

我已經試過幾個選項,不知道這是否反映了正確的頻率:

注:我想品嚐核心的頻率每10毫秒,20毫秒,30毫秒,......等等。

從內核級別:

  1. 我正在讀一sysfs文件:

貓/ SYS /設備/系統/ CPU/CPU2/CPU頻率/ cpuinfo_cur_freq

不知道是否上面每10ms,20ms等給出正確的頻率值。每隔10ms讀取一次該文件的時間間隔是否有相關的開銷?

  1. 然後我使用了turbostat命令,但是這並沒有告訴我在指定的時間間隔內特定內核的正確頻率是多少,而是告訴我繁忙的百分比等,但我期待爲採樣時間間隔精確的頻率,我指定

問題:

  1. 請告訴我監視從系統的角度CPU頻率非常低的開銷最好的和可靠的方法是什麼?

  2. 什麼是我可以用來監視CPU頻率的最小採樣間隔時間(我知道這取決於CPU調速器)。我目前正在假設並且對Ondemand電源調控器感興趣,因爲我正試圖監控CPU頻率。

如果有人能指導我,這將是一個很大的幫助。

回答

0

我假設你想跟蹤應用程序事件的基礎CPU頻率之間的所有變化,而不是總結其中的sysfs的規定:

CPU頻率有跟蹤點跟蹤 - trace_cpu_frequency(), ,你可以添加額外的自定義跟蹤點來跟蹤您的應用程序的事件 - 例如將消息寫入trace/trace_marker。 您可以在執行後看到記錄的所有事件,包括cpufreq TP和您的跟蹤標記。