Linux でのターボブースト時のクロック数確認方法

Intel の CPU には Intel Turbo Boost Technology が搭載されています。
Turbo Boost を ON にしておくと、計算を行なっている時などに負荷が高いコアのみ動作クロックを定格クロック以上に上昇してくれます。

しかし、Linux で一般的に CPU のクロック数を確認するときに参照されている /proc/cpuinfo では Turbo Boost Technology の効果を確認することができません!
また、CPU をオーバークロックした際も /proc/cpuinfo では確認することができません。

今回の記事では、Linux での CPU の周波数の確認方法を記事にしました。

クロック数の確認方法

linux の CPU クロック数の確認方法として一般的なコマンドは

cat /proc/cpuinfo | grep MHz

だと思います。しかし、/proc/cpuinfo には定格以上の周波数の情報は反映されません!

そこで必要になってくるのが i7z です。Ubuntu を使用している場合は、apt-get で簡単にインストールできます。Fedora でも Fedora24 までなら dnf でインストールできます。

sudo apt-get install i7z

インストール後に

sudo i7z

と入力すれば、リアルタイムでの CPU のクロック数を表示してくれます。

ちなみに、手元の Intel core i7-7700 で実行した時の結果は以下のようでした(アイドル時)。

Cpu speed from cpuinfo 3599.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 3599 MHz
  CPU Multiplier 36x || Bus clock frequency (BCLK) 99.97 MHz

Socket [0] - [physical cores=4, logical cores=8, max online cores ever=4]
  TURBO ENABLED on 4 Cores, Hyper Threading ON
  Max Frequency without considering Turbo 3698.97 MHz (99.97 x [37])
  Max TURBO Multiplier (if Enabled) with 1/2/3/4 Cores is  42x/41x/41x/40x
  Real Current Frequency 798.39 MHz [99.97 x 7.99] (Max of below)
        Core [core-id]  :Actual Freq (Mult.)	  C0%   Halt(C1)%  C3 %   C6 %  Temp	  VCore
        Core 1 [0]:	  798.04 (7.98x)           1    99.9	   0	   0    27	0.6827
        Core 2 [1]:	  795.24 (7.95x)           1     100	   0	   0    28	0.6777
        Core 3 [2]:	  797.92 (7.98x)           1    99.9	   0	   0    26	0.6827
        Core 4 [3]:	  798.39 (7.99x)           1     100	   0	   0    27	0.6821



C0 = Processor running without halting
C1 = Processor running with halts (States >C0 are power saver modes with cores idling)
C3 = Cores running with PLL turned off and core cache turned off
C6, C7 = Everything in C3 + core state saved to last level cache, C7 is deeper than C6
  Above values in table are in percentage over the last 1 sec

ちなみに、cat /proc/cpuinfo | grep MHz の実行結果は以下のようになります。

cpu MHz		: 800.024
cpu MHz		: 800.024
cpu MHz		: 800.024
cpu MHz		: 800.024
cpu MHz		: 800.244
cpu MHz		: 799.804
cpu MHz		: 799.804
cpu MHz		: 800.024

gaussian 計算中のクロック数

管理人の所有している Intel core i7-7960x の定格周波数は 2.8 GHz です。/proc/cpuinfo の情報で確認しているとアイドル時に 1.2 GHz、gaussian での計算時には 2.8 GHz となっています。しかし、i7z で確認するときちんときちんと 4.0 GHz になっていました!

Cpu speed from cpuinfo 2924.00Mhz
cpuinfo might be wrong if cpufreq is enabled. To guess correctly try estimating via tsc
Linux's inbuilt cpu_khz code emulated now
True Frequency (without accounting Turbo) 2924 MHz
  CPU Multiplier 28x || Bus clock frequency (BCLK) 104.43 MHz

Socket [0] - [physical cores=16, logical cores=16, max online cores ever=16]
  TURBO ENABLED on 16 Cores, Hyper Threading OFF
  Max Frequency without considering Turbo 3028.43 MHz (104.43 x [29])
  Max TURBO Multiplier (if Enabled) with 1/2/3/4/5/6 Cores is  44x/44x/44x/44x/44x/44x
  Real Current Frequency 4054.39 MHz [104.43 x 38.82] (Max of below)
        Core [core-id]  :Actual Freq (Mult.)      C0%   Halt(C1)%  C3 %   C6 %  Temp      VCore
        Core 1 [0]:       4053.11 (38.81x)      99.8       0       0       0    40      1.0942
        Core 2 [1]:       4051.55 (38.80x)      99.8       0       0       0    43      1.0806
        Core 3 [2]:       4052.76 (38.81x)      99.9       0       0       0    41      1.0948
        Core 4 [3]:       4054.04 (38.82x)      99.9       0       0       0    44      1.1063
        Core 5 [4]:       4051.57 (38.80x)      99.8       0       0       0    39      1.1113
        Core 6 [5]:       4053.88 (38.82x)      99.8       0       0       0    41      1.1252
        Core 7 [6]:       4051.90 (38.80x)      99.8       0       0       0    44      1.1135
        Core 8 [7]:       4053.74 (38.82x)      99.8       0       0       0    39      1.1270
        Core 9 [8]:       4052.35 (38.81x)      99.9       0       0       0    45      1.0848
        Core 10 [9]:      4054.33 (38.82x)      99.9       0       0       0    45      1.0946
        Core 11 [10]:     4054.36 (38.82x)      99.8       0       0       0    42      1.1064
        Core 12 [11]:     4054.39 (38.82x)      99.9       0       0       0    44      1.1012
        Core 13 [12]:     4053.21 (38.81x)      99.9       0       0       0    41      1.1111
        Core 14 [13]:     4053.12 (38.81x)      99.9       0       0       0    45      1.1064
        Core 15 [14]:     4054.28 (38.82x)      99.9       0       0       0    40      1.1321
        Core 16 [15]:     4054.00 (38.82x)      99.4       0       0       0    42      1.1329

下の表にも書いてある通り、Intel core i9-7960x のた16 コア full load 時のターボブーストの周波数は 3.6 GHz ですが、少しオーバークロックしてあるので、4.0 GHz となっています。

ちなみに、CPU をオーバークロックすると gaussian の計算時間は若干早くなりますが、大きな差はありません。あまりコスパはよくありません。

linux オーバークロックで検索すると GPU のオーバークロックのページばかり出てきたので、まとめてみました。

参考リンク

  1. CPU周波数上限の制御による消費電力低減

関連する記事

汎関数一覧に戻る

計算手法に戻る

コメントを残す(投稿者名のみ必須)