ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 でのシステム情報、プロセス、およびパフォーマンスの管理 Oracle Solaris 11.1 Information Library (日本語) |
次のリストは、システム上で構成可能なプロセススケジューリングクラスを示しています。タイムシェアリングクラスのユーザー優先順位の範囲も示しています。
プロセススケジューリングクラスの種類は次のとおりです。
公平配分 (FSS)
固定優先順位 (FX)
システム (SYS)
対話型 (IA)
リアルタイム (RT)
|
プロセスのスケジュール優先順位とは、スケジュールポリシーに従ってプロセススケジューラによって割り当てられる優先順位のことです。dispadmin コマンドを使用すると、デフォルトのスケジュールポリシーを表示できます。詳細は、dispadmin(1M) のマニュアルページを参照してください。
priocntl コマンドを使用すると、プロセスを優先順位クラスに割り当てたり、プロセスの優先順位を管理したりできます。priocntl コマンドを使用してプロセスを管理する手順については、「プロセスの優先順位を指定する方法 (priocntl)」を参照してください。
例 2-4 プロセスクラスに関する基本情報を表示する (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
例 2-5 プロセスのグローバル優先順位を表示する
次の例は、ps -ecl コマンドの出力を示します。PRI 列の値は、各プロセスの優先順位を示しています。
$ ps -ecl F S UID PID PPID CLS PRI ADDR SZ WCHAN TTY TIME CMD 1 T 0 0 0 SYS 96 ? 0 ? 0:11 sched 1 S 0 5 0 SDC 99 ? 0 ? ? 0:01 zpool-rp 0 S 0 1 0 TS 59 ? 688 ? ? 0:00 init 1 S 0 2 0 SYS 98 ? 0 ? ? 0:00 pageout 1 S 0 3 0 SYS 60 ? 0 ? ? 2:31 fsflush 1 S 0 6 0 SDC 99 ? 0 ? ? 0:00 vmtasks 0 S 16 56 1 TS 59 ? 1026 ? ? 0:01 ipmgmtd 0 S 0 9 1 TS 59 ? 3480 ? ? 0:04 svc.star 0 S 0 11 1 TS 59 ? 3480 ? ? 0:13 svc.conf 0 S 0 162 1 TS 59 ? 533 ? ? 0:00 pfexecd 0 S 0 1738 1730 TS 59 ? 817 ? pts/ 1 0:00 bash 0 S 1 852 1 TS 59 ? 851 ? ? 0:17 rpcbind 0 S 17 43 1 TS 59 ? 1096 ? ? 0:01 netcfgd 0 S 15 47 1 TS 59 ? 765 ? ? 0:00 dlmgmtd 0 S 0 68 1 TS 59 ? 694 ? ? 0:01 in.mpath 0 S 1 1220 1 FX 60 ? 682 ? ? 0:00 nfs4cbd 0 S 16 89 1 TS 59 ? 1673 ? ? 0:02 nwamd 0 S 0 146 1 TS 59 ? 629 ? ? 0:01 dhcpagen 0 S 1 129 1 TS 59 ? 1843 ? ? 0:00 kcfd 0 S 1 1215 1 FX 60 ? 738 ? ? 0:00 lockd 0 S 0 829 828 TS 59 ? 968 ? ? 0:00 hald-run 0 S 0 361 1 TS 59 ? 1081 ? ? 0:01 devfsadm 0 S 0 879 1 TS 59 ? 1166 ? ? 0:01 inetd 0 O 119764 1773 880 TS 59 ? 557 cons ole 0:00 ps 0 S 0 844 829 TS 59 ? 996 ? ? 0:00 hald-add 0 S 0 895 866 TS 59 ? 590 ? ? 0:00 ttymon 0 S 0 840 1 TS 59 ? 495 ? ? 0:00 cron 0 S 0 874 1 TS 59 ? 425 ? ? 0:00 utmpd 0 S 0 1724 956 TS 59 ? 2215 ? ? 0:00 sshd 0 S 119764 880 9 TS 59 ? 565 ? cons ole 0:00 csh 0 S 0 210 1 TS 59 ? 1622 ? ? 0:00 sysevent 0 S 0 279 1 TS 59 ? 472 ? ? 0:00 iscsid 0 S 1 1221 1 TS 59 ? 1349 ? ? 0:00 nfsmapid 1 S 0 374 0 SDC 99 ? 0 ? ? 0:00 zpool-us 0 S 0 1207 1 TS 59 ? 1063 ? ? 0:00 rmvolmgr 0 S 0 828 1 TS 59 ? 1776 ? ? 0:03 hald 0 S 0 853 829 TS 59 ? 896 ? ? 0:02 hald-add 0 S 0 373 1 TS 59 ? 985 ? ? 0:00 picld 0 S 0 299 1 TS 59 ? 836 ? ? 0:00 dbus-dae 0 S 12524 1730 1725 TS 59 ? 452 ? pts/ 1 0:00 csh 0 S 0 370 1 TS 59 ? 574 ? ? 0:00 powerd 0 S 0 264 1 FX 60 ? 637 ? ? 0:00 zonestat 0 S 0 866 9 TS 59 ? 555 ? ? 0:00 sac 0 S 0 851 829 TS 59 ? 998 ? ? 0:00 hald-add 0 S 12524 1725 1724 TS 59 ? 2732 ? ? 0:00 sshd 0 S 1 1211 1 TS 59 ? 783 ? ? 0:00 statd 0 S 0 1046 1 TS 59 ? 1770 ? ? 0:13 intrd 0 S 0 889 1 TS 59 ? 1063 ? ? 0:00 syslogd 0 S 0 1209 1 TS 59 ? 792 ? ? 0:00 in.ndpd 0 S 0 1188 1186 TS 59 ? 951 ? ? 0:15 automoun 0 S 0 1172 829 TS 59 ? 725 ? ? 0:00 hald-add 0 S 0 1186 1 TS 59 ? 692 ? ? 0:00 automoun 0 S 101 1739 1738 TS 59 ? 817 ? pts/ 1 0:00 bash 0 S 0 1199 1 TS 59 ? 1495 ? ? 0:02 sendmail 0 S 0 956 1 TS 59 ? 1729 ? ? 0:00 sshd 0 S 25 1192 1 TS 59 ? 1528 ? ? 0:00 sendmail 0 S 0 934 1 TS 59 ? 6897 ? ? 0:14 fmd 0 S 0 1131 1 TS 59 ? 1691 ? ? 0:07 nscd 0 S 1 1181 1 TS 59 ? 699 ? ? 0:00 ypbind
『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# 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
例 2-6 プロセスの優先順位を指定する (priocntl)
次の例では、ユーザーが指定できる最上位の優先順位を使用して find コマンドを開始します。
# priocntl -e -c TS -m 60 -p 60 find . -name core -print # ps -ecl | grep find
『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# 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
例 2-7 タイムシェアリングプロセスのスケジューリングパラメータを変更する (priocntl)
次の例では、500 ミリ秒のタイムスライス、クラス RT 内の優先順位 20、グローバル優先順位 120 を指定して、コマンドを実行します。
# priocntl -e -c RT -m 500 -p 20 myprog # ps -ecl | grep myprog
『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。
# priocntl -s -c class -i idtype idlist
ユーザー優先順位の範囲について上限を設定し、現在の優先順位を変更する
クラス TS (タイムシェアリング) または RT (リアルタイム) を指定して、プロセスのクラスを変更する
xidtype と xidlist の組み合わせを使用してプロセスを識別する。xidtype ではプロセス ID やユーザー ID など、ID のタイプを指定する。「xidlist」ではプロセス ID またはユーザー ID のリストを識別する
注 - プロセスをリアルタイムプロセスに変更したり、リアルタイムプロセスから変更したりするには、ユーザーは root 役割になるか、リアルタイムシェル内で作業中でなければなりません。root としてユーザープロセスをリアルタイムクラスに変更すると、そのユーザーは priocntl -s コマンドを使用して、リアルタイムのスケジューリングパラメータを変更できなくなります。
# ps -ecl | grep idlist
例 2-8 プロセスのクラスを変更する (priocntl)
次の例では、ユーザー 15249 が所有するすべてのプロセスをリアルタイムプロセスに変更します。
# priocntl -s -c RT -i uid 15249 # ps -ecl | grep 15249
nice コマンドは、旧バージョンとの下位互換性を保つためにのみサポートされます。priocntl コマンドを使用する方がプロセスを柔軟に管理できます。
プロセスの優先順位は、そのスケジュールクラスポリシーと nice 値によって決定されます。各タイムシェアリングプロセスは、グローバル優先順位を持っています。グローバル優先順位は、ユーザーが指定した優先順位 (nice コマンドまたは priocntl コマンドの影響を受ける) とシステムで計算された優先順位を加算して算出されます。
プロセスの実行優先順位番号は、オペレーティングシステムによって割り当てられます。優先順位番号は、プロセスのスケジュールクラス、使用される CPU 時間、nice 値 (タイムシェアリングプロセスの場合) などの、複数の要素によって決定されます。
各タイムシェアリングプロセスは、親プロセスから継承したデフォルトの nice 値で起動します。nice 値は、ps レポートの NI カラムに表示されます。
ユーザーは、自分が与える nice 値優先順位を大きくしてプロセスの優先順位を下げることができます。ただし、nice 値を小さくしてプロセスの優先順位を上げることができるのは、スーパーユーザーだけです。これは、ユーザーが各自のプロセスの優先順位を大きくして CPU の独占比率を高めるのを防ぐためです。
nice 値の範囲は 0 から +39 までで、0 が最上位の優先順位です。各タイムシェアリングプロセスのデフォルトの nice 値は 20 です。このコマンドには、利用できるバージョンが 2 つあります。標準バージョンの /usr/bin/nice と、C シェルの組み込みコマンドです。
この方法により、ユーザーがプロセスの優先順位を下げることができます。ただし、root 役割はプロセスの優先順位を上げることも下げることもできます。
次の 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) のマニュアルページを参照してください。