📊
概念 #システムパフォーマンス #Brendan Gregg #Linux #SRE #読書ノート #USE法 📚 詳解 システム・パフォーマンス

詳解 システム・パフォーマンス - 概要・読み方ガイド

Brendan Gregg著「詳解 システム・パフォーマンス 第2版」の全体マップ。USE法・RED法・フレームグラフの入口となる読書ノートシリーズ。

書籍情報

項目内容
書名詳解 システム・パフォーマンス 第2版
原著Systems Performance: Enterprise and the Cloud (2nd Ed.)
著者Brendan Gregg(Netflix, Oracle, Intel でのSRE経験)
監訳西脇 靖紘 / 訳:長尾 高弘
出版社O’Reilly Japan
発行年2023年1月
ページ数940ページ
章数16章

なぜ読むか

  • パフォーマンス問題は「勘」ではなく体系的な方法論で解決できる
  • USE法・RED法など、どんな環境でも使える汎用的なフレームワークを習得できる
  • perfBPFFtrace など Linux 標準ツールの実践的な使い方を網羅
  • SRE/DevOps の本番障害対応・キャパシティプランニングに直結する知識

全体章構成マップ(16章)

タイトルキーワード
1イントロダクション読み方・前提知識
2メソドロジUSE法・RED法・60秒診断 ← 最重要
3オペレーティングシステムカーネル・プロセス・メモリ管理
4可観測性ツールツール分類・vmstat/iostat/sar
5アプリケーションアプリ層の観測・プロファイリング
6CPU分析perf・フレームグラフ・CPIの読み方
7メモリ分析pmap・Valgrind・ページフォルト
8ファイルシステム分析VFS・キャッシュ・iolatency
9ディスク分析iostat詳細・biolatency
10ネットワーク分析ss・tcpretrans・TCPレイテンシ
11クラウドコンピューティングノイジーネイバー・steal time
12ベンチマーキングベンチマーク設計の原則
13perfperfコマンドレシピ集
14Ftraceカーネルトレーサー・latency
15BPFBCC tools・bpftrace ワンライナー
16ケーススタディ赤いクジラ・実践的思考プロセス ← 最初に読む

著者推奨の読み順

著者は「最初に16章を読め」と明言している。思考プロセスを先に学ぶことで、他の章の理解が深まる。

① 第16章(ケーススタディ)
    ↓ パフォーマンスエンジニアの思考プロセスを体感
② 第2章(メソドロジ)
    ↓ USE法・RED法・60秒診断の体系を習得
③ 興味・業務に関連する章を選択的に読む
    例: Kubernetes/Cloud → 11章 → 4章 → 10章
    例: CPUボトルネック調査 → 6章 → 13章
    例: メモリ問題 → 7章

中心思想:2つの方法論

USE Method(インフラ層)

すべてのシステムリソースについて以下の3指標を確認する。

指標意味高い場合の意味
Utilization(使用率)リソースがビジー状態にある割合リソース枯渇の手前
Saturation(飽和度)キューに積まれた未処理の量実際に詰まっている
Errors(エラー)エラーイベント数ハードウェア・設定の異常

「約80%のパフォーマンス問題は、5%の労力で解決できる」
USE法はその5%を効率的に特定するための方法論。

RED Method(サービス層)

マイクロサービス・アプリケーション層の監視に特化。

指標意味
Rate(レート)秒あたりのリクエスト数
Errors(エラー)失敗したリクエスト数
Duration(時間)リクエスト処理時間(p50/p95/p99)

使い分け:インフラ層の問題 → USE法、サービス品質の問題 → RED法


5分トラブルシューティングスクリプト

本番でパフォーマンス低下が報告されたときの初動。

#!/bin/bash
# systems-perf-quick-check.sh
# 本番障害の初動5分診断

echo "=== 1. 負荷確認 ==="
uptime
# load averageがCPUコア数を超えていたら要警戒

echo "=== 2. カーネルエラー ==="
dmesg | tail -5
# OOM killer、ハードウェアエラーがないか確認

echo "=== 3. CPU/メモリ ==="
vmstat 1 3
# r列=runキュー、b列=ブロック、si/so=スワッピング発生
free -h
# availableが少ない → メモリプレッシャー

echo "=== 4. ディスクI/O ==="
iostat -xz 1 3
# %util>80% → ディスク飽和 / await高い → I/Oレイテンシ問題

echo "=== 5. CPU使用プロセス特定 ==="
ps aux | sort -k3 -rn | head -5

echo "=== 6. ネットワーク ==="
sar -n TCP,ETCP 1 1
# retrans/s増加 → ネットワーク品質問題
ss -s
# 接続数の概況

このシリーズの読み方

各ドキュメントは「すぐ使えるコマンドとその解釈」を中心に構成している。
本を手元に置きながら、各ドキュメントをコマンドリファレンスとして使うことを想定。

ドキュメント対象読者の状況
概要(このページ)全体像を把握したい
ch16 ケーススタディ思考プロセスを学びたい
ch02 メソドロジUSE法・60秒診断を実践したい
ch06 CPU分析CPUボトルネックを調査したい
ch13 perfフレームグラフを作りたい
ch15 BPFbpftraceでトレースしたい

出典: 詳解 システム・パフォーマンス 第2版 Brendan Gregg著