Netflixはこのほど、eBPFプログラムの最適化と監視を強化することを目的としたコマンドラインユーティリティ、bpftopを発表した。bpftop は、動作中の eBPF プログラムのリアルタイムのスナップショットを提供する。プログラムの平均実行時間、毎秒処理されるイベント数、各プログラムの総CPU使用率の概算などのメトリクスが表示される。このツールによって、NetflixはeBPFの能力を活用することになる。
Netflix のシニア ソフトウェア エンジニアであるJose Fernandez氏は、ブログ投稿でこの発表について詳しく説明した。bpftopはBPF_ENABLE_STATS
コマンドを使って、eBPFプログラムから重要なパフォーマンスデータの収集を開始する。コンピューターのスムーズな動作を維持するために、このデータ収集はオフになっている。bpftopはこのデータを収集し、有用な情報を計算する。収集されたデータは、topコマンドと同様の表、または10秒周期で更新されるグラフで表示される。bpftopが実行を停止すると、統計情報の収集も停止する。このツールはRustプログラミング言語を使って作成され、libbpf-rsとratatuiパッケージを利用している。
ソースはこちら:bpftopを発表する:eBPFパフォーマンス最適化を合理化する
さらにbpftopは、eBPFプログラムのパフォーマンス向上プロセスを簡素化し、ベンチマーク、コードの改良、即時フィードバックのループを促進する。bpftopがなければ、これらのプログラムの最適化には手計算が必要だった。しかし、bpftopを使えば、ユーザーは簡単にベンチマークを設定し、改良を加え、その改良を確認でき、プロセス全体を効率化できる。
このツールの重要な特徴は、統計情報を時系列でグラフ表示できることで、パターンや傾向を把握するのに役立つ。
もともとBPFはBerkeley Packet Filterの頭文字をとったものだ。しかし、ebpf.ioによると、eBPF(拡張BPF)の機能はパケットフィルタリングだけにとどまらず拡張されており、元の頭字語は時代遅れになっている。それでも、BPFという用語はLinuxのソースコードで使われている。様々なツールやドキュメントでは、BPFとeBPFはしばしば同じ意味で使われている。現在、eBPFは、最新のデータセンターやクラウド環境におけるネットワーキングやロードバランシングの強化、最小限のオーバーヘッドで詳細なセキュリティデータの提供、開発者によるアプリケーションのトレース支援など、さまざまな場面で利用されている。
Fernandez氏は、NetflixはeBPFをVector やFlow Exporter sidecarなどのツールを通じてパフォーマンス・エンジニアリングに統合しているが、bpftopによって、NetflixはeBPFの利点とそれがシステムに与える負荷のバランスを見つけようとしていると指摘した。
X.comのNetflixエンジニアリング・アカウントが行ったbpftopの発表に、テック・コミュニティは注目し、223件のリポストと1.2kの「いいね!」を獲得した。Hacker Newsへの投稿は、テクノロジー・コミュニティから注目された。ユーザーのbschuurは、彼らのeBPFコードプロジェクトでこのツールのポジティブな経験を共有し、その有効性を強調した。その結果、このツールは、彼らのツールキットへの重要な追加とみなされるだけの価値があると認められた。
このツールの活用に関する詳細については、bpftopのGitHubページを参照されたい。このプロジェクトはApache 2ライセンスの下でオープンソース プロジェクトとして利用可能でありコミュニティからの貢献を歓迎している。