私はそれほど重要ではないが、CPU能力を非常に消費する通常のプロセスを持っています。そして、私は本当に重要な別のプロセスを持っていますが、ほとんどの時間はアイドル状態ですが、仕事を得たときには本当に高い計算能力が必要です
Nice -20 ./low_priority_process
とNice --20 ./high_priority_process
を使用して実行してみましたが、優先度の高いプロセスが必要な場合、優先度の低いプロセスが大量のCPUを消費します。 CPUパワーを使用するプロセス
cgroups を見てください。CPUの予約(およびその他)-必要なものが正確に提供されるはずです。 cgroupsを使用するアプリケーションの制御優先度 を読むことをお勧めします。
とはいえ、CPUの95%が割り当てられている重要で頻繁にアイドル状態のプロセスを、5%が割り当てられている別のアプリケーションにグループ化します。電力を必要とするプロセスは、それらの時間にせいぜい5%しか得られません。計算の急増がなくなると、すべてのCPUパフォーマンスが残りのプロセスでスローされます。利点として、sshd
のようなプロセス用の特別なcgroup(パフォーマンス要件が最小)を作成すると、何でもできるすべてのCPUを取得しようとしていてもログインできるようになります。 sshd
用に予約してください。
プロセスの優先順位(Nice値)が低い場合、優先順位の高いプロセスを中断することはありません。優先度の高いプロセスが実行されているときに、優先度の低いプロセスが依然として大量のCPUを消費しているのは、優先度の高いプロセスがそうではないためですそれ 忙しい。おそらくIOを待っています。 chrt -p -i 0 $PID
を使用して、Nice 19 -p $PID
よりも低い優先度でプロセスを実行します(ここではLinuxについて話していると想定しています)。
chrt -p -i 0 $PID
は、プロセスを「真の」アイドルスケジューラにします。
この例を試して、プロセスを低プロセスとして実行します。
あなたが仕事ならニースtar xvf asets.Zip
使用する
その後、発行
解凍プロセスを監視するトップ
cpulimitで特定のことを試してください
wget -O cpulimit.Zip https://github.com/opsengine/cpulimit/archive/master.Zip
unzip cpulimit.Zip
cd cpulimit-master
make
Sudo cp src/cpulimit /usr/bin