web-dev-qa-db-ja.com

cat / proc / cpuinfoのプロセッサ周波数部分を理解する

Ubuntu Linux11.10システムでプロセッサの仕様を調べていました。

コマンド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、2番目のラインで933Mhzです。どちらが正しいですか? 2.13 GHzはコアの周波数の合計を指しますか?

最後に、これらの周波数のどれが私のシステムクロックによって取られた1秒あたりのサイクル/ 1秒あたりのクロックティックについて教えてくれますか?

EDIT:Bruno PereiraのNice Answerの小さな拡張で、プロセッサをさまざまな周波数でオンザフライで動作させることも、動的周波数スケーリングまたはCPUであることがわかりました。スロットル。興味があるかもしれない2つのウェブページはここにあります:

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

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

4
smilingbuddha

Linuxは、ガバナーを使用して、CPUが動作するステッピングを設定します(CPUがステッピング設定をサポートしている場合)。

通常、これらはデフォルトでOn Demmandに設定されています。これは、集中的に使用されていないときにCPUの周波数が低くなることを意味します。

cpufreq-infoは、CPUから利用可能なステップ、CPUのコアごとに現在使用されているカーネルガバナー、およびCPU機能に関する詳細情報を確認するためのユーティリティです。
次のようなものを返します

cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], 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
Bruno Pereira

933 MHzはそのCPUコアの現在の周波数です(システムがアイドル状態であるため、おそらく低速で実行されています)が、2.13GHZが最大です。周波数。プログラムの出力も参照してくださいcpufreq-info

5
Jaap Eldering

CPU周波数は、ターボ状態とc状態ではさらに複雑になります。

プロセッサがアイドル状態でc状態の場合、通常、available_scaling_frequenciesに見られるように、そのプロセッサの最小周波数が報告されます。

したがって、パフォーマンスガバナーを選択した場合でも、最小と最大の2つの速度が表示されますが、CPUはc状態であるため何も実行しないため、最小周波数は実際には無意味です。

これらの値は、実際にはレジスタのセット、msr 0x199、0x198、0x1a0、および0x1adに直接関連しており、興味がある場合はrdmsrユーティリティを介して直接読み取ることができます。

これをさらに混乱させるのは、ガバナーが利用可能な最大周波数を要求し、利用可能な十分なサーマルルームがあり、コアがオーバークロックされる可能性があり、msr0x199でもcpuinfoでも報告されないことです。 CPUが保証された速度を超えて動作しているかどうかを判断するには、aperf/mperfを使用するユーティリティが必要です。

モデル情報の値は、この保証された速度です。つまり、適切な冷却条件下では、チップは常にその周波数で動作できるはずです。この例では、2.13GHzです。

レジスタ0x1adは、使用可能なターボ周波数を示します。 8コアEEチップでは、レジスタは次のようになります。1b1b1c1c1d1d1e1e

各バイトは、周波数を取得するためにその時点でアクティブにできるCPU +1の数を示します。

この場合、7または8コアがアクティブな場合、最大乗数は0x1bまたは27です。別のMSRがこれを指定していますが、乗数は通常100MHzです。したがって、このEEパーツは2.7GHzで動作し、保証周波数は2.2GHzです。より多くのCPUがc状態/アイドル状態になると、ターボ比は最大30まで上昇する可能性があり、1つまたは2つのコアのみがアクティブな場合は3.0GHzになります。

これらのCPUはスーパースカラーであり、順不同の操作を実行できるため、CISCのマクロ命令は複数のサイクルを要する可能性があるため、クロックレートはサイクルの意味のある指標ではありません。

Bogomipsは、基本的にサイクル内のno-opsの数に基づく任意の指標ですが、CPU周波数に基づいてパフォーマンスを単純に実行するには、変数が多すぎます。

さらに興味深いのは、実際の指導パフォーマンスそのものです。 perfツールを使用してこれを監視し、ワークロード全体でより意味のある方法で命令やその他の操作をカウントできます。

一般に、熱的に安全であり、CPUにバインドされているが、CPUをバーストし、電力を気にしないことがわかっている場合は、パフォーマンスガバナーを使用して、c-stateを有効のままにしておくことができます。 Cステートの電力節約は、pステートによるどの節約よりも大幅に高くなります。多くのワークロードは、とにかくc状態で待機するためにレースをすることからも恩恵を受けます。

2
Jon Brauer