簡體   English   中英

C++ Linux獲取CPU標稱頻率

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM