ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Solaris のシステム管理 (上級編) Oracle Solaris 10 8/11 Information Library (日本語) |
3. サービスアクセス機能によるシリアルポートの管理 (手順)
18. ソフトウェアで発生するさまざまな問題の解決 (手順)
次のリストは、システム上で構成可能なプロセススケジューリングクラスを示しています。タイムシェアリングクラスのユーザー優先順位の範囲も示しています。
プロセススケジューリングクラスの種類は次のとおりです。
公平配分 (FSS)
固定優先順位 (FX)
システム (SYS)
対話型 (IA)
リアルタイム (RT)
プロセスのスケジュール優先順位とは、スケジュールポリシーに従ってプロセススケジューラによって割り当てられる優先順位のことです。dispadmin コマンドを使用すると、デフォルトのスケジュールポリシーを表示できます。詳細は、dispadmin(1M) のマニュアルページを参照してください。
priocntl コマンドを使用すると、プロセスを優先順位クラスに割り当てたり、プロセスの優先順位を管理したりできます。priocntl コマンドを使用してプロセスを管理する手順については、「プロセスの優先順位を指定する方法 (priocntl)」を参照してください。
例 12-5 プロセスクラスに関する基本情報を表示する (priocntl)
次の例に priocntl -l コマンドからの出力を示します。
# priocntl -l CONFIGURED CLASSES ================== SYS (System Class) TS (Time Sharing) Configured TS User Priority Range: -60 through 60 FX (Fixed priority) Configured FX User Priority Range: 0 through 60 IA (Interactive) Configured IA User Priority Range: -60 through 60
例 12-6 プロセスのグローバル優先順位を表示する
次の例は、ps -ecl コマンドの出力を示します。PRI カラム内の値は、pageout プロセスが最上位の優先順位を持ち、sh プロセスが最下位の優先順位であることを示しています。
$ ps -ecl F S UID PID PPID CLS PRI ADDR SZ WCHAN TTY TIME COMD 19 T 0 0 0 SYS 96 f00d05a8 0 ? 0:03 sched 8 S 0 1 0 TS 50 ff0f4678 185 ff0f4848 ? 36:51 init 19 S 0 2 0 SYS 98 ff0f4018 0 f00c645c ? 0:01 pageout 19 S 0 3 0 SYS 60 ff0f5998 0 f00d0c68 ? 241:01 fsflush 8 S 0 269 1 TS 58 ff0f5338 303 ff49837e ? 0:07 sac 8 S 0 204 1 TS 43 ff2f6008 50 ff2f606e console 0:02 sh
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# priocntl -e -c class -m user-limit -p pri command-name
コマンドを実行する
プロセスを実行する範囲のクラスを指定する。有効なクラスは TS (タイムシェアリング)、RT (リアルタイム)、IA (対話型)、FSS (公平配分)、および FX (固定優先順位)
-p オプションを使用するときに、優先順位を上下できる最大範囲を指定する
リアルタイムスレッド用に RT クラス内で相対優先順位を指定できるようにする。タイムシェアリングプロセスの場合は、-p オプションを使用すると -60 から +60 までのユーザー指定の優先順位を指定できる
# ps -ecl | grep command-name
例 12-7 プロセスの優先順位を指定する (priocntl)
次の例では、ユーザーが指定できる最上位の優先順位を使用して find コマンドを開始します。
# priocntl -e -c TS -m 60 -p 60 find . -name core -print # ps -ecl | grep find
役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』の「RBAC の構成 (作業マップ)」を参照してください。
# priocntl -s -m user-limit [-p user-priority] -i idtype idlist
ユーザー優先順位の範囲について上限を設定し、現在の優先順位を変更する
-p オプションを使用するときに、優先順位を上下できる最大範囲を指定する
優先順位を指定する
xidtype と xidlist の組み合わせを使用してプロセスを識別する。「xidtype」ではプロセス ID やユーザー ID など、ID のタイプを指定する。「xidlist」ではプロセス ID またはユーザー ID のリストを識別する
# ps -ecl | grep idlist
例 12-8 タイムシェアリングプロセスのスケジューリングパラメータを変更する (priocntl)
次の例では、500 ミリ秒のタイムスライス、クラス RT 内の優先順位 20、グローバル優先順位 120 を指定して、コマンドを実行します。
# priocntl -e -c RT -m 500 -p 20 myprog # ps -ecl | grep myprog
# priocntl -s -c class -i idtype idlist
ユーザー優先順位の範囲について上限を設定し、現在の優先順位を変更する
クラス TS (タイムシェアリング) または RT (リアルタイム) を指定して、プロセスのクラスを変更する
xidtype と xidlist の組み合わせを使用してプロセスを識別する。xidtype ではプロセス ID やユーザー ID など、ID のタイプを指定する。「xidlist」ではプロセス ID またはユーザー ID のリストを識別する
注 - プロセスをリアルタイムプロセスに変更したり、リアルタイムプロセスから変更したりするには、ユーザーはスーパーユーザーであるか、リアルタイムシェル内で作業中でなければなりません。スーパーユーザーとしてユーザープロセスをリアルタイムクラスに変更すると、そのユーザーは priocntl -s を使用して、リアルタイムのスケジューリングパラメータを変更できません。
# ps -ecl | grep idlist
例 12-9 プロセスのクラスを変更する (priocntl)
次の例では、ユーザー 15249 が所有するすべてのプロセスをリアルタイムプロセスに変更します。
# priocntl -s -c RT -i uid 15249 # ps -ecl | grep 15249
nice コマンドは、Solaris の旧バージョンとの下位互換性を保つためにのみサポートされます。priocntl コマンドを使用する方がプロセスを柔軟に管理できます。
プロセスの優先順位は、そのスケジュールクラスポリシーと nice 値によって決定されます。各タイムシェアリングプロセスは、グローバル優先順位を持っています。グローバル優先順位は、ユーザーが指定した優先順位 (nice コマンドまたは priocntl コマンドの影響を受ける) とシステムで計算された優先順位を加算して算出されます。
プロセスの実行優先順位番号は、オペレーティングシステムによって割り当てられます。優先順位番号は、プロセスのスケジュールクラス、使用される CPU 時間、nice 値 (タイムシェアリングプロセスの場合) などの、複数の要素によって決定されます。
各タイムシェアリングプロセスは、親プロセスから継承したデフォルトの nice 値で起動します。nice 値は、ps レポートの NI カラムに表示されます。
ユーザーは、自分が与える nice 値優先順位を大きくしてプロセスの優先順位を下げることができます。ただし、nice 値を小さくしてプロセスの優先順位を上げることができるのは、スーパーユーザーだけです。これは、ユーザーが各自のプロセスの優先順位を大きくして CPU の独占比率を高めるのを防ぐためです。
nice 値の範囲は 0 から +39 までで、0 が最上位の優先順位です。各タイムシェアリングプロセスのデフォルトの nice 値は 20 です。このコマンドには、利用できるバージョンが 2 つあります。標準バージョンの /usr/bin/nice と、C シェルの組み込みコマンドです。
この方法により、ユーザーがプロセスの優先順位を下げることができます。ただし、スーパーユーザーはプロセスの優先順位を上げたり、下げたりすることができます。
注 - この節では /usr/bin/nice コマンドの構文についてだけ説明し、C シェル nice 組み込みコマンドについての説明は行いません。C シェルの nice コマンドについては、csh(1) のマニュアルページを参照してください。
次の nice コマンドは、nice 値を 5 単位分大きくすることで、 command-name を実行する優先順位を下げます。
$ /usr/bin/nice -5 command-name
上記のコマンドでは、マイナス記号は次にくるものがオプションであることを表します。このコマンドは、次のように指定することもできます。
% /usr/bin/nice -n 5 command-name
次の nice コマンドは、nice 値をデフォルトの 10 単位分大きくすることで、 command-name の優先順位を下げます。ただし、最大値の 39 を超えさせることはできません。
% /usr/bin/nice command-name
次の nice コマンドは、nice 値を 10 単位分小さくすることで、command-name の優先順位を上げます。ただし、最低値の 0 未満にすることはできません。
# /usr/bin/nice --10 command-name
上記のコマンドでは、最初のマイナス記号は次にくるものがオプションであることを表します。2 番目のマイナス記号は負の数を表します。
次の nice コマンドは、nice 値を 5 単位分大きくすることで、command-name の優先順位を下げます。ただし、最高値の 39 を超えさせることはできません。
# /usr/bin/nice -5 command-name
参照
詳細は、nice(1) のマニュアルページを参照してください。