JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris の管理: 一般的なタスク     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Oracle Solaris のコマンドに関する情報の検索

2.  ユーザーアカウントとグループの管理 (概要)

3.  ユーザーアカウントとグループの管理 (手順)

4.  Oracle Solarisシステムのブートとシャットダウン

5.  Oracle Configuration Manager の操作

6.  サービスの管理 (概要)

7.  サービスの管理 (手順)

8.  障害管理の使用

9.  システム情報の管理 (手順)

10.  システムプロセスの管理 (手順)

システムプロセスの管理 (作業マップ)

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

ps コマンドの使用

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

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

プロセスを表示する方法

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

プロセスを制御する方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

11.  システムパフォーマンスの監視 (手順)

12.  ソフトウェアパッケージの管理 (手順)

13.  ディスク使用の管理 (手順)

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

15.  CUPS を使用したプリンタの設定と管理 (手順)

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

17.  システムクラッシュ情報の管理 (手順)

18.  コアファイルの管理 (手順)

19.  システムおよびソフトウェアのトラブルシューティング (手順)

20.  その他各種のシステムおよびソフトウェアの トラブルシューティング (手順)

索引

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

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

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

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

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

priocntl コマンドを使用すると、プロセスを優先順位クラスに割り当てたり、プロセスの優先順位を管理したりできます。priocntl コマンドを使用してプロセスを管理する手順については、「プロセスの優先順位を指定する方法 (priocntl)」を参照してください。

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

例 10-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

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

例 10-5 プロセスのグローバル優先順位を表示する

次の例は、ps -ecl コマンドの出力を示します。PRI カラム内の値は、pageout プロセスが最上位の優先順位を持ち、sh プロセスが最下位の優先順位であることを示しています。

$ 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 の役割になります。
  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

例 10-6 プロセスの優先順位を指定する (priocntl)

次の例では、ユーザーが指定できる最上位の優先順位を使用して find コマンドを開始します。

# priocntl -e -c TS -m 60 -p 60 find . -name core -print
# ps -ecl | grep find

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

  1. root の役割になります。
  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

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

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

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

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

  1. (省略可能) root の役割になります。
  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 ユーザーであるか、リアルタイムシェル内で作業中でなければなりません。スーパーユーザーとしてユーザープロセスをリアルタイムクラスに変更すると、そのユーザーは priocntl -s を使用して、リアルタイムのスケジューリングパラメータを変更できません。


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

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