JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 でのシステム情報、プロセス、およびパフォーマンスの管理     Oracle Solaris 11.1 Information Library (日本語)
このドキュメントの評価
search filter icon
search icon

ドキュメントの情報

はじめに

1.  システム情報の管理 (タスク)

2.  システムプロセスの管理 (タスク)

システムプロセスの管理に関する新機能

擬似システムプロセス

システムプロセスの管理

システムプロセスの管理 (タスクマップ)

システムプロセスを管理するコマンド

ps コマンドの使用

/proc ファイルシステムとコマンド

プロセスコマンド (/proc) を使用したプロセスの管理

プロセスを表示する方法

プロセスに関する情報を表示する方法

プロセスを制御する方法

プロセスの終了 (pkill, kill)

プロセスを終了させる方法 (pkill)

プロセスを終了させる方法 (kill)

プロセスのデバッグ (pargs, preap)

プロセスクラス情報の管理

プロセスクラス情報の管理 (タスクマップ)

プロセスのスケジュール優先順位の変更 (priocntl)

プロセスクラスに関する基本情報を表示する方法 (priocntl)

プロセスのグローバル優先順位を表示する方法

プロセスの優先順位を指定する方法 (priocntl)

タイムシェアリングプロセスのスケジューリングパラメータを変更する方法 (priocntl)

プロセスのクラスを変更する方法 (priocntl)

タイムシェアリングプロセスの優先順位の変更 (nice)

プロセスの優先順位を変更する方法 (nice)

システムのプロセスに関するトラブルシューティング方法

3.  システムパフォーマンスの監視 (タスク)

4.  システムタスクのスケジュール設定 (タスク)

5.  システムコンソール、端末デバイス、および電源サービスの管理 (タスク)

索引

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

プロセスクラス情報の管理

次のリストは、システム上で構成可能なプロセススケジューリングクラスを示しています。タイムシェアリングクラスのユーザー優先順位の範囲も示しています。

プロセススケジューリングクラスの種類は次のとおりです。

プロセスクラス情報の管理 (タスクマップ)

タスク
説明
参照先
プロセスクラスに関する基本情報を表示する
priocntl -l コマンドを使用し、プロセスのスケジューリングクラスと優先順位の範囲を表示する
プロセスのグローバル優先順位を表示する
ps -ecl コマンドを使用し、プロセスのグローバル優先順位を表示する
プロセスに優先順位を割り当てる
priocntl - e -c コマンドを使用し、割り当てた優先順位でプロセスを開始する
タイムシェアリングプロセスのスケジューリングパラメータを変更する
priocntl -s -m コマンドを使用し、タイムシェアリングプロセスのスケジューリングパラメータを変更する
プロセスのクラスを変更する
priocntl -s -c コマンドを使用し、プロセスのクラスを変更する
プロセスの優先順位を変更する
/usr/bin/nice コマンドを適切なオプションとともに使用し、プロセスの優先順位を低くしたり高くしたりする

プロセスのスケジュール優先順位の変更 (priocntl)

プロセスのスケジュール優先順位とは、スケジュールポリシーに従ってプロセススケジューラによって割り当てられる優先順位のことです。dispadmin コマンドを使用すると、デフォルトのスケジュールポリシーを表示できます。詳細は、dispadmin(1M) のマニュアルページを参照してください。

priocntl コマンドを使用すると、プロセスを優先順位クラスに割り当てたり、プロセスの優先順位を管理したりできます。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
 

プロセスの優先順位を指定する方法 (priocntl)

  1. root 役割になります。

    『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。

  2. 指定した優先順位でプロセスを起動します。
    # priocntl -e -c class -m user-limit -p pri command-name
    -e

    コマンドを実行します。

    -c class

    プロセスを実行する範囲のクラスを指定する。有効なクラスは TS (タイムシェアリング)、RT (リアルタイム)、IA (対話型)、FSS (公平配分)、および FX (固定優先順位)

    -m user-limit

    このオプションと共に -p オプションを使用すると、優先順位を上下できる最大範囲も指定できる。

    -p pri command-name

    リアルタイムスレッド用に RT クラス内で相対優先順位を指定できるようにする。タイムシェアリングプロセスの場合は、-p オプションを使用すると -60 から +60 までのユーザー指定の優先順位を指定できる

  3. プロセスステータスを確認します。
    # 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

タイムシェアリングプロセスのスケジューリングパラメータを変更する方法 (priocntl)

  1. root 役割になります。

    『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。

  2. 実行中のタイムシェアリングプロセスのスケジューリングパラメータを変更します。
    # priocntl -s -m user-limit [-p user-priority] -i idtype idlist
    -s

    ユーザー優先順位の範囲について上限を設定し、現在の優先順位を変更する

    -m user-limit

    -p オプションを使用するときに、優先順位を上下できる最大範囲を指定する

    -p user-priority

    優先順位を指定する

    -i xidtype xidlist

    xidtypexidlist の組み合わせを使用してプロセスを識別する。「xidtype」ではプロセス ID やユーザー ID など、ID のタイプを指定する。「xidlist」ではプロセス ID またはユーザー ID のリストを識別する

  3. プロセスステータスを確認します。
    # ps -ecl | grep idlist

例 2-7 タイムシェアリングプロセスのスケジューリングパラメータを変更する (priocntl)

次の例では、500 ミリ秒のタイムスライス、クラス RT 内の優先順位 20、グローバル優先順位 120 を指定して、コマンドを実行します。

# priocntl -e -c RT -m 500 -p 20 myprog
# ps -ecl | grep myprog

プロセスのクラスを変更する方法 (priocntl)

  1. (省略可能) root 役割になります。

    『Oracle Solaris 11.1 の管理: セキュリティーサービス』の「割り当てられている管理権限を使用する方法」を参照してください。

  2. プロセスのクラスを変更する
    # priocntl -s -c class -i idtype idlist
    -s

    ユーザー優先順位の範囲について上限を設定し、現在の優先順位を変更する

    -c class

    クラス TS (タイムシェアリング) または RT (リアルタイム) を指定して、プロセスのクラスを変更する

    -i idtype idlist

    xidtypexidlist の組み合わせを使用してプロセスを識別する。xidtype ではプロセス ID やユーザー ID など、ID のタイプを指定する。「xidlist」ではプロセス ID またはユーザー ID のリストを識別する


    注 - プロセスをリアルタイムプロセスに変更したり、リアルタイムプロセスから変更したりするには、ユーザーは root 役割になるか、リアルタイムシェル内で作業中でなければなりません。root としてユーザープロセスをリアルタイムクラスに変更すると、そのユーザーは priocntl -s コマンドを使用して、リアルタイムのスケジューリングパラメータを変更できなくなります。


  3. プロセスステータスを確認します。
    # ps -ecl | grep idlist

例 2-8 プロセスのクラスを変更する (priocntl)

次の例では、ユーザー 15249 が所有するすべてのプロセスをリアルタイムプロセスに変更します。

# priocntl -s -c RT -i uid 15249
# ps -ecl | grep 15249

タイムシェアリングプロセスの優先順位の変更 (nice)

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 シェルの組み込みコマンドです。

プロセスの優先順位を変更する方法 (nice)

この方法により、ユーザーがプロセスの優先順位を下げることができます。ただし、root 役割はプロセスの優先順位を上げることも下げることもできます。

  1. プロセスの優先順位をユーザーとして変更するか、スーパーユーザーとして変更するかを決定します。次のいずれかの手順に従います。
    • ユーザーとして、手順 2 の例に従ってコマンドの優先順位を下げます。
    • スーパーユーザーとして、手順 3 の例に従ってコマンドの優先順位を上げたり下げたりします。
  2. ユーザーとして、nice 値を大きくすることでコマンドの優先順位を下げます。

    次の 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
  3. スーパーユーザーとして、nice 値を変更してコマンドの優先順位を上げたり下げたりします。

    次の 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) のマニュアルページを参照してください。