UPSが「バッテリーオン」イベントをトリガーしたときに、電力を節約するためにすべてのコアをオフにします。 PCには2つのチップに8つのコアがあり、UPSバッテリーは電流のピークが大きいため、3か月ごとに交換する必要があります。私の所有コストを軽減するために、UPSがそのようなイベントを発生させたときに次の指示が実行されます。
for c in /sys/devices/system/cpu/cpu*/online; do
echo 0 >$c
done
コア1から7は正常にオフラインに設定され、コア0は期待どおりに稼働したままです。次に、lscpu
とatop
は、CPU 0のみがオンラインのままであることを確認し、さらなる指標として、CPU温度が90°Cから60°Cに低下することを確認します。
グリッド電力が戻ると、逆のコマンドが実行されます。
for c in /sys/devices/system/cpu/cpu*/online; do
echo 1 >$c
done
しかし、コアはオンラインになりません。この時点で、 cat /sys/devices/system/cpu/cpu*/online
プリント1
0から7までのすべてのCPUについて、lscpu
はすべてのCPUがオンラインに戻ったことを報告しますが、すべてのスレッドは明らかにコア0で排他的に実行され続け、atop
はまだ1つのコアのみをリストします。また、システム負荷は、通常の800%ではなく、約100%に制限されたままです。また、CPU温度は60°Cで安定しています。
異常なことに、top
はプロセスごとのCPU使用率をパーセンテージで示していますが、これらの個々のパーセンテージの合計は約100%ですが、top
によって報告される60秒の負荷平均は安定しています8。
属性:
更新:
カーネルを4.1.1から4.5.4に更新しました。テスト後、同じ欠陥がまだ存在しています。
これは、cpuset
cgroupに関するLXCの既知のバグが原因です。ここでは、いくつかの回避策について説明します: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=824519 。