Chapter 1: introduction
問題定義
ログとメトリック
- 昨今の複雑なコンピューターシステムを可視化するためには、アプリケーションのログを分析することが重要。
- ログは、アプリケーションの正確な動作を確認することが出来る。
- しかし、ログは、アプリケーション開発者にしか出力させることが出来ず、開発者以外が調査するときの制約になる。
- あらゆるアプリケーションのログを取るということは、アプリケーションのリバースエンジニアリング等と同様のチャレンジが必要になってくる。
- ログ以外にも、メトリックを取得する方法がある。しかし、メトリックは、特定の一時点のアプリケーションの動作を測定するためのデータである。
Observability - 可観測性
Black Swan イベント
- このこと?(ブラック・スワン理論 - Wikipedia)
「ありえなくて起こりえない」と思われていたことが急に生じた場合、「予測できない」、「非常に強い衝撃を与える」という理論
- 事前に状態を観測しておけば予期しないイベントの発生を予測することが出来る
- データが多ければ多いほどさまざまな問題に対処することが出来る
Linux コンテナ
BPF の歴史
1992年
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 によって、安全で安定で、カーネルモジュールのようにリコンパイルすることなくプログラムを書くことが出来るようになった。
アーキテクチャ-
- BPF は、コードを分離された環境で実行できる、高度に拡張された VM である。
- BPF が動作するまでの流れ
- ベリファイアはカーネルのクラッシュが起きないことを保証する。
- カーネルは、JIT コンパイラを組み込んでおり、BPF のバイトコードを機械語に変換することで、実行時間のオーバーヘッドにならないようにしている。
- カーネルに組み込まれた実行ポイントは、BPF program type によって定義されている。
- このページの図が分かりやすい:
LinuxのBPFで何ができるのか? BPFの「プログラムタイプ」とは (1/2):Berkeley Packet Filter(BPF)入門(4) - @IT - 最後のコンポーネントは、ユーザースペースとカーネルスペースのデータ共有を行うための、BPF map。
- BPF map は、双方向のデータ構造となっており、ユーザースペース、カーネルスペースの双方向で読み書きを行うことが出来る。
英語
- 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 : 組み込む