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 のオーバークロックのページばかり出てきたので、まとめてみました。
参考リンク
関連する記事
- gaussian スクラッチファイルの保存先
- gaussian のスクラッチファイル
- 【Enthalpy】B3LYP での計算誤差について【Underestimation】
- DFT は、正確な関数を目指す道から外れつつある
- Gaussian 16 を自作 PC で動かしてみた!
- いやいや、密度汎関数理論は正確な関数を目指す道から外れてはいない!
- GPU を用いた並列計算
- 自作 PC をつくってみた!
- Fedora25 に nVIDIA のドライバーをインストール
- 構造最適化の閾値は、何を意味しているのか?
- 量子化学計算で a.u. を使う理由 〜Why Atomic Unit?〜
