Linux Observability with BPF 1人輪読会(3)

前回
tsunomur.hateblo.jp

Chapter 1: introduction

問題定義

ログとメトリック
  • 昨今の複雑なコンピューターシステムを可視化するためには、アプリケーションのログを分析することが重要。
  • ログは、アプリケーションの正確な動作を確認することが出来る。
  • しかし、ログは、アプリケーション開発者にしか出力させることが出来ず、開発者以外が調査するときの制約になる。
  • あらゆるアプリケーションのログを取るということは、アプリケーションのリバースエンジニアリング等と同様のチャレンジが必要になってくる。
  • ログ以外にも、メトリックを取得する方法がある。しかし、メトリックは、特定の一時点のアプリケーションの動作を測定するためのデータである。
Observability - 可観測性
  • Observability はこの問題を別の角度からアプローチする創発的なプラクティスである
  • Observability を実践するには、すべてのシステムから出力されるすべてのデータを収集し、必要なときにのみそのデータを集約することである
Black Swan イベント

「ありえなくて起こりえない」と思われていたことが急に生じた場合、「予測できない」、「非常に強い衝撃を与える」という理論

  • 事前に状態を観測しておけば予期しないイベントの発生を予測することが出来る
  • データが多ければ多いほどさまざまな問題に対処することが出来る
Linux コンテナ
  • 伝統的にカーネルはタスクの分離とセキュリティを提供する
  • Linux においては、Namespace と Cgroup がそれぞれ対応する
  • マルチテナントなコンピューティング環境では、Namespace や Cgroup のような機能に依存するようになった
BPF とは
  • Linux カーネルはイベントをベースとしている
  • ファイルを開くことも、CPU が任意の命令を実行することも、ネットワークのパケットを受信すること等も、イベントの一つである
  • BPF は、カーネルのサブシステムである
  • BPF は、カーネルがトリガーするどんなイベントの時でも安全に実行されるプログラムをユーザーが書くことを可能とする

BPF の歴史

1992年
  • Steven McCanne と Van Jacobson によって"The BSD Packet Filter: A New Architecture for User-Level Packet Capture." という論文が書かれた。
  • 当時最新の技術に比べて20倍速いパケットフィルタリングの実装方法が説明されている。
  • BPF はパケットフィルタリングに2つの革新を導入した
    • レジスタベースの CPU で効率的に動作する新しい仮想マシン
    • アプリケーション毎のバッファーの使用方法
  • この実装は、Linux を含めた今日の Unix の派生形のカーネルに存在している
20014 年
  • Alexei Starovoitov は extended BPF を導入した。
  • extended BPF の当初のゴールは、内部的な命令を最適化することだった。
  • extended BPF は BPF の 2 個の 32 ビットレジスタに対し、10 個の 64 ビットレジスタを持っている。
  • オリジナルの BPF に比べ、4 倍の性能アップにつながった。
  • extended BPF は、ユーザースペースからアクセスできるようになり、のちの BPF の大きな変化点になった。
  • この時のAlexeiのパッチ: [PATCH RFC net-next 00/14] BPF syscall, maps, verifier, samples [LWN.net]
  • eBPF によって、安全で安定で、カーネルモジュールのようにリコンパイルすることなくプログラムを書くことが出来るようになった。

アーキテクチャ

英語

  • emergent: 現れた
  • arbitrary : 任意の
  • a key difference between : ~間の重要な違い
  • popularize : 一般化する
  • rationalize : 合理化する
  • inevitable : 避けられない
  • premise : 前提
  • in charge of : 担当する
  • In a sense : ある意味で
  • reliant :
  • the state of the art : 最先端の技術
  • be present in : 存在している
  • make it : うまくやり遂げる
  • an inflection point: 変化点
  • incorporate : 組み込む