[レポート] NetflixにおけるBPFパフォーマンス分析 #OPN303 #reinvent

re:Invent 2019から、[OPN303] BPF performance analysis at Netflix についてレポートします。
2019.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

西澤です。本稿では、以下のセッションについてレポートします。

セッション情報

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の強さをモニタリングするツールのデモがスタート!

なぜ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りうツールが揃っている

ツールの紹介

まとめ

DTraceの開発者としても有名なBrendan Gregg(@brendangregg)のAWS層とは異なる少しマニアックなセッションに参加してみました。ここまで分析するようなディープなLinux運用に関わったことが無いのですが、これらのツールを導入して使いこなせるようになると、パフォーマンス分析が捗ることは間違いなしですので、興味のある方はぜひお試しいただければと思います!

引き続き、現地からのレポートを続けます!