## Memo
## Memo with LLM
### Paper Information
- **Title**: PerfMon: Performance Monitoring of Host Network Stack
- **Authors**: Ranjitha K, Ankit Sharma, Malsawmsanga Sailo, Arun Siddardha, Amrit Kumar, Praveen Tammana (IIT Hyderabad), Pravein Govindan Kannan (IBM Research), Priyanka Naik (IBM Research)
- **Conference**: ACM Symposium on Cloud Computing (SoCC) 2025
- **Year**: 2025
### Paper Summary
PerfMonは、eBPFを活用してホストネットワークスタック内の各コンポーネントの処理時間を計測し、マイクロサービス間のRPCレイテンシ異常のボトルネックを自動的に特定する軽量な監視システムです。Kubernetes環境において、極めて低いオーバーヘッドで正確なボトルネック特定を実現しています。
### Detailed Explanation
- **Problem Setting**:
- マイクロサービスアーキテクチャでは、サービス間のRPCレイテンシ異常が頻繁に発生し、SLA違反の原因となる。
- これらの遅延の多くは、ホストネットワークスタック(NIC、キューイング規律(qdisc)、IP/TCPプロトコルスタック等)内のパケット処理遅延に起因する。
- しかし、スタック内部の可視性が不十分なため、どのコンポーネントがボトルネックであるかを特定するには高度な専門知識と手作業が必要であった。
- **Proposed Method**:
- **eBPFによるフック**: カーネル内のネットワークスタックの主要なパスにeBPFプログラムを配置し、パケットが各コンポーネントを通過する際のタイムスタンプを記録する。
- **コンポーネントごとの計測**: NIC、qdisc、プロトコルスタック、コンテナランタイムのインターフェースなど、ホストレベルの各コンポーネントにおける滞在時間を個別に算出する。
- **自動ボトルネック特定**: 計測された処理時間を分析し、通常時と比較して異常な遅延が発生しているコンポーネントをボトルネックとして自動的に抽出する。
- **Novelty**:
- eBPFを駆使することで、アプリケーションやカーネル本体に変更を加えることなく、軽量かつ高精度に「ホストネットワークスタック内部」のボトルネックを特定できる点。
- これまでの分散トレーシングや一般的なメトリクス監視では到達できなかった、OS内部の細かいコンポーネントレベルの可視化を実現した。
- **Experimental Setup**:
- **環境**: Kubernetesで管理されたベアメタルサーバーのクラスター。
- **対象**: コンテナ化されたマイクロサービスベースのクラウドアプリケーション。
- **評価手法**: 意図的にネットワーク遅延や負荷を注入し、PerfMonが正しくボトルネックを特定できるかと、その際のCPU/メモリオーバーヘッドを測定。
- **Experimental Results**:
- **精度**: 注入された様々なボトルネック(qdiscの詰まり、プロトコル処理の遅延など)を高い精度で特定。
- **オーバーヘッド**: 監視によるシステムへの影響は極めて小さく、実稼働環境での常時監視に耐えうる軽量性を実証した。
## Abstract
現代のクラウドアプリケーションはマイクロサービスに再構築され、複数のサーバーにわたるコンテナとしてデプロイされています。エンドユーザーのリクエストは、しばしばこれらのマイクロサービス間の複数の遠隔手続き呼出し(RPC)をトリガーします。ホストネットワークスタックにおけるパケット処理の遅延(ボトルネック)に起因するRPCレイテンシの異常は一般的です。少数のネットワークコンポーネントにおけるボトルネックがサービス間で重なり合い、多くのリクエストでSLA違反を引き起こす可能性があります。RPCレイテンシ異常の診断は、多くのホストレベルのコンポーネントが遅延に寄与し得るため、困難な課題です。ボトルネックとなっているコンポーネントを特定することは、極めて重要な第一歩です。しかし、コンポーネントごとの処理時間に関する可視性が欠如しているため、ボトルネックコンポーネントを見つけ出すには、通常、多大な手作業による労力と専門知識が必要となります。本論文では、ホストスタック内のコンポーネントのパフォーマンスを監視し、ボトルネックコンポーネントを自動的に特定する軽量なシステムであるPerfMonを提案します。我々はeBPF技術を用いてPerfMonを開発し、Kubernetesで管理されたベアメタルサーバーのクラスター上で評価を行いました。評価の結果、PerfMonは極めて低い監視オーバーヘッドで、ボトルネックコンポーネントを正確に特定できることを実証しました。