-
sha1sum /dev/zero & の複数のインスタンスを開始し、次に nice レベルが 10 の追加のインスタンスを 1 つ開始します。
ビジー状態のシステムをシミュレートするために、いくつかの sha1sum プロセスを開始します。次に、意図的に低い優先度 (高い nice 値) で 1 つを開始し、その影響を観察します。
まず、3 つの通常のインスタンスを開始します (必要に応じて CPU コア数に基づいて調整しますが、競合を作成するために仮想プロセッサと同じ数以上にする必要があります)。
for i in {1..3}; do sha1sum /dev/zero & done
次に、nice レベルが 10 の 4 番目のインスタンスを開始します。このプロセスは、他のプロセスよりも低い優先度を持ちます。
nice -n 10 sha1sum /dev/zero &
次のような出力が表示され、バックグラウンドプロセスの PID が示されます。
[1] 5443
[2] 5444
[3] 5445
[4] 5446
(注:出力の PID 値は異なります。)
-
ps および pgrep コマンドを使用して、各プロセスの PID、CPU 使用率 (%)、nice 値、および実行可能ファイル名を表示します。
%CPU および NI 列を観察します。nice 値が 10 のインスタンスは、他のインスタンスよりも低い CPU 使用率 (%) を表示する必要があります。これは、スケジューラがそのインスタンスに CPU 時間を少なく与えるためです。
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
NI 値が 10 のプロセスを探します。その %CPU は、他のプロセスよりも著しく低いはずです。
PID %CPU NI COMMAND
5443 56.8 0 sha1sum
5444 58.0 0 sha1sum
5445 56.5 0 sha1sum
5446 6.7 10 sha1sum
(注:正確な %CPU 値は、システムの負荷とコア数によって異なりますが、nice 10 のプロセスはより低い割合を持つはずです。)
-
sudo renice コマンドを使用して、通常のプロセスの 1 つの nice レベルを 5 に変更します。
renice コマンドを使用すると、すでに実行中のプロセスの nice 値を変更できます。これを実証するために、通常のプロセスの 1 つ (nice 値 0) を nice 値 5 に変更します。
まず、前の ps コマンドの出力から、nice 値が 0 の sha1sum プロセスの 1 つの PID を特定します。上記の例の最初のもの (PID 5443) を使用しましょう。
sudo renice -n 5 <PID_of_regular_process>
<PID_of_regular_process> を、特定した実際の PID に置き換えます。例:
sudo renice -n 5 5443
優先度の変更を確認する出力が表示されるはずです。
5443 (process ID) old priority 0, new priority 5
-
ps および pgrep コマンドを繰り返し実行して、CPU 使用率 (%) と nice レベルを表示します。
nice 値を変更したプロセスの CPU 使用率の変化を観察します。nice 値 5 のプロセスは、nice 値 0 のプロセスと比較して CPU 使用率がわずかに低くなっているはずですが、nice 値 10 のプロセスよりも高くなっています。
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
変更されたプロセスの NI 値が現在 5 であり、その CPU 使用率が新しい優先度レベルを反映していることがわかります。
PID %CPU NI COMMAND
5443 55.4 5 sha1sum
5444 67.2 0 sha1sum
5445 67.1 0 sha1sum
5446 7.5 10 sha1sum
(注:正確な %CPU 値は異なりますが、nice 値が低い (優先度が高い) プロセスがより多くの CPU 時間を取得することを確認する必要があります。)