題 了解cat / proc / cpuinfo的處理器頻率部分


我在我的Ubuntu Linux 11.10系統上查看了我的處理器SPECS。

這是命令cat / proc / cpuinfo的輸出結束:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 37
model name  : Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz
stepping    : 2
cpu MHz     : 933.000
cache size  : 3072 KB
physical id : 0
siblings    : 4
core id     : 2
cpu cores   : 2
apicid      : 5
initial apicid  : 5
fdiv_bug    : no
hlt_bug     : no
f00f_bug    : no
coma_bug    : no
fpu     : yes
fpu_exception   : yes
cpuid level : 11
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm arat dts tpr_shadow vnmi flexpriority ept vpid
bogomips    : 4256.47
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

我沒有得到標記的線條:

model name  : Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz
cpu MHz     : 933.000

這裡的處理器頻率在第一行為2.13 GHz,在第二行為933 Mhz。哪一個 是正確的嗎? 2.13 GHz a是指核心頻率的總和嗎?

最後,這些頻率中的哪一個告訴我係統時鐘每秒鐘每秒鐘的周期數?

編輯: 在對Bruno Pereira的一個很好的回答中,我發現在運行中使處理器以不同的頻率運行也是動態頻率調整或CPU限制。 以下是兩個可能感興趣的網頁:

http://en.wikipedia.org/wiki/Dynamic_frequency_scaling

http://en.wikipedia.org/wiki/SpeedStep


4
2017-07-28 17:26


起源


求和頻率毫無意義。頻率就像速度一樣,添加它們會給你帶來無意義的結果。你可以將每小時五十英里的兩輛車相加到每小時100英里嗎? - David Schwartz
注意: 從內核4.13開始, cat /proc/cpuinfo | grep MHz 不再返回當前時鐘速度。據說這是Kernel Bugzilla的故意。看到 bugzilla.kernel.org/show_bug.cgi?id=197009。它也在這裡提到: phoronix.com/... - Marc.2377
... 回复 在 Linux 4.14.rc8。 - Marc.2377


答案:


Linux使用調控器來設置CPU運行的步進(如果CPU支持步進設置)。

通常那些設置為 在譴責 默認情況下,這意味著在不使用密集時,CPU的頻率會降低。

cpufreq-info 是一個實用程序,用於檢查CPU可用的步驟,當前正在使用的內核調控器每個CPU的核心以及有關CPU功能的更多信息。
它返回類似的東西

cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: powernow-k8
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 8.0 us.
  hardware limits: 800 MHz - 3.00 GHz
  available frequency steps: 3.00 GHz, 2.30 GHz, 1.80 GHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 3.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz.
  cpufreq stats: 3.00 GHz:10.45%, 2.30 GHz:0.29%, 1.80 GHz:1.72%, 800 MHz:87.55%  (28605)

有關如何從命令行檢查和設置CPU步進的更多信息,我已經創建了另一個問題的答案,該問題解釋瞭如何執行此操作 here, 看一看。

您的CPU最大頻率為2.13Ghz,但除非您的內核調控器設置為 性能 您的系統將在大部分空閒時間內降低頻率。

933Mhz是CPU可用的最低步進,可能意味著您的系統目前沒有承受很大的壓力,或者它正在使用 節電 州長。

您可以測試在系統負載情況下是否獲得相同的結果,如果頻率沒有改變,那麼您使用的是 省電 調速器,這使CPU的頻率始終保持在933Mhz。


7
2017-07-28 18:12



謝謝你的精彩回答。我在30億個整數上運行了一個簡單的排序例程,在運行期間我檢查了cpu頻率。我發現它確實跳到了2.13 GHz。 - smilingbuddha
一個問題:當人們談論超頻他們的處理器進行遊戲時,這意味著他們正試圖將處理器頻率提高到超出最大保證頻率,我的情況是2.13 MHz,對吧? - smilingbuddha
@smilingbuddha正確,通常涉及增加CPU的乘數或系統的FSB使其超出其工廠建議的額定值。產生額外的熱量,需要更好的冷卻。 - Bruno Pereira


933 MHz是該CPU內核的當前頻率(由於系統空閒,它可能以較低的速度運行),而最大值為2.13 GHZ。頻率。另請參見該程序的輸出 cpufreq-info


5
2017-07-28 17:55



該 @ 2.13 GHz 是模型名稱的一部分。這是CPU製造商選擇放入型號名稱的頻率。在許多現代CPU上,實際上並不是最大頻率,而是最大頻率 保證 頻率。 - David Schwartz
@DavidSchwartz對於閱讀此內容的人來說,對上面運行他們的CPU不感興趣 保證 頻率,2.13Ghz 是 該CPU的最大頻率。沒錯。 - Bruno Pereira
@BrunoPereira:對於這個特定的CPU來說也是如此,但由於這些特性,它通常不是這樣 渦輪增壓。 - David Schwartz


渦輪和c狀態的CPU頻率更加複雜。

當處理器空閒且處於c狀態時,它將報告該處理器的最小頻率,通常如available_scaling_frequencies中所示。

因此,即使您選擇性能調控器,您也會看到兩種速度,即最小值和最大值 - 但最小頻率實際上毫無意義,因為CPU沒有做任何事情,因為它處於c狀態。

這些值實際上與一組寄存器直接相關,msr為0x199,0x198,0x1a0和0x1ad,如果您好奇,可以通過rdmsr實用程序直接讀取這些寄存器。

更令人困惑的是,調控器請求可用的最大頻率,並且有足夠的可用空間,核心可以超頻,並且不會報告msr 0x199或cpuinfo。使用aperf / mperf的實用程序是確定CPU是否在保證速度以上運行所必需的。

模型信息值是此保證速度。這意味著在適當的冷卻條件下,芯片應始終能夠以該頻率運行。在這個例子中是2.13GHz。

寄存器0x1ad顯示可用的Turbo頻率。 您的寄存器可能在8核EE芯片上看起來像這樣: 1b1b1c1c1d1d1e1e

每個字節表示當時可以激活以獲得頻率的CPU數量+ 1。

在這種情況下,如果有7個或8個內核處於活動狀態,則最大乘數為0x1b或27.乘數通常為100MHz,但另一個MSR指定此值。因此,該EE部件能夠以2.7GHz運行,而保證頻率為2.2GHz。 隨著越來越多的CPU處於c狀態/空閒狀態,如果只有1或2個核心處於活動狀態,則turbo比率可以上升到最大值30或3.0GHz。

因為這些CPU是超標量的並且可以執行無序操作,並且因為CISC中的宏指令可能需要多個週期,所以時鐘速率不是循環的有意義指示。

Bogomips是一個基本上基於循環中無操作數的任意指示,但是有太多變量可以根據CPU頻率簡單地執行性能。

更有趣的是,實際的指令性能本身。您可以使用perf工具對此進行監控,並在更多工作負載中以更有意義的方式計算指令和其他操作。

一般情況下,如果您是熱安全的,並且您知道自己受CPU限制但突然斷電並且不關心電源,則可以使用性能調控器並啟用c狀態。 C狀態功率節省顯著高於由p狀態引起的任何節省。無論如何,許多工作負載也會受益於在c-state中等待。


2
2018-05-17 22:09