どの性能要素でボトルネックが発生しているのか?


性能問題は次のステップを繰り返すことで解決することができます。

STEP1: 問題の大枠を捉え、どの要素でボトルネックになっているのかを判断します。
要素とは、CPU、ディスク入出力、メモリ、およびネットワークです。
STEP2: その要素の中で示される各種情報から、特徴的な振る舞いを抽出します。
STEP3: 特徴的な振る舞いから分析ポイントを絞り、具体的な対策を実施します。
STEP4: 性能低下の原因はいくつもあるかも知れません。対策の効果確認のため、
再度情報を採取し分析します。

STEP1で行うこと

まず、全体の動きを把握するため、sarコマンド-uオプションで情報を採取します。図1は出力サンプルです。sarコマンドは他のオプションを指定することでCPU、ディスク入出力、およびメモリの各種性能情報を表示してくれます。Solarisではそのほか、多種多様な情報採取コマンドが提供されています。それらの各種コマンド一覧を、Solaris性能情報採取ツールに示します。主に使用するコマンドのシンタックス、オプション、および表示項目の概略は、次に述べる表1.性能4要素とそのポイントから参照することが出来ます。

# sar -u 5 5
SunOS act051 5.8 Generic_108528-14 sun4u   07/09/04
21:20:35 %usr %sys %wio %idle
21:20:40 34 22 0 43
21:20:45 44 56 0 0
21:20:50 28 55 1 16
21:20:55 13 40 12 34
21:21:00 13 43 17 27
Average 26 43 6 24
#

図1.sarコマンド-uオプションの表示例

ユーザCPU使用率(ユーザCPU時間の割り合い)%usrと、システムCPU使用率(システムCPU時間の割り合い)%sysの合計が70〜80パーセントを超えると、CPU使用に何らかの問題があります。ディスク入出力待ち率(入出力完了を待っている時間の割り合い)%wioが30パーセントを超えるとディスク入出力、またはメモリに何らかの問題があります。表1.性能4要素とポイントの[ CPU | ディスク入出力 | メモリ | ネットワーク ] をクリックすると、それに対応するページに行きます。なお、上記図1のように、性能情報採取コマンドの出力は、通常キャラクタベースで表示されます。値そのもの、最小値、最大値、平均値等の具体的な定量データは重要です。一方、グラフにすることで視覚的・直感的な判断が可能になり、問題の発見が易しくなります。グラフを見て、判った気分になってしまうという弊害もありますが…。

STEP2〜STEP3で行うこと

次表に従って分析、評価、対策を実施します。

表1.性能4要素とそのポイント

要素 ポイント 採取情報をグラフにすると…
CPU
or
ディスク
入出力
【サマリ】
CPU全体を示す性能情報は、sarやvmstatコマンドで採取します。複数CPUが構成されているシステムの、CPU単位の性能情報は、mpstatコマンドで採取します。ユーザCPUの使用率%usr、システムCPUの使用率%sysを確認します。入出力待ち率%wioが高い場合は、ディスク入出力に何らかの問題があります。採取時のサンプリングインターバルに注意して下さい【備考1】

【コマンド】
sar | vmstat | mpstat

【対策】
(1)処理の内訳(アルゴリズム)を分析して改修する。
(2)CPUを速いもの(クロック数の大きいもの)に交換する。
(3)排他処理のロック待ちが少ない場合、CPUを増設する。

シナリオ番号:2 os 【備考2】
メモリ 【サマリ】
メモリを示す性能情報は、sarやvmstatコマンドで採取します。ユーザメモリの個々のサイズは、psやpmapコマンドで採取します。物理メモリの1/64がページング開始のしきい値です。空きメモリページ数 freemem がこのしきい値を下回ると、ページング処理が始まります。ページング処理が頻繁になると、空きページを走査するレートが高くなります。極度のメモリ不足に陥ると、スワップ処理が始まり、システムはスローダウンします。

【コマンド】
sar | vmstat | pmap

【対策】
(1)メモリサイジングが妥当か分析して改修する。
(2)物理メモリを増設する。

シナリオ番号:2 os
ディスク
入出力
【サマリ】
ディスク入出力を示す性能情報は、sar、vmstatやiostatコマンドで採取します。RAID構成、ディスク単体の回転数、チャネル転送レート等の物理的な性能、プログラムのリード・ライトの出し方、アクセス方法等が性能を大きく左右します。ファイルシステムではデータブロック以外に、iノード(インデックスノード)が頻繁にアクセスされます。メモリ不足のシステムは、スワップ領域がアプリケーションディスクと同じ場合、より深刻な性能低下を引き起こします。

【コマンド】
sar | vmstat | iostat

【対策】
(1)ブロックサイズ、アクセス方法等アプリケーションを分析して改修。
(2)ディスク、ファイル位置やRAID方法を変更する。
(3)速いチャネル、ディスクに交換する。

シナリオ番号:2 disk
ネット
ワーク
【サマリ】
ネットワーク関連の性能情報は、netstatコマンドで採取します。転送パケット数、トラフィック密度、転送方向を確認することが重要です。秒あたりの転送スループットと、実際の転送量を比較して、妥当であるかどうかを確認します。コネクション、リッスン、クローズ待ち等の接続数が妥当であるかどうかを確認します。出力やコリジョン、入力チェックサム等のエラーが発生すると、再送が増え、転送性能の低下を引き起こします。

【コマンド】
netstat | nfsstat【備考3】

【対策】
(1)処理の内訳(アルゴリズム)を分析して改修する。
(2)スループットの大きいインタフェースに交換する。
(3)エラーが発生している場合は、原因を究明して修理・改修する。

シナリオ番号:2 network

【備考】

1. いくつかの性能情報採取コマンドは、ある時間から一定時間経過したところの差を求めて値を算出しています。この経過時間をサンプリングインターバルと呼びます。ある時点のプロセス数やファイル数は、カーネルの持つ変数をそのまま表示するので問題はありません。一方、%usrや%sys等は、計算によって値を求めていることから、サンプリングインターバルが違うと値がなまってしまいます。情報採取にあたって、サンプリングインターバルを適切に決定することが大切です。サンプリングインターバルによる値の変化に具体的例を示しますので、ご覧下さい。
2. 各々のグラフに、シナリオ番号と要素名を付記しています。本コンテンツの ホーム>シナリオ> をご覧下さい。
3. NFS関連の性能分析は今後の課題とさせていただきます。ご了承ください。


STEP4で行うこと

実施した対策の結果、どのように良くなったのか、変化が無かったのか、または状況が悪くなったのかを評価分析します。評価にあたって、対応前後の定量的性能情報は貴重なデータです。初めて採取したデータは原データとして大切に保存してください。実施した対策がどう良くなるのかを予測することで目標が明確になります。対策実施後の性能情報は最初の測定と同じ方法で採取することが望ましいです。しかし、場合によって、他のステータスを採取する必要が出てくるかも知れません。テストが可能であれば、それに越したことはありませんが、往々にしてぶっつけ本番になってしまうことがあります。結果が芳しくなくても落胆せず、もう一度観点を変えてトライしましょう。先に記述しましたが、性能問題の原因は一つでは無いかも知れません。いくつかの対策を実施してみましょう。くじけず前向きに頑張りましょう!!

 

Copyright (C) 2004 by The Art of Computer Technologies, Corp.  All rights reserved.