Solaris のシステム管理

プロセスとシステムの性能

表 62-1 に、プロセスに関連する用語を示します。

表 62-1 プロセスに関連する用語

用語 

説明 

プロセス 

実行中のプログラムの実体 

軽量プロセス (LWP) 

仮想 CPU または実行資源。LWP は、利用できる CPU 資源をスケジュールクラスと優先順位に基づいて使用するように、カーネルによってスケジュールされる。LWP には、メモリーに常駐する情報が入ったカーネルスレッドと、スワップ可能な情報が入った LWP が含まれる。 

アプリケーションスレッド 

ユーザーのアドレス空間内で独立して実行できる別個のスタックを持った一連の命令。LWP の最上部で多重化できる。 

1 つのプロセスは、複数の LWP と複数のアプリケーションスレッドで構成できます。カーネルはカーネルスレッド構造をスケジュールします。この構造は、SunOS 5.x 環境内をスケジュールする実体です。表 62-2 に各種プロセス構造体を示します。

表 62-2 プロセス構造体

構造体 

説明 

proc

プロセス全体に関連し、メインメモリーに常駐しなければならない情報が入っている。 

kthread

1 つの LWP に関連し、メインメモリーに常駐しなければならない情報が入っている。 

user

スワップ可能な、プロセス単位の情報が入っている。 

klwp

スワップ可能な、LWP プロセス単位の情報が入っている。 

図 62-1 に、これらの構造体の関係を示します。

図 62-1 プロセス構造体

Graphic

プロセス内のすべてのスレッドは、ほとんどのプロセス資源にアクセスできます。ほとんどすべてのプロセスの仮想メモリーが共有されます。あるスレッドが共有データを変更すると、その変更結果をプロセス内の他のスレッドが利用できます。

プロセスコマンド

表 62-3 に、プロセスを管理するためのコマンドを説明します。

表 62-3 プロセスを管理するためのコマンド

使用するコマンド 

目的 

ps

システム上のアクティブなプロセスの状態をチェックする。また、プロセスについての詳細な情報を表示する。 

dispadmin

デフォルトのスケジューリングポリシーをリストする。 

priocntl

プロセスに優先順位クラスを割り当てて、プロセスの優先度を管理する。 

nice

タイムシェアリングプロセスの優先度を変更する。 

プロセスを管理するコマンドの詳細については、第 63 章「プロセスの管理手順」を参照してください。

また、/usr/proc/bin 内のプロセスツールを使用すると、/proc にあるプロセスに関して詳細情報を表示できます。/proc はプロセスファイルシステム (PROCFS) とも呼ばれます。アクティブなプロセスのイメージは、そのプロセス ID 番号を使って /proc に格納されます。

プロセスツールは ps コマンドの一部のオプションに似ていますが、このツールから提供される出力の方が詳細です。一般に、プロセスツールには次の機能があります。

表 62-4 に、新しい /usr/proc/bin ユーティリティを示します。

表 62-4 プロセスツール

プロセスを制御するツール 

ツールの機能 

 

/usr/proc/bin/pstop pid

プロセスを停止する。 

/usr/proc/bin/prun pid

プロセスを再開する。 

/usr/proc/bin/ptime pid

microstate アカウントを使用してプロセスの時間を測定する。 

/usr/proc/bin/pwait [-v] pid

指定されたプロセスが終了するのを待つ。 

 

プロセスの詳細を表示するツール 

表示内容 

 

/usr/proc/bin/pcred pid

資格 

/usr/proc/bin/pfiles pid

開いたファイルの fstat 情報と fcntl 情報

/usr/proc/bin/pflags pid

/proc の追跡フラグ、保留シグナルと保持シグナル、lwp ごとの他の状態情報

/usr/proc/bin/pldd pid

各プロセスにリンクされた動的ライブラリ 

/usr/proc/bin/pmap pid

アドレス空間マップ 

/usr/proc/bin/psig pid

シグナルの動作 

/usr/proc/bin/pstack pid

lwp ごとの 16 進数 + 記号スタックトレース

/usr/proc/bin/ptree pid

指定した pid が入ったプロセスツリー 

/usr/proc/bin/pwdx pid

現在の作業ディレクトリ 

上記のコマンドで、pid はプロセス識別番号です。この番号は ps -ef コマンドを使用して表示できます。

プロセスの詳細を表示する、プロセスを開始して停止するなど、プロセスツールコマンドを使用してシステム管理作業を実行する方法については、第 63 章「プロセスの管理手順」を参照してください。

プロセスが無限ループ内でトラップされた場合や、実行時間が長すぎる場合は、プロセスを終了 (キル) できます。kill コマンドを使用してプロセスを終了する方法については、第 63 章「プロセスの管理手順」を参照してください。

プロセスのスケジュールングクラスと優先レベル

プロセスには、スケジュールクラスと優先レベルに従って CPU 時間が割り当てられます。デフォルトでは、SunOS 5.x オペレーティングシステムにはリアルタイム、システム、タイムシェアリング、対話型という 4 つのプロセス優先レベルがあります。

スケジュールポリシーによって、各プロセスの実行順序が決まります。

リアルタイムプロセスの優先順位は固定されています。リアルタイムプロセスを実行する準備ができている場合は、システムプロセスやタイムシェアリングプロセスを実行できません。

システムプロセスの優先順位は、開始時にカーネルによって確立され固定されています。システムクラス内のプロセスはカーネルによって制御されるので変更できません。

タイムシェアリングプロセスと対話型プロセスは、その優先順位を動的に割り当てるスケジューラによって制御されます。このクラスのプロセスの優先順位は操作できます。