15章BPF

この章では、拡張BPFに対するトレーシングフロントエンドであるBCCとbpftrceを説明する。これらのフロントエンドは、パフォーマンス分析ツールのコレクションを提供しており、それらのツールは今までの章でも使ってきた。BPFというテクノロジについては、「3章 オペレーティングシステム」「3.4.4 拡張BPF」で説明した。一言で言えば、拡張BPFとは、トレーサーにプログラマビリティを提供するカーネル実行環境である。

この章と「13章 perf」「14章 Ftrace」は、ひとつ以上のシステムトレーサーを深く学びたいと思う読者のためのオプションの章である。

拡張BPFツールは、次のような疑問に答えられる。

  • ディスクI/Oのレイテンシをヒストグラムにするとどうなるか。
  • CPUスケジューラのレイテンシが問題を起こすほど高くなっているか。
  • ファイルシステムのレイテンシのためにアプリケーションの動作に問題が出ているか。
  • どのようなTCPセッションがどのような期間に発生していたか。
  • どのコードパスがどの程度の間ブロックされていたか。

ほかのトレーサーとは異なり、BPFにはプログラマビリティがある。イベント発生時にユーザーが定義したプログラムを実行したり、フィルタリング、情報の保存と読み出し、レイテンシの計算、カーネル空間内での集計とカスタム出力の作成といった機能を持つプログラムを作ったりすることができる。ほかのトレーサーでは、すべてのイベントをユーザー空間に転送して後処理をしなければならないような場合でも、BPFならカーネルコンテキストで効率よくイベントを処理できる。そのため、ほかの方法ではオーバーヘッドが高すぎて本番環境では実行できないようなパフォーマンスツールが作れるようになる。 ...

Get 詳解 システム・パフォーマンス 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.