Solaris のシステム管理 (上級編)

第 22 章 システムパフォーマンスの管理 (概要)

コンピュータやネットワークのパフォーマンスを十分に引き出すことは、システム管理における重要な作業です。この章では、コンピュータシステムのパフォーマンスの維持と管理に影響する要素について簡単に説明します。

この章の内容は次のとおりです。

システムパフォーマンスの管理に関する新機能

ここでは、システムパフォーマンスの管理に使用する新機能について説明します。

DNLC 機能の向上

ディレクトリ名検索キャッシュ (DNLC) が拡張され、1000 以上のファイルを含む大容量のディレクトリにあるファイルにアクセスする際のパフォーマンスが向上しました。

DNLC は一般的なファイルシステムサービスであり、最近参照されたディレクトリ名とそれに関連する v ノードをキャッシュします。UFS ディレクトリのエントリは、ディスク上に直線的に保存されています。よって、エントリを格納するには、その名前で各エントリを検索する必要があります。新しいエントリを追加する際は、ディレクトリ全体を検索して、その名前が存在していないことを確認する必要があります。このパフォーマンスに関する問題を解決するために、DNLC を使ってディレクトリ全体をメモリーにキャッシュします。

このリリースにおける DNLC のもう 1 つの新機能は、検索したが存在しなかったファイルオブジェクトをキャッシュすることです。これは「ネガティブキャッシュ」と呼びます。ファイルが存在するかどうかを繰り返し調べるアプリケーションに便利です。

詳細は、『Solaris カーネルのチューンアップ・リファレンスマニュアル』を参照してください。

pargs コマンドと preap コマンド

新しい 2 つのコマンド pargspreap により、プロセスのデバッグが改善されています。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 スケジューラ

FSS スケジューラ (フェアシェアスケジューラ) および FX スケジューラ (固定優先順位スケジューラ) は、新しいユーザープロセスのスケジューラです。両方のスケジューラでは、タイムシェアリング (TS) スケジューリングクラスおよび対話 (IA) スケジューリングクラスと同じ範囲の優先順位 (0 から 59) を使用します。

FX は、プロセスを確実な優先順位で実行する、固定優先順位スケジューラです。FX はデフォルトのスケジューラではありません。TS では負荷を分散します。FX では負荷を分散しません。同じシステムで FX と TS を使用できますが、FX の優先度を高く設定し過ぎると、TS で実行するプロセスが停止状態になります。

FSS を使用すると、CPU 資源の配分を明示的にプロジェクトに割り当てることによって、アプリケーションのパフォーマンスが保証されます。その他の FSS の利点は、次のとおりです。

プロセッサセットを使用するのでなければ、同じシステムで 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 のシステム管理 (資源管理とネットワークサービス)』の「プロジェクトとタスク」

システムパフォーマンスに関する情報の参照箇所

作業 

参照箇所 

プロセスの管理 

第 23 章「システムプロセスの管理 (手順)」

システムのパフォーマンスの監視 

第 24 章「システムパフォーマンスの監視 (手順)」

Solaris 調整可能パラメータの変更 

Solaris カーネルのチューンアップ・リファレンスマニュアル

システムパフォーマンスおよびシステム資源

コンピュータシステムのパフォーマンスは、システムがその資源をどのように使用して割り当てるかによって左右されます。したがって、通常の条件下でどのように動作するかを知るために、システムパフォーマンスを定期的に監視する必要があります。期待できるパフォーマンスについてよく把握し、問題が発生したときに分析できなければなりません。

パフォーマンスに影響を及ぼすシステム資源は次のとおりです。

システム資源 

説明 

中央処理装置 (CPU) 

CPU は、命令をメモリーからフェッチして実行します。 

入出力 (I/O) デバイス 

I/O デバイスは、コンピュータとの間で情報をやりとりします。この種のデバイスには、端末とキーボード、ディスクドライブ、プリンタなどがあります。  

メモリー 

物理 (またはメイン) メモリーは、システム上のメモリー (RAM) の容量を示します。 

コンピュータシステムの動作とパフォーマンスに関する統計情報を表示するツールについては、第 24 章「システムパフォーマンスの監視 (手順)」を参照してください。

プロセスとシステムのパフォーマンス

次の表は、プロセスに関連する用語を示します。

表 22–1 プロセスに関連する用語

用語 

説明 

プロセス 

システムの動作またはジョブ。システムをブートしてコマンドを実行するか、アプリケーションを起動するたびに、システムは 1 つ以上のプロセスをアクティブにする  

軽量プロセス (LWP) 

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

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

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

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

表 22–2 プロセス構造体

構造体 

説明 

proc

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

kthread

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

user

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

klwp

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

次の図に、これらのプロセス構造体の関係を示します。

図 22–1 プロセス構造体

この図については前の表で説明しています。

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

パフォーマンスの監視

コンピュータの稼働中は、各種のシステム動作を追跡するためにオペレーティングシステムのカウンタが増分されます。追跡されるシステム動作は次のとおりです。

監視ツール

Solaris ソフトウェアには、システムパフォーマンスを追跡できるように複数のツールが提供されています。次のような監視ツールがあります。

表 22–3 パフォーマンス監視ツール

コマンド 

説明 

参照箇所 

sar コマンドと sadc コマンド

システム動作データを収集および報告する 

第 24 章「システムパフォーマンスの監視 (手順)」

ps コマンドと prstat コマンド

活動中のコマンドについての情報を表示する 

第 23 章「システムプロセスの管理 (手順)」

vmstat コマンドと iostat コマンド

システム動作データの要約。仮想メモリーの統計、ディスクの使用率、CPU の動作など 

第 24 章「システムパフォーマンスの監視 (手順)」

swap コマンド

ユーザーのシステムで利用可能なスワップ領域についての情報を表示する 

Solaris のシステム管理 (基本編)』の「追加スワップ空間の構成 (手順)」

netstat コマンドと nfsstat コマンド

ネットワークパフォーマンスについての情報を表示する 

netstat(1M)nfsstat(1M) のマニュアルページ

Sun Enterprise SyMON 

Sun Enterprise レベルのシステム上で、システム動作データを収集する 

Sun Enterprise SyMON 2.0.1 Software User's Guide