GNU/Linux >> Linux の 問題 >  >> Linux

Linux の Nice および Renice の例を使用してプロセスの優先度を変更する方法

Unix で実行中のすべてのプロセスには、優先度が割り当てられています。

nice および renice ユーティリティを使用して、プロセスの優先度を変更できます。 Nice コマンドは、ユーザー定義のスケジューリング優先順位でプロセスを起動します。 Renice コマンドは、実行中のプロセスのスケジューリング優先度を変更します。

Linux カーネルはプロセスをスケジュールし、それぞれに応じて CPU 時間を割り当てます。ただし、CPU 時間を増やすためにプロセスの 1 つに高い優先度が必要な場合は、このチュートリアルで説明されているように、nice コマンドと renice コマンドを使用できます。

プロセスのスケジューリング優先度の範囲は -20 から 19 です。これを適切な値と呼んでください。

-20 のナイス値は最高の優先度を表し、19 のナイス値はプロセスの最低の優先度を表します。

デフォルトでは、プロセスが開始されると、デフォルトの優先度 0 が取得されます。

1.プロセスの優れた価値を表示する

プロセスの現在の優先度は、ps コマンドを使用して表示できます。

ps コマンド出力の「NI」列は、プロセスの現在のナイス値 (優先度) を示します。

nice および renice コマンドのデモンストレーションに使用される te​​st.pl というテスト プログラムを起動します。このテスト プログラムは特定のタスクを実行し、しばらくの間実行されます。

$ perl test.pl

以下に示すように ps コマンドを実行すると、この test.pl プログラムのデフォルトの nice 値が 0 であることがわかります (次の出力の NI 列を見てください)。

$ ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 R bala 6884  6424 99  80   0 -  1556 -      13:45 pts/3    00:05:54 perl test.pl

2.優先度の低いプログラムを開始する

デフォルトの優先度でプログラムを起動する代わりに、nice コマンドを使用して特定の優先度でプロセスを起動できます。

この例では、test.pl はナイス値 10 で起動されます。

$ nice -10 perl test.pl

注: 上記のコマンドの -10 は、プロセスの優先度を 10 に設定することを思い出してください。nice コマンドの – は、コマンドにオプションを渡すために使用するハイフンを表します。

したがって、nice 値の 5 を渡すには、-5 とします。 nice 値 6 を渡すには、-6 とします。

以下に示すように、このプログラムは現在、nice 値 10 で起動されています。これは、デフォルトで起動される他のプログラムと比較して、低い優先度で実行されることを意味します。

$ ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 R bala 7044  6424 99  90  10 -  1556 -      13:58 pts/3    00:00:03 perl test.pl

3.優先度の高いプログラムを開始

優先度の高いプログラムを起動することもできます。負のナイス値は、プロセスの優先度を上げます。そのため、以下に示すように、nice コマンドの前に — (2 つのハイフン) を付けて値を指定する必要があります。

# nice --10 perl test.pl

したがって、-5 のナイス値を渡すには、5 の前に 2 つのハイフンを追加します。-6 のナイス値を渡すには、6 の前に 2 つのハイフンを追加します。

以下に示すように、このプログラムは -10 というナイス値で起動されます。これは、デフォルトで起動される他のプログラムと比較して、より高い優先度で実行されることを意味します。

# ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 R root 3534  3234 99  70 -10 -  1557 ?      19:06 pts/1    00:00:56 perl test.pl

注:通常のユーザーは、優先度の高いプログラムを起動することはできません。優先度の高いプログラムを起動できるのは root ユーザーのみです。

通常のユーザーとして、優先度を上げると、nice コマンドから次のエラー メッセージが表示されます。

$ nice --10 perl test.pl
nice: cannot set niceness: Permission denied

上記のエラー メッセージを出力した後も、プログラムはデフォルトの優先度 (つまり :0) で引き続き実行されることに注意してください。

4.オプション -n で優先度を変更

プロセスの優先度は、-n オプションを使用して調整できます。

優先度を上げる:

# nice -n -5 perl test.pl

優先度を下げる:

# nice -n 5 perl test.pl

5.実行中のプロセスの優先度を変更する

既に実行中のプロセスの優先度は、renice コマンドを使用して変更できます。

この例では、プログラム test.pl は既にナイス値 -10 で実行されています。

# ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 R root 3534  3234 99  70 -10 -  1557 ?      19:06 pts/1    00:00:56 perl test.pl

以下に示すように、上記のプログラムのナイス値を -19 に変更できます。上記プログラムのプロセス ID を -p オプションに渡します。

# renice -n -19 -p 3534

nice 値が -19 に変更されたことを確認してください。

# ps -fl -C "perl test.pl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 R root 3534  3234 99  70 -19 -  1557 ?      19:06 pts/1    00:00:56 perl test.pl

6.グループに属するすべてのプロセスの優先度を変更

-g オプションを使用すると、グループに属するすべてのプロセスの優先度を変更できます。次のコマンドは、geekstuff に属するすべてのプロセスの nice 値を 5 に変更します。

# renice -n 5 -g geekstuff

7.ユーザーが所有するすべてのプロセスの優先度を変更

Renice では、以下に示すように、特定のユーザーが所有するすべてのプロセスの優先度を変更できます。

# renice -n 5 -u bala

上記のコマンドは、ユーザー bala が所有するすべてのプロセスの優先度を変更します。ユーザー bala に属するすべてのプロセスにナイス値 5 を割り当てます。

# ps -fl -C "perl"
F S UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
0 R bala 2720  2607 99  85   5 -  1556 -      14:34 pts/2    00:05:07 perl test.pl
0 R bala 2795  2661 99  85   5 -  1556 -      14:39 pts/3    00:00:09 perl 2.pl

Linux
  1. Linux nice and reniceコマンドチュートリアル(7例)

  2. Linuxでゾンビプロセスを見つけて殺す方法

  3. MTR コマンドの例を使用して Linux で Ping と Traceroute を組み合わせる方法

  1. Startpar コマンドの例を使用して Linux の起動プロセスを高速化する方法

  2. UNIX / Linux :プロセスのナイスネス (優先度) を変更する方法

  3. Linux での renice コマンドの例

  1. Linuxコマンド:プロセスの優先順位を操作する方法

  2. niceおよびreniceコマンドを使用してLinuxプロセスの優先度を設定する方法

  3. Linuxで1つのプロセスのすべてのスレッド(および子)を解放する方法は?