Dev Study
← コース一覧

システム性能分析のしくみ

「サーバーが遅い」と言われたとき、どこから手を付ければ見落とさずに済むのか。USEメソッドで資源を漏れなく洗い出す手順、使用率90%から待ち時間が跳ね上がる理由、ロードアベレージがLinuxでは何を数えているのか、iostatの%utilが100%でも飽和とは限らない理由、フレームグラフの横軸が時間ではないこと。指標の定義に立ち返って「その数字がなぜそう動くのか」を説明できる状態を目指します。出典はLinuxのman-pageとカーネル公式ドキュメントに限定しています。

公式ドキュメント: Linux man-pages / kernel.org Documentation

方法論編

  1. 1
    USEメソッド — どこが遅いかを取りこぼさずに探す
    システムが遅いとき、どこから調べれば見落とさずに済むのか。USEメソッドの手順を図で追っていきましょう。
  2. 2
    飽和の膝 — なぜ使用率90%から急に遅くなるのか
    使用率が上がるにつれて待ち時間がどう伸びるのかを、図で追っていきましょう。
  3. 3
    リトルの法則 — 同時実行数はどう決まるか
    系に入ってくる要求の数と、1件あたりの滞在時間から、系の中に何件が同時にいるかが決まります。その関係を図で追っていきましょう。

CPU編

  1. 4
    ロードアベレージ — Linuxでは何を数えているのか
    Linuxのロードアベレージが実際に何を数えているのかを、図で追っていきましょう。
  2. 5
    ランキュー待ち — 実行可能なのに走れない時間
    タスクが「実行可能になってから実際にCPUに載るまで」の待ち時間を図で追っていきましょう。

メモリ編

  1. 6
    PSI — 「足りない」を時間で測る
    PSI(Pressure Stall Information)の some と full の読み方を図で追っていきましょう。
  2. 7
    メモリ回収 — kswapdと直接回収でレイテンシが変わる
    同じ「メモリが足りない」でも、裏で回収されるか自分で回収させられるかで応答時間がまったく変わります。その分かれ目を図で追っていきましょう。

I/O編

  1. 8
    iostatの読み方 — %utilが100%でも飽和とは限らない
    iostat のデバイス列がそれぞれ「何を数えているのか」を、1件のI/Oがたどる経路に沿って図で追っていきましょう。

観測編

  1. 9
    サンプリングとトレーシング — コスト構造が違う
    観測ツールのコストがどう決まるのかを、サンプリングとトレーシングの2方式に分けて図で追っていきましょう。
  2. 10
    フレームグラフの読み方 — 横軸は時間ではない
    フレームグラフの縦軸と横軸が何を表しているのかを図で追っていきましょう。