LPIC-1 - 101試験 - 103:GNUとUnixのコマンド - 103.6 プロセスの実行優先度を変更する

Last Update : September 18 2014 21:34:22

     

a. プロセスの実行優先度変更

LinuxはマルチタスクOSであり、一度に複数のプログラムを実行することができます。しかし、実際は、同時に動いているように見えているに過ぎません。それぞれのプログラムに割りあてるCPU時間を微小時間で切り替えることにより、同時に動いているかのように見せているのです。Linuxでは、すべてのプログラムに同じCPU時間を割りあてるのではなく、優先度(プライオリティ)というものを設けて、優先度の高いプログラムにより多くのCPU時間を割りあてます。

通常のプロセス(非リアルタイムプロセス)には、2種類の優先度があります。 値が「小さい方」が優先度が高くなります。

  • 静的優先度
  • 動的優先度
●静的優先度

0~139。 (0~99はリアルタイムプロセスに使用、通常プロセスは100~139。)
プロセスのnice値により固定的に決まります。
nice値は-20~19でこれを100~139にずらした値が静的優先度。

●動的優先度

100~139。 静的優先度をベースにCPU使用量に基づいて算出されます。
スケジューラは動的優先度を使用します。
topコマンドのPRIフィールドの値 (カーネル内で使用している値100~139が0~39にずらされて表示)


優先的にプログラムを動作させるには、
 ・静的優先度/bin/nice値を-20(最優先)。
 ・動的優先度(priority)を高くする。普段おとなしく(run_time値を低く)しとく。

nice値:
-20~19の範囲。デフォルト10
変更できるのはrootのみ。
一般ユーザは自プロセスのみの優先度を下げることが可能です。

1.niceコマンド

スケジュール優先度を変更してプログラムを実行するには、 nice コマンドを使います。
引数なしで実行すると nice は現ユーザのスケジューリング優先度を表示します。引数に実行するコマンドを指定した場合は、スケジューリング優先度を調整してから与えられたコマンドを実行します。

nice値は「-20~19」までの範囲で設定可能で、値が小さいほど優先的に実行されます。優先度パラメータが無い場合には優先度 10 で実行されます。負の値の優先度を与えることが可能なのは root ユーザのみです。

● nice コマンド構文
  nice [オプション] [コマンド [引数]]

● nice コマンドオプション
 -n 補整値, -補整値,
-adjustment=補整値
補整値で指定された値をnice値に加えます。このオプションを指定しない場合、nice値に10加えられます。スーパーユーザ以外の場合は負の値を指定することは出来ません。
 --help使用方法を表示します。
 --versionバージョン情報を表示します。

$ free -s 1 > Sample.txt & [2] 3128 $ ps -l -p 3128
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 501 3128 2914 0 80 0 - 501 - pts/0 00:00:00 free
$ nice free -s 1 > Sample.txt & [3] 3131 $ ps -l -p 3131
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 501 3131 2914 0 90 10 - 501 - pts/0 00:00:00 free

一般ユーザーでnice値に負数を指定するとエラーになり、ナイス値は変更されません。コマンドは実行されます。


2.reniceコマンド

既に実行しているプロセスの優先順位を変更するには、 renice コマンドを使います。
renice は動作中のプロセスのスケジューリング優先順位を変更します。複数のプロセスを同時に変更することもできます。優先度(nice値)は「-20~19」までの範囲で設定可能で、値が小さいほど優先的に実行されます。設定されている実行優先度(nice値)を低くする(=優先順位を上げる)ことができるのは root ユーザのみです。設定されている実行優先度(nice値)を高くする(=優先順位を下げる)ことができるのはそのプロセスの所有者およびそれ以上の権限を持つユーザです。

オプションは、プロセス ID、プロセスグループ ID、ユーザ名のいずれかが指定可能です。プロセスグループを指定するとそのグループに属する全てのプロセスのスケジューリング優先順位が変更されます。ユーザ名を指定するとそのユーザが所有している全てのプロセスのスケジューリング優先順位が変更されます。プロセス ID を指定するとそのプロセスのスケジューリング優先順位が変更されます。

● renice コマンド構文
  renice 優先順位 [オプション]

● renice コマンドオプション
 -gプロセスIDを指定します。各プロセスグループ内の全プロセスのシステム優先度が変更されます。適切な特権を持っているユーザのみが使用できます。
 -uユーザ名を指定します。
 -pプロセスIDを指定します。

$ free -s 1 > Sample.txt & [1] 3169 $ ps -l -p 3169
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 501 3128 2914 0 80 0 - 501 - pts/0 00:00:00 free
$ renice 10 -p 3169 3169: 古い優先度は 0、新たな優先度は 10 です $ ps -l -p 3169
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 501 3169 2914 0 90 10 - 501 - pts/0 00:00:00 free

z. 出題範囲概要

●説明 プロセスの実行優先度を管理する
●主要な知識範囲
作成されるジョブのデフォルトの優先度を知っている
デフォルトよりも高い、または低い優先度でプログラムを実行する
実行中のプロセスの優先度を変更する
●重要なファイル、用語、ユーティリティ
nice, ps, renice, top


  [ 例題 ] 
  1. 101:103.6 問01  nice値
  2. 101:103.6 問02  プロセスの実行優先度
  3. 101:103.6 問03  優先度の変更
  4. 101:103.6 問04  優先度


     

www.it-shikaku.jp