ablog

不器用で落着きのない技術者のメモ

シンプルでシステマチックな Linux 性能分析(本)

チートシート

  • 本書のエッセンスを一瞥できるチートシート × 3枚
    • ハードウェア/ソフトウェアスタックとツール*1
    • リソース監視(コマンドと見方)*2

はじめに

  • パフォーマンス分析は職人芸だという話をよく聞くが、原理やメソッドのエッセンスを学べば初心者でも中上級者レベルになれると考えている
  • 職人芸だと言われているものを、初心者が最短で習得出来るよう簡潔に体系化するのが著者のライフワーク
  • 自分が初心者の頃に「難しいけど何年も経験積めばわかるようになるよ」、「話すと長くなる」とか言われて悔しい思いをしたのが原点
  • 二桁の足し算の暗算もできない著者でも難解なOSの性能問題を解析できるようになったエッセンスを凝縮している。

対象読者

レビュー頂いた方

コンピュータの仕組み

ボトルネックの見つけ方

CPU
  • CPU使用率とランキュー
メモリ
  • 実質メモリ使用率を算出する
  • メモリ使用率の内訳
  • スワップを正しく理解する
ディスク
  • 1回のIOが遅いのか、限界性能に達しているのか見極める
  • 挟み撃ちの原則でボトルネックになっているレイヤーか切り分ける
ネットワーク

ボトルネックの原因を突き止める

CPU
  • flame graphでマクロに分析
  • funcgraph でミクロに
  • Javaやnode.js/OSを一気通貫で分析する
メモリ
  • メモリを大量消費しているプロセスを見つける
  • カーネルのメモリ使用量を確認する
ディスク
  • blktrace でI/Oをミクロに追いかける
ネットワーク

コラム

  • vmstat、dstat はただのテキスト整形ツール(全ての道は/procに通ず)
  • CPUのクロック周波数とマルチコア化
  • ソフトウェアの為に進化するCPU(VT-、AES-NI、Software in sillicon)
  • CPU使用率が高いことは悪ではない
  • 「そのツールはCPUを何パーセント使いますか?」
  • I/O Wait(%) が高い場合、CPU増設は無駄
  • CPUのクロック周波数が倍になるとRDBMSスループットも倍になるか?
  • vDSO
  • ファイルキャッシュにのっていると iostat には計上されない
  • 正しくできてますか?メモリ使用率監視
  • ディスクビジー率が高いことは問題か?
  • ps や top を記録しておく事で迷宮入りを防ぐ
  • 無邪気に /proc や /sys を参照して起こった大惨事
  • 推測するな計測せよ(仮説を立てて検証せよ)
  • メモリ空間のレイヤ感覚が見えた時、戦闘力が倍増した
  • 計算量/データ構造/アルゴリズムの観点で見れるようになるとRDBMSとNoSQLなどあらゆるソフトウェアの強みと弱みと共通点がわかるようになる
  • IT業界はファッション?自分の頭で考えよう
  • 日本のエンジニアのキャリアパスは欧米に近づきつつある?
  • インターネット/OSS/コミュニティ/クラウドによるIT業界のネクストソサイエティ
  • ネットベンチャーでの経験が全ての礎になった
  • コミュニティでその世界のグルに教えてもらう
  • 私の技術書の選び方と読み方
  • アウトプットのすすめ

参考情報

  • B.Gregg
  • Craig
  • 小田さん
  • 中井さん
  • 早水さん
  • Tanel

*1:B.Gregg の絵をシンプルにしたイメージ、システムコール/割込み/メモリ空間

*2:USEメソッドの表に近いイメージ