コンピュータやネットワークのパフォーマンスを十分に引き出すことは、システム管理における重要な作業です。 この章では、コンピュータシステムのパフォーマンスの維持と管理に影響する要素について簡単に説明します。
この章の内容は以下のとおりです。
ここでは、システムパフォーマンスの管理に使用する新機能について説明します。
ディレクトリ名検索キャッシュ (DNLC) が拡張され、1000 以上のファイルを含む大容量のディレクトリにあるファイルにアクセスする際のパフォーマンスが向上しました。
DNLC は一般的なファイルシステムサービスであり、最近参照されたディレクトリ名とそれに関連する v ノードをキャッシュします。 UFS ディレクトリのエントリは、ディスク上に直線的に保存されています。よって、エントリを格納するには、その名前で各エントリを検索する必要があります。 新しいエントリを追加する際は、ディレクトリ全体を検索して、その名前が存在していないことを確認する必要があります。 このパフォーマンスに関する問題を解決するために、DNLC を使ってディレクトリ全体をメモリーにキャッシュします。
このリリースにおける DNLC のもう 1 つの新機能は、検索したが存在しなかったファイルオブジェクトをキャッシュすることです。 これは「ネガティブキャッシュ」と呼びます。ファイルが存在するかどうかを繰り返し調べるアプリケーションに便利です。
詳細については、『Solaris カーネルのチューンアップ・リファレンスマニュアル』を参照してください。
新しい 2 つのコマンド pargs と preap により、プロセスのデバッグが改善されています。 pargs コマンドを使用すると、動作中のプロセスまたはコアファイルに関連付けられた引数と環境変数を表示できます。 preap コマンドを使用すると、終了した (ゾンビ) プロセスを削除できます。
また、pargs コマンドを使用することによって、プロセスに渡された引数を ps コマンドで一部しか表示できないという問題がようやく解決されました。 次のように、pargs コマンドを pgrep コマンドと併用して、プロセスに渡された引数を表示できます。
# pargs `pgrep ttymon` 579: /usr/lib/saf/ttymon -g -h -p system-name console login: -T sun -d /dev/console -l argv[0]: /usr/lib/saf/ttymon argv[1]: -g argv[2]: -h argv[3]: -p argv[4]: system-name console login: argv[5]: -T argv[6]: sun argv[7]: -d argv[8]: /dev/console argv[9]: -l argv[10]: console argv[11]: -m argv[12]: ldterm,ttcompat 548: /usr/lib/saf/ttymon argv[0]: /usr/lib/saf/ttymon |
pargs -e コマンドを使用して、プロセスに関連付けられた環境変数を次の例のように表示できます。
$ pargs -e 6763 6763: tcsh envp[0]: DISPLAY=:0.0 |
pargs コマンドと preap コマンドを使用して、ユーザーの検査権限に含まれるすべてのプロセスを検査できます。 スーパーユーザーは、すべてのプロセスを検査できます。
preap コマンドを使用して、終了したプロセスを削除できます。 終了したプロセスは、ゾンビプロセスとも呼ばれます。 ゾンビプロセスとは、その終了状態がまだ親によって取得または要求されていないプロセスをいいます。 これらのプロセスは一般的に支障はありませんが、プロセスの数が多い場合には、システム資源を消費することになります。
preap コマンドの使用方法については、preap(1) のマニュアルページを参照してください。 pargs コマンドの使用方法については、proc(1) のマニュアルページを参照してください。
Solaris 管理コンソールのパフォーマンスツールを使って、システムパフォーマンスおよびシステム資源の使用を監視できます。
Solaris 資源管理によるシステム資源の割り当て、監視、および制御については、『Solaris のシステム管理 (資源管理とネットワークサービス)』の「Solaris 9 リソースマネージャの紹介」を参照してください。
Solaris 管理コンソールの使用と起動の方法については、『Solaris のシステム管理 (基本編)』の「Solaris 管理コンソールの操作 (手順)」を参照してください。
FSS スケジューラ (フェアシェアスケジューラ) および FX スケジューラ (固定優先順位スケジューラ) は、新しいユーザープロセスのスケジューラです。 両方のスケジューラでは、タイムシェアリング (TS) スケジューリングクラスおよび対話 (IA) スケジューリングクラスと同じ範囲の優先順位 (0 から 59) を使用します。
FX は、プロセスを確実な優先順位で実行する、固定優先順位スケジューラです。 FX はデフォルトのスケジューラではありません。 TS では負荷を分散します。 FX では負荷を分散しません。 同じシステムで FX と TS を使用できますが、FX の優先度を高く設定し過ぎると、TS で実行するプロセスが停止状態になります。
FSS を使用すると、CPU 資源の配分を明示的にプロジェクトに割り当てることによって、アプリケーションのパフォーマンスが保証されます。 その他の FSS の利点は、次のとおりです。
システムでの CPU 資源の細かい配分を可能にする。
作業負荷に対して重要度に基づいて有効な CPU 資源を割り当てるように制御する。 作業負荷の重要度は、各作業負荷に割り当てる CPU 資源の配分数によって表されます。
プロセッサセットを使用するのでなければ、同じシステムで FSS を TS または FX と併用しないでください。 プロセッサセットを使用する場合、同じ CPU で競合しないように、各プロセッサセットで実行するすべてのプロセスが同じスケジューリングクラスにある限りは、同じシステムで FSS を TS、IA、FX と併用できます。 特に、プロセッサセットを使用して FX クラスのアプリケーションで FSS クラスのアプリケーションの停止状態を招く優先順位を使用しないようにするのでなければ、FX スケジューラは新しい FSS スケジューリングクラスと併用しないでください。
次の表に、上記のスケジューラや、プロジェクト、タスクなどの他の Solaris 資源管理に関する機能、システム資源をより良く管理するための情報を示します。
トピック |
参照箇所 |
---|---|
FSS スケジューラおよび FX スケジューラの使用方法 |
『Solaris のシステム管理 (資源管理とネットワークサービス)』の「フェアシェアスケジューラ」 |
FSS |
FSS(7) |
FX |
priocntl(1) と dispadmin(1M) のマニュアルページ |
プロジェクト |
『Solaris のシステム管理 (資源管理とネットワークサービス)』の「プロジェクトとタスク」 |
作業 |
参照箇所 |
---|---|
プロセスの管理 | |
システムのパフォーマンスの監視 | |
Solaris 調整可能パラメータの変更 |
コンピュータシステムのパフォーマンスは、システムがその資源をどのように使用して割り当てるかによって左右されます。 したがって、通常の条件下でどのように動作するかを知るために、システムパフォーマンスを定期的に監視する必要があります。 期待できるパフォーマンスについてよく把握し、問題が発生したときに分析できなければなりません。
パフォーマンスに影響を及ぼすシステム資源は次のとおりです。
システム資源 |
説明 |
---|---|
中央処理装置 (CPU) |
CPU は、命令をメモリーからフェッチして実行します。 |
入出力 (I/O) デバイス |
I/O デバイスは、コンピュータとの間で情報をやりとりします。 この種のデバイスには、端末とキーボード、ディスクドライブ、プリンタなどがあります。 |
メモリー |
物理 (またはメイン) メモリーは、システム上のメモリー (RAM) の容量を示します。 |
コンピュータシステムの動作とパフォーマンスに関する統計情報を表示するツールについては、第 24 章「システムパフォーマンスの監視 (手順)」を参照してください。
用語 |
説明 |
---|---|
プロセス |
システムの動作またはジョブ。 システムをブートしてコマンドを実行するか、アプリケーションを起動するたびに、システムは 1 つ以上のプロセスをアクティブにする |
軽量プロセス (LWP) |
仮想 CPU または実行資源。 LWP は、利用できる CPU 資源をスケジュールクラスと優先順位に基づいて使用するように、カーネルによってスケジュールされる。 LWP には、カーネルスレッドと LWP が含まれる。 カーネルスレッドには、メモリーに常駐する情報 が入っている。 また、LWP には、スワップ可能な情報が入っている |
アプリケーションスレッド |
ユーザーのアドレス空間内で独立して実行できる別個のスタックを持った一連の命令。 アプリケーションスレッドは LWP の最上部で多重化できる |
1 つのプロセスは、複数の軽量プロセスと複数のアプリケーションスレッドで構成できます。 カーネルはカーネルスレッド構造をスケジュールします。この構造は、SunOS 環境内をスケジュールする実体です。 表 22–2 に各種プロセス構造体を示します。
表 22–2 プロセス構造体
構造体 |
説明 |
---|---|
proc |
プロセス全体に関連し、メインメモリーに常駐しなければならない情報が入っている |
kthread |
1 つの LWP に関連し、メインメモリーに常駐しなければならない情報が入っている |
user |
スワップ可能な、プロセス単位の情報が入っている |
klwp |
スワップ可能な、LWP プロセス単位の情報が入っている |
次の図に、これらのプロセス構造体の関係を示します。
プロセス内のすべてのスレッドは、ほとんどのプロセス資源にアクセスできます。 ほとんどすべてのプロセスの仮想メモリーが共有されます。 あるスレッドが共有データを変更すると、その変更結果をプロセス内の他のスレッドが利用できます。
コンピュータの稼働中は、各種のシステム動作を追跡するためにオペレーティングシステムのカウンタが増分されます。 追跡されるシステム動作は次のとおりです。
中央処理装置 (CPU) の使用状況
バッファーの使用状況
ディスクとテープの入出力 (I/O) 動作
端末デバイスの動作
システムコールの動作
コンテキスト切替え
ファイルアクセス
待ち行列の動作
カーネルテーブル
プロセス間通信
ページング
空きメモリーとスワップ空間
カーネルメモリー割リ当て (KMA)
Solaris ソフトウェアには、システムパフォーマンスを追跡できるように複数のツールが提供されています。 次のような監視ツールがあります。
表 22–3 パフォーマンス監視ツール
コマンド |
説明 |
参照箇所 |
---|---|---|
sar コマンドと sadc コマンド |
システム動作データを収集および報告する | |
ps コマンドと prstat コマンド |
活動中のコマンドについての情報を表示する | |
vmstat コマンドと iostat コマンド |
システム動作データの要約。仮想メモリーの統計、ディスクの使用率、CPU の動作など | |
swap コマンド |
ユーザーのシステムで利用可能なスワップ領域についての情報を表示する |
『Solaris のシステム管理 (デバイスとファイルシステム)』の「追加スワップ空間の構成 (手順)」 |
netstat コマンドと nfsstat コマンド |
ネットワークパフォーマンスについての情報を表示する |
netstat(1M) と nfsstat(1M) のマニュアルページ |
Sun Enterprise SyMON |
Sun Enterprise レベルのシステム上で、システム動作データを収集する |
『Sun Enterprise SyMON 2.0.1 Software User's Guide』 |