そーくのつれづれぶろぐ

web系エンジニアの勉強したことなど

【メモ】vmstatの読み方、負荷状況を読み解く復習【初心者】

業務で負荷テストの検証結果まとめ資料の作成作業を依頼されたものの、サーバ負荷状況に関しての知識が曖昧だったばかりに
久しぶりにvmstatの出力を見てちんぷんかんぷんになってしまっていたのでvmstatの復習と本日見た負荷テスト結果の照らし合わせの復習。
これを読んだら、ざっくりCPU-DISKI/Oどっちがボトルネックで遅くなっているかがパッと理解できるようになる。 今回メモリは私がまだ理解していないので...割愛する。

以下からvmstat実行例を拝借。

tech.nikkeibp.co.jp

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     92   6608   6796 192804    0    0   126    23  548  569  9  1 89  2  0
 0  0     92   5764   6828 192836    0    0     0     8 1090 1576  2  0 98  0  0

それぞれの意味は上の記事に書いてあるので割愛するとして、私がいつまでも読めない問題は「正常値がわからないから異常値かわからない」ってところだと感じる。

今日の業務で先輩方の読み方の流れはおおまかに言えば「異常かどうかすぐにわかる→正常が覚えやすい箇所から攻めていく」というのをしてらしたので、おそらくこの流れで読んでいくと素早くサーバ状況がわかるのだと思う。

  1. プロセスの待ち時間/DiskI/O待ちプロセスがあるかどうか
  2. CPUの使用量割合(ユーザus/システムsy/空きid/I/O待ちwa)
  3. ディスクI/Oが異常に増えていないか(0近くから数万に変化)

1.は一番左のproc。平常時は0(=待ちプロセスがない→プロセスを瞬時に捌ききれている)になることと、一番左にあるのですぐに把握ができる。

  1. は逆に一番右のcpu。平常時はidは80~90と高め(=忙しくないので暇(idle)している)、その他は10未満のことが多いはず。 これも真ん中とかでなく、一番右だからすぐに把握しやすい。(空き(id)だけはひとまず覚えていたらなんとかあとはググれば解にたどり着けるだろう)

最後3.は真ん中あたりにあるのでどこがディスクから受け取っているデータ量bi、ディスクに書きこんだデータ量bo。これは上に比べれば正常時が分かりづらいが、負荷が起きているであろう時間の前後をざっと見渡すと急に値が大きくなるのでぱっとわかりやすい。

この3つをまず押さえれば、数分、早くなれば数秒で状況がわかるようになる。

メモリに関しては...まとめきれていないので割愛とする。
まずは上を数秒でぱっとわかるように明日も読んでいく。