[英]C++ Linux get CPU nominal frequency
我需要在 C++ 代碼中獲得 Linux 下的 CPU 標稱頻率。 據我所知, /proc/cpuinfo
包含當前頻率。
是/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
作為以kHz為單位的標稱頻率總是可靠的?
或者有沒有更好的方法從 C++ 獲取這些信息?
C++ 沒有任何方法來訪問這個值,它甚至不假設有這樣一個值。 即使在您的情況下,您也只是查看其中一個 CPU,而不是所有 CPU。 這意味着你將不得不做一些依賴於操作系統的事情,你可以用 C++ 構建。
無論如何,您知道提供該號碼的任何工具嗎? 獲取它的源代碼,看看它是如何做到的! 除此之外,我會查看 /proc/cpuinfo 並在那里構建“cpu MHz”值的平均值。 /proc
文件系統基本上是/sys
文件系統的前身,但信息應該是相同的。
沒有一種通用的方法來讀取標稱頻率。 使用acpi-cpufreq
縮放驅動程序時,您可以從/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
(nominal + 1 MHz) 讀取 Intel 處理器的標稱頻率,但是intel_pstate
將此文件的內容設置為最大渦輪頻率. 盡管如此,還是有替代的解決方案。 Intel CPU 將標稱頻率寫為 CPU 型號名稱的一部分(當輸入 EAX = 0x01 或從/proc/cpuinfo
讀取時使用 CPUID 指令讀取),或者您可以讀取MSR_PLATFORM_INFO (0xCE)
寄存器。
編輯:AMD 處理器在/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_max_freq
提供標稱頻率,沒有額外的 1 MHz
EDIT2:某些處理器可能有/sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_nominal_freq
文件,例如 POWER9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.