[レポート] NetflixにおけるBPFパフォーマンス分析 #OPN303 #reinvent
西澤です。本稿では、以下のセッションについてレポートします。
セッション情報
Extended BPF (eBPF) is an open-source Linux technology that powers a whole new class of software: mini programs that run on events. Among its many uses, BPF can be used to create powerful performance-analysis tools capable of analyzing everything: CPUs, memory, disks, file systems, networking, languages, applications, and more. In this session, Netflix's Brendan Gregg tours BPF tracing capabilities, including many new open-source performance analysis tools he developed for his new book "BPF Performance Tools: Linux System and Application Observability." The talk also includes examples of using these tools in the Amazon Elastic Compute Cloud (Amazon EC2) cloud.
- セッション情報
- スピーカー
レポート
BPFのデモ
冒頭からWiFiの強さをモニタリングするツールのデモがスタート!
...enabling us to instrument code to figure out arbitrary things like wifi signal strength. pic.twitter.com/YpIYKKQ5Y6
— AWS Open Source (@AWSOpen) December 5, 2019
- Enhanced Berkeley Packet Filter (BPF, aka eBPF)
- Linux eBPF Tracing Tools
なぜBPFがLinuxを変えているのか?
- これまでの50年間で利用されてきたOSモデル
- BPFトレースは非ブロッキングでシンプルな新しいプログラム
- BPF on Facebook
- すべてのサーバ上で40のBPFプログラムが動作
- オンデマンドでは、100のBPFプログラムを手動で操作することも
- 主にデーモンとして動作
- 多くのチームで利用し、開発している
- BPF on NETFLIX
- >150K EC2インスタンス
- ~34% USの夜間インターネットトラフィックに占める割合
- >130M サブスクライバー
- ~14 BPFプログラムが動作している
- 最近のLinuxアプリケーションでは、よりイベントベースでマイクロカーネル化が進んでいる
- BPFの歴史
- 1992 パケットモニタリングのみの限定的なものだった
- 2019 Facebook Katran、Google KRSI、Netflix flowsrus、などで大規模に利用され、Kernelに紐づくほとんどのリソースをモニタリンスできるようになっている
BPFの裏側
- 内部構造
- spectrum meltdownの脆弱性の対策のためセキュアに
- マイクロコード化が進んでいる
- システム領域とユーザ領域の間に位置する新しいソフトウェア
パフォーマンス分析
- ほぼすべての領域においてパフォーマンス分析がでkりうツールが揃っている
ツールの紹介
- Tool extensions & source
- 150以上のツールの中から、14ほどの実行例を紹介
- Netflixでの活用
- 各サーバの /
app/nflx-bpf-alltools
に配置- BCC、bpftrace、my book、Netflix internal
- 一部のものはオープンソース化
- 最新版をフェッチ
- cpu、disk等の用途ごとに階層化して配置
- GUI化も進めている
- 各サーバの /
- 個人の意見ではあるものの、bpftraceパフォーマンス分析において最も支配的なツールとなっているので、ぜひ導入してみてください
- BCC、bpftraceを各サーバにインストールしよう
- BPF perf toolを使ってみよう
- 最低1人のエンジニアにこのツールの開発を担当させよう
まとめ
DTraceの開発者としても有名なBrendan Gregg(@brendangregg)のAWS層とは異なる少しマニアックなセッションに参加してみました。ここまで分析するようなディープなLinux運用に関わったことが無いのですが、これらのツールを導入して使いこなせるようになると、パフォーマンス分析が捗ることは間違いなしですので、興味のある方はぜひお試しいただければと思います!
引き続き、現地からのレポートを続けます!