Solaris のシステム管理 (第 2 巻)

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

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

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

用語 

説明 

プロセス 

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

軽量プロセス (LWP) 

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

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

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

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

表 24-2 プロセス構造体

構造体 

説明 

proc

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

kthread

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

user

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

klwp

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

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

図 24-1 プロセス構造体

Graphic

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

プロセスコマンド

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

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

使用するコマンド 

目的 

ps

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

dispadmin

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

priocntl

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

nice

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

別の機能を使うと、プロセッサセットに関してプロセスグループを制御できます。プロセッサセットを使用するということは、プロセスグループを 1 つのプロセサだけではなく、プロセッサグループにバインドできるということです。システム管理者は、/usr/sbin/psrset コマンドを使用することにより、プロセッサセットの作成と管理を制御できます。詳細は、psrset(1M) のマニュアルページを参照してください。

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

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

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

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

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

表 24-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

現在の作業ディレクトリ 

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

第 25 章「プロセスの管理手順」では、プロセスツールコマンドを使用して、プロセスの詳細表示や、プロセスの起動および終了などのシステム管理作業を実行する方法を説明します。プロセスツールのさらに詳細な説明は、proc(1) のマニュアルページを参照してください。

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

以前のフラットな /proc ファイルシステムは、状態情報と制御機能のためのサブディレクトリが追加されたディレクトリ階層に再構築されました。

/proc ファイルシステムは、ウォッチポイント機能も提供します。この機能は、プロセスのアドレス領域の個々のページの読み取り権または書き込み権を再マップするために使用されます。この機能は制限がなく、MT-安全です。

新しい /proc ファイル構造は、古い /proc インターフェースと完全なバイナリ互換を提供します。ただし、新しいウォッチポイント機能は、古いインターフェースでは使用できません。

デバッグ用ツールは、/proc の新しいウォッチポイント機能を使用するように変更されています。つまり、ウォッチポイントプロセス全体がより高速になったためです。

dbx デバッグ用ツールを使用してウォッチポイントを設定するときの次の制限は取り除かれました。

詳細は、proc(4)core(4)、および adb(1) のマニュアルページを参照してください。

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

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

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

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

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

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