パフォーマンス分析ツール
パフォーマンス分析ツールについて
- vmstat
vmstat 間隔 回数
基本はこの使い方です。間隔部分さえ使えばあとはCtrl+Cなどで止めるまで取りつづけてくれます
1秒間隔で取得し続けるVM モードにおけるフィールドの説明 Procs r: ランタイム待ちのプロセス数 b: 割り込み不可能なスリープ状態にあるプロセス数 Memory swpd: 仮想メモリの量。 free: 空きメモリの量。 buff: バッファに用いられているメモリの量。 cache: キャッシュに用いられているメモリの量。 inact: アクティブでないメモリの量 (-a オプション)。 active: アクティブなメモリの量 (-a オプション)。 Swap si: ディスクからスワップインされているメモリの量 (/s)。 so: ディスクにスワップしているメモリの量 (/s)。 IO bi: ブロックデバイスから受け取ったブロック (blocks/s)。 bo: ブロックデバイスに送られたブロック (blocks/s)。 System in: 一秒あたりの割り込み回数。クロック割り込みも含む。 cs: 一秒あたりのコンテキストスイッチの回数。 CPU これらは CPU の総時間に対するパーセンテージである。 us: カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。 sy: カーネルコードの実行に使用した時間 (システム時間)。 id: アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。 wa: IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。 st: 仮想マシンから盗まれた時間。Linux 2.6.11より前では未知。
$ vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 882464 50960 28896 0 0 0 1 5 4 0 0 100 0 0 0 0 0 882456 50960 28916 0 0 0 0 23 10 0 0 100 0 0 0 0 0 882456 50960 28916 0 0 0 0 8 5 0 0 100 0 0 0 0 0 882456 50960 28916 0 0 0 0 9 7 0 0 100 0 0 0 0 0 882456 50968 28912 0 0 0 36 13 20 0 0 100 0 0 0 0 0 882456 50968 28916 0 0 0 0 10 8 0 0 100 0 0
※AIXでは出来るんですが、時間表示ができないのが残念です。
いろいろやって、表示させることもできるんですが、処理が入る結果負荷が上がってしまい、正確に負荷が取れなかったため、個人的には断念しました。○メモリ分析
freeコマンドで見るとmemの所を食いつぶしているように見えますが、必ずしもメモリが足りてないというわけではありません。
vmstat -aオプションを利用して、freeとinactの合計を見てみましょう$ vmstat -a procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 0 696060 99708 167208 0 0 0 1 5 4 0 0 100 0 0
そもそも足りている環境ですが、参考までに。 - dstat
オプション次第で色々できるやつ。
色もついて見栄えも助かる~
オプションを色々付けて回してみるとこんな感じ。色は付けてません…# dstat -tmscldrn ----system---- ------memory-usage----- ----swap--- ----total-cpu-usage---- ---load-avg--- -dsk/total- --io/total- -net/total- date/time | used buff cach free| used free|usr sys idl wai hiq siq| 1m 5m 15m | read writ| read writ| recv send 01-06 13:30:31| 640M 122M 2993M 204M|2328k 3070M| 0 0 94 6 0 0| 0 0 0|8195k 156k| 200 31.0 | 0 0 01-06 13:30:32| 640M 122M 2993M 204M|2328k 3070M| 0 0 99 1 0 0| 0 0 0| 0 104k| 0 26.0 | 256B 1430B 01-06 13:30:33| 640M 122M 2993M 204M|2328k 3070M| 0 1 97 2 0 0| 0 0 0| 0 912k| 0 228 | 40B 522B 01-06 13:30:34| 640M 122M 2993M 204M|2328k 3070M| 1 0 99 0 0 0| 0 0 0| 0 128k| 0 32.0 | 40B 522B 01-06 13:30:35| 643M 122M 2993M 201M|2328k 3070M| 1 0 99 1 0 0| 0 0 0| 16k 128k|4.00 32.0 | 312B 765B 01-06 13:30:36| 642M 122M 2993M 202M|2328k 3070M| 2 1 94 3 1 0| 0 0 0| 208k 872k|52.0 218 | 193B 538B 01-06 13:30:37| 642M 122M 2993M 202M|2328k 3070M| 0 0 100 0 0 0| 0 0 0| 0 112k| 0 28.0 | 40B 538
横切れちゃってますが、こんな感じで色々見えます。
時間の順があれですが、tをTに変えるとUNIX時間、すなわち1970年1月1日 0時0分0秒からの経過秒数になります。
ロードアベレージやら何やらまとめてみたいって方は良いかもです。
オプションもたくさんありますが時間あれば追加していきます。 - 今後の予定。
nmonとかmpstat等を追加していく予定
SELinuxを無効化 |
CentOS |
tcpdumpによるパケットキャプチャ |