テクニカルコラム かんたん♪ZFS
第九回:システムモニタ(2010年7月29日発行)
こんにちは。暑い日が続きますが、みなさんいかがお過ごしでしょうか。
このコラムでは実際に ZFS を使う上で役に立つ Tips を紹介します。
今までのファイルシステムとは一味違う ZFS を活用して面倒なファイル
管理の苦労を減らしましょう!
-------------------------------------------------------------------
どんなに便利なファイルシステムでも、読み書きが遅いといった不満があ
ると採用できません。
そこで、ZFS のパフォーマンス改善方法について、何回かに分けて紹介し
ます。今回はシステムのモニタ方法です。
A chain is only as strong as its weakest link. (鎖全体の強さはその
鎖の中で最も弱い環の強さにしかならない) という原則があります。あた
りまえのことのように思えますが、多くの物事にあてはまる原則です。
ストレージシステムのパフォーマンスにも、この「最も弱い環の原則」を
あてはめることができます。例えば SSD を使用していても、 ネットワー
クが 100 Mbps の転送能力しかないと、サービスがその速度で頭打ちにな
ります。一カ所でも弱い部分があると、全体のパフォーマンスがそのレベ
ルに引き下げられてしまうのです。
パフォーマンス改善を行う時、負荷に対して処理能力を持て余している部
分を補強してもほとんど改善は望めません。一方、処理能力を目一杯使っ
ている部分を補強すると、大きな改善を期待することができます。
パフォーマンスを改善するには、処理状況をモニタし、システムの最も弱
い部分を発見するのが、最初の一歩となります。このモニタは、実際に改
善したい処理状況 (高負荷) の時に実施します。
1. iostat
iostat はディスク毎の I/O 統計情報を表示します。このコマンドに
より物理ディスク毎のパフォーマンスを把握することができます。
$ iostat -xn 1
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
0.1 0.0 0.7 0.0 0.0 0.0 0.0 0.9 0 0 c1d0
0.1 0.0 0.6 0.0 0.0 0.0 0.0 0.1 0 0 c1d1
0.2 2.3 0.2 17.1 0.0 0.0 1.3 0.4 0 0 c2d0
0.2 2.3 0.2 17.1 0.0 0.0 1.4 0.4 0 0 c2d1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c0t0d0
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c1d0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c1d1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c2d0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c2d1
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 c0t0d0
計測値の意味は次の通りです。
r/s : Read I/O [回/sec]
w/s : Write I/O [回/sec]
kr/s : Read 転送バイト数 [KB/sec]
kw/s : Write 転送バイト数 [KB/sec]
wait : 待ち I/O トランザクション数
actv : 処理 I/O トランザクション数
wsvc_t : I/O トランザクション平均待ち時間 [msec]
asvc_t : I/O トランザクション平均処理時間 [msec]
%w : キュー待ち時間割合 [%]
%b : デバイス処理時間割合 [%]
ディスクが処理能力の限界に達しているかどうかを判定するには %b
を見るのが良いしょう。この値が 100 % と表示されている場合は、ディ
スク性能がボトルネックになっている疑いがあります。
2. mpstat
mpstat は CPU の統計情報を表示します。このコマンドにより CPU
の活動状況を把握することができます。
$ mpstat 1
CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl
0 131 0 0 1321 119 207 3 0 0 0 289 1 1 0 97
0 24 0 0 1321 110 195 0 0 0 0 329 0 0 0 100
0 0 0 0 1314 114 190 0 0 0 0 314 0 1 0 99
0 0 0 0 1297 108 217 1 0 0 0 464 2 1 0 97
0 0 0 0 1310 108 191 0 0 0 0 314 0 1 0 99
0 0 0 0 1327 114 193 0 0 0 0 315 0 0 0 100
0 0 0 0 1309 108 192 0 0 0 0 315 0 1 0 99
0 0 0 0 1312 110 190 0 0 0 0 313 0 1 0 99
計測値の意味は次の通りです。
CPU : CPU 番号
minf : マイナーフォルト回数
mjf : メジャーフォルト回数
xcal : プロセスをまたぐコール回数
intr : 割り込み回数
ithr : スレッドによる割り込み
csw : コンテキストスイッチ
icsw : タイムスライスを使い切ったコンテキストスイッチ
migr : スレッド移行 (別プロセッサへ)
smtx : ミューテックススピン回数
srw : 読み取り書き込みロックスピン回数
syscl : システムコール回数
usr : ユーザ処理時間割合 [%]
sys : システム処理時間割合 [%]
wt : I/O 待ち時間割合 [%]
idl : アイドル時間割合 [%]
CPU が忙しい場合は usr や sys の割合が増えます。逆に I/O やネッ
トワークが遅い場合は wt の割合が増えます。
3. vmstat
vmstat はメモリ統計情報を表示します。このコマンドによりメモリ
使用状況を把握することができます。
$ vmstat 1
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr cd cd cd cd in sy cs us sy id
0 0 0 1032356 122772 13 131 0 0 0 0 0 0 0 2 2 1321 289 207 1 1 97
0 0 0 1019420 109136 13 58 0 0 0 0 0 0 0 0 0 1319 404 186 0 1 99
0 0 0 1019340 109120 0 0 0 0 0 0 0 0 0 0 0 1296 323 176 1 1 98
0 0 0 1019340 109164 0 0 0 0 0 0 0 0 0 0 0 1317 330 184 0 1 99
0 0 0 1019340 109184 0 0 0 0 0 0 0 0 0 0 0 1313 442 197 1 1 98
0 0 0 1019340 109192 0 0 0 0 0 0 0 0 0 0 0 1323 325 185 0 0 100
0 0 0 1019340 109200 0 0 0 0 0 0 0 0 0 3 3 1606 318 311 1 3 96
0 0 0 1019340 109200 0 0 0 0 0 0 0 0 0 0 0 1324 325 180 0 0 100
0 0 0 1019340 109232 0 0 0 0 0 0 0 0 0 0 0 1309 321 179 0 1 99
注目すべき測定値は free (未使用メモリ [KB]) です。
メモリに関しては ARC (Adaptive Replacement Cache) とも関連しま
す。プロセス、スレッド毎のメモリ使用量を知るには 'ps -el' を実
行します。
以上、基本的なシステムモニタコマンドを紹介させていただきました。
次回は、 DTrace を使用した、システム情報の収集方法について紹介しま
す。
(つづく)
■ 参考文献
(1) サンマイクロシステムズ、"SunOS リファレンスマニュアル 1 :
ユーザコマンド"、Part No. 819-1210-13、2007 年 7 月
(2) サンマイクロシステムズ、"SunOS リファレンスマニュアル 1M :
システム管理コマンド"、Part No. 819-1211-13、2007 年 7 月
(高田 浩生)