本サイトのサーバー更新(NUC10i3FNH)して1ヶ月ほど経過しましたが、改めて新ハードの消費電力を評価してみました。評価には以前の機種(NUC DN2820FYKH)と同様にリーベックス製 節電エコタイマー ET55Dで行います。運用に当たってはFolding@Home(FAH) による計算資源での貢献を継続しているので、既に消費電力を調整済みですが、一旦、運用形態を変更して評価します。
消費電力の評価結果
評価は、FAHによる計算資源のOn/Off、消費電力On/Offによる違いについて評価しました。結果は、以下のとおりです。通常運用はNo. 3で、FAHによって計算資源を提供しつつ、消費電力を15 W程度に制限している。
No. | 消費電力制限 | Folding@Home | 消費電力 | CPU温度(目視) | 備考 |
1 | Off(無効) | Off(非提供) | 7.6 W | 54 ℃ | |
2 | Off(無効) | On(提供), 2 Cores | 35.0 W | 100 ℃ | |
3 | On(有効), 13 W | On(提供), 2 Cores | 14.5 W | 65 ℃ | 運用利用 |
- 消費電力制限: Intel RAPL: Running Average Power Limit Intel Platform において、CPU等の消費電力を制限する機能
- Folding @ Home 分散コンピューティングによるタンパク質の振る舞いシミュレーション。COVID-19対策分析を含む
No. 1 はデフォルト状態で消費電力は7.6 Wです。RAPLによる消費電力制限をせずに、一般的な Linux に http サービスを構築した LAMP 環境での消費電力である。よぽど人気のあるサイトであれば別であるが、当サイトは通常 CPUにはほとんど負荷のかかっていない状態である。リプレース前のNUC DN2820FYKH の消費電力は、同じ利用形態において5.9 W程度であり、若干消費電力が上がっているが、NUC 10 も十分に低い消費電力が維持されている。FAHなしで、普通に運用するのであれば、これはこれで十分である。
No. 2は RAPL による消費電力制限をせずに、FAHに 2 Coreの論理コアの利用を許可して運用した場合の消費電力で、35.2 Wでした。NUC10i3FNHは物理的には2コアあり、ハイパースレッディング(HT)をオンにすることで論理的に4コアとなる。当サイトではHTオンで運用している。FAHには論理的に2/4 コア、つまり50%のCPU利用を許可している。しかし、FAHように最適化されたプログラムではHT On/Offの差分は小さく、物理的にはほぼ100%のCPU資源が利用されているようだ。消費電力制限を設けないこの利用方法では、CPU温度は100℃に達し、シスログには以下のメッセージが出力され、CPUクロックが落とされていることが分かる。また、運用中もファンが激しく回り、家族が気付くほどのノイズを発している。CPUファン制御のBIOS設定にもよると思うが、このような高負荷で連続した運用は想定されていないと思われる。
## cat /var/log/messages
Feb 14 21:55:01 svr-toy kernel: CPU2: Package temperature above threshold, cpu clock throttled (total events = 1)
Feb 14 21:55:01 svr-toy kernel: CPU0: Package temperature above threshold, cpu clock throttled (total events = 1)
Feb 14 21:55:01 svr-toy kernel: CPU3: Package temperature above threshold, cpu clock throttled (total events = 1)
Feb 14 21:55:01 svr-toy kernel: CPU1: Package temperature above threshold, cpu clock throttled (total events = 1)
本来は4行なのだけど、改行が加えられている。どうすれば解消できるのかな?
No. 3はRAPLによってpsysに対して13 Wの消費電力制限をかけつつ、FAHにはNo. 2と同じ状態で運用したものである。実際の電力は約1割ほど高い、14.5 Wであった。消費電力の差分は計測器の精度的な問題もあるかもしれないが、ACアダプタのAC/DC変換時ロス、NUC内部のDC/DC変換ロスが主要因と思われる。この消費電力制限下の運用でれば、ファンのノイズもほとんどない。また、パフォーマンスにおいてもWebアクセスが遅いなどの影響もないようだ。
消費電力キャッピング設定
No. 3の消費電力キャッピング設定の例について、記載しておく。RAPLによる消費電力キャッピング設定は、”/sys/class/powercap/intel-rapl”のシステムファイルの設定を変更することで、実現できる。なお、設定変更はファイルパーミッションからも分かるように、root権限が必要である。”name”ファイルは電力キャッピングの対象範囲の名前が分かる。NUC10では”psys”とあり”whole system, ie includes package and DRAM”とのことである。今回はシステム全体の消費電力制限をしたいので、このドメインを利用する。
# ls -la
合計 0
drwxr-xr-x. 3 root root 0 2月 14 10:06 .
drwxr-xr-x. 5 root root 0 2月 14 10:06 ..
-r--r--r--. 1 root root 4096 2月 14 21:54 constraint_0_max_power_uw
-r--r--r--. 1 root root 4096 2月 14 21:54 constraint_0_name
-rw-r--r--. 1 root root 4096 2月 14 10:06 constraint_0_power_limit_uw
-rw-r--r--. 1 root root 4096 2月 14 21:54 constraint_0_time_window_us
-r--r--r--. 1 root root 4096 2月 14 21:54 constraint_1_max_power_uw
-r--r--r--. 1 root root 4096 2月 14 21:54 constraint_1_name
-rw-r--r--. 1 root root 4096 2月 14 21:54 constraint_1_power_limit_uw
-rw-r--r--. 1 root root 4096 2月 14 21:54 constraint_1_time_window_us
lrwxrwxrwx. 1 root root 0 2月 14 21:54 device -> ../../intel-rapl
-rw-r--r--. 1 root root 4096 2月 17 00:40 enabled
-r--r--r--. 1 root root 4096 2月 14 21:54 energy_uj
-r--r--r--. 1 root root 4096 2月 14 21:54 max_energy_range_uj
-r--r--r--. 1 root root 4096 2月 14 21:54 name
drwxr-xr-x. 2 root root 0 2月 14 21:54 power
lrwxrwxrwx. 1 root root 0 2月 14 10:06 subsystem -> ../../../../../class/powercap
-rw-r--r--. 1 root root 4096 2月 14 10:06 uevent
”constraint_0_power_limit_u” が消費電力の上限値である。13 Wに設定したいので、今回は「13,000,000」をechoで書き込んだ。単位はマイクロWであり、このような数値となる。更に消費電力制限を有効にする為に、”enabled”に1を書き込むことで、実際の消費電力制限が有効になる。
当サイトでは、/etc/rc.d/rc.localに起動時に必要な設定を行うスクリプトを埋め込んだ。なお、CentOS 8のデフォルトではrc.localには実行権限が付いていないため、所望の動作をしなかった。rc.local に実行属性を付けることで所望の動作となった。
<