バッテリーを節約するために、デバイスでCPUをあまり使用したくありません。よく使うプログラムがあります。nice
CPUが%100のときにスケジュールを変更するだけで、CPUがそれほど高くなることを望まないので役に立ちません。
答え1
CPUがバッテリーを消費しにくくするには、CPUを遅くする必要があります。プログラムを実行するのに必要なCPU命令の総量はプログラムの実行速度に依存しないため、プログラムが使用するCPU時間の割合を制限すると、プログラムの使用量が増えます。もっとCPU、それ以下でもありません。 CPUがプログラムを実行する以外に何もしない場合でも、まだ電力を消費します。最良の場合は、CPUが何もしない一時停止時間がスリープ状態に入るのに十分長くなりますが、それでも追加の電源状態遷移にかかる費用がかかります。
プロセスで使用されるCPU時間の割合を制限すると、カーネルがより遅いCPUクロック速度に切り替わる間接的な影響がある可能性があります。このようなことが起こる選択に依存します。CPU周波数レギュレータそして関連する特定の数字。これはデフォルトのガバナー(オンデマンド)で発生しますが、速度制御は困難です。
電力を節約したい場合の最良の戦略は、プログラムに使用可能なCPU電力の100%を使用させることです(できるだけ早く完了するように)。ただし、CPUはできるだけ遅く実行するように切り替えます(エネルギー消費のため)。 ) 各命令のコストは CPU 速度とともに増加します)。
/sys/devices/system/cpu/cpu0/cpufreq
対応するパラメータまたはさまざまなユーザーインターフェイスを使用してCPU周波数を設定できます。これCPUFreqユーティリティ2つのコマンドラインツールがあります。cpufreq-info
、cpufreq-set
。一つあるさらに進化したツールバーと言うCPU性能これで、カーネルのソースコードに含まれています。 Gnomeを使用している場合は、Cpufreqアプレットを使用できます。他のGUIもあります。
バッテリ電源を最大限に節約するには、CPUを最低周波数で実行してください。利用可能な周波数を表示するには、実行してくださいcpufreq-info
。 Runはcpufreq-set -c 0 -g powersave
常にCPU 0を最も低い頻度で実行します(-c
他のCPUでは値の増加が繰り返されます)。
答え2
たとえば、特定のPIDにcpulimitを使用できます。
sudo cpulimit -b -l 80 -p 1183
レニス:
renice +19 1183
1183
答え3
エレガントな解決策があるかどうかはわかりませんが、信号を使用してプロセスを停止して再開できます。
PID=1234
mode=running
run_time=0.1
stop_time=0.1
while true; do
if [ running = "$mode" ]; then
kill -STOP "$PID"
mode=stopped
sleep "$run_time"
else
kill -CONT "$PID"
mode=running
sleep "$stop_time"
fi
done