## Memo ## Memo with LLM ### 論文情報 - **タイトル**: A Unified I/O Monitoring Framework Using eBPF - **著者**: Mahendra Paipuri(Research Software Engineer, IDRIS, CNRS) - **カンファレンス**: 6th ISC HPC International Workshop on Monitoring & Operational Data Analytics (MODA @ ISC HPC 2025) - **発表年**: 2025年6月13日 ### 論文概要 [[eBPF]](extended Berkeley Packet Filter)を用いてカーネルの[[VFS]](Virtual File System)レイヤでI/Oイベントをトレースすることで、アプリケーションやファイルシステムの種類に依存しない統一的なI/Oモニタリングフレームワークを提案している。[[Prometheus]]や[[Grafana]]などのクラウドネイティブなツールと連携し、HPC・クラウド・[[Kubernetes]]等の異なるプラットフォームにわたってシステム全体のI/O監視を実現する。IORベンチマークとDarshanとの比較実験により、無視できる程度のオーバーヘッドと高い計測精度が実証されている。 ### 詳細解説 #### 問題設定 現状のHPC向けI/Oモニタリングツールは以下の課題を抱えている。 - **Darshan**などの標準ツールはMPIと密結合しており、非MPI(AI)ワークロードへの対応が限定的で、コンパイル時の修正も必要である。 - 並列ファイルシステム(LUSTREなど)のテレメトリが標準化されておらず、ノードレベルのメトリクスしか得られないことがある。 - AIワークロードはI/Oがボトルネックになりやすく、I/Oパターンの可視化が最適化に不可欠である。 理想的なI/Oモニタリングツールの要件: 1. アプリケーションおよびファイルシステムに非依存 2. コンパイル時・実行時ともにアプリケーションへの変更不要 3. 最小限のオーバーヘッド(本番ワークフローで利用可能) 4. スタックの任意レイヤでI/Oイベントを捕捉可能 #### 提案手法 - **アーキテクチャ**: eBPFプログラムがカーネルのVFS関数(`vfs_read`、`vfs_write`、`vfs_open`、`vfs_create`、`vfs_mkdir`、`vfs_unlink`、`vfs_rmdir`)をkprobeでトレースする。収集したメトリクスをCEEMS Exporterを介してPrometheusに公開し、Grafanaで可視化する。 - **アルゴリズム/手法の詳細**: - eBPFプログラムは`SEC("kprobe/vfs_write")`としてカーネルに登録される。 - イベントキーは`cgroup ID`とマウントポイントの組み合わせ(`struct vfs_event_key`)で構成され、cgroupベースのワークロード分離が可能。 - BPFマップとして`BPF_MAP_TYPE_LRU_HASH`を使用し、バイト数・呼び出し数・エラー数を累積カウントする。 - アトミック操作(`__sync_fetch_and_add`)でマルチCPU環境での競合を防止。 - **実装上の工夫**: - カーネルモジュール不要・カーネル再コンパイル不要・再起動不要でランタイムに機能拡張できる。 - 複数CPUからのイベント順序を保持するため、**circular multiple-producer single-consumer buffer(eBPF ring buffer)**を使用。 - MPI関数(OpenMPI / Intel MPI)のユーザー空間トレースにも拡張可能であり、OpenTelemetry SDKを用いてJaeger等に送信するPoC実装も存在する。 #### 新規性 Darshan等の既存手法は以下の制約があった:MPIへの強い依存性、コンパイル時修正の必要性、集計メトリクスしか得られない粗い時間粒度(〜52秒ビン)。 本研究はVFSレイヤでトレースすることで、ファイルシステムの種類(ローカルFS・NFS・LUSTRE等)に関わらず統一的な監視を実現し、2〜10秒粒度の準リアルタイムI/O帯域幅計測を可能にした。 #### 実験設定 - **実験環境 1(単ノードNFS評価)**: - NFS サーバーをループバック上にマウントし、ネットワークノイズを排除 - IOR ベンチマーク(転送サイズ 1, 2, 4, 8, 16 MiB)をPOSIXおよびMPIIOで各8回実施 - CEEMS ExporterのPrometheusスクレイプ間隔: 2秒 - **実験環境 2(マルチノード LUSTRE評価)**: - Jean Zay HPCプラットフォーム(フランス国立HPC、IDRIS管理) - 4ノード x 16 MPIプロセス、転送サイズ 1 MiB、LUSTRE ファイルシステム - Darshan(binインターバル〜52秒)とCEEMS Exporter(scrape間隔10秒)を並行稼働 - **評価指標**: - **Relative overhead**(1に近いほど良い): `IOR帯域(exporter無し)/ IOR帯域(exporter有り)` - **Relative error**(1に近いほど良い): `IOR報告帯域 / exporterが報告する瞬間帯域の平均` #### 実験結果 - **定量的評価**: - 単ノードNFSテストにおいて、CEEMS Exporterのオーバーヘッドは無視できる程度(Relative overhead ≈ 1)であることが示された。 - Relative errorも1に近い値を示し、IORが報告するスループットとeBPFによる瞬間帯域値の間に高い一致が確認された。 - Jean ZayのLUSTREマルチノードテストでも、Darshanの集計メトリクスと比較してCEEMS Exporterが整合した帯域幅計測を実現した。 - **アブレーションスタディ**: 明示的なアブレーション実験は行われていないが、NFSとLUSTREという異なるファイルシステム、POSIXとMPIIOという異なるAPIでの検証により、手法の汎用性が確認されている。 #### 考察 - VFSレイヤでのトレースは、ローカルFS・NFS・LUSTREなどあらゆるファイルシステムに対して透過的に機能するため、ポータビリティが高い。 - cgroupベースのキー管理により、SLURM・OpenStack・Kubernetesなど異なるリソースマネージャのワークロードを区別して監視できる。 - eBPF ring bufferによりマルチCPUイベント順序が保証され、正確な時系列データが取得できる。 - **限界**: ユーザー空間のI/O(メモリマップドファイルなど`read()`/`write()`を通さないアクセス)はVFSトレースでは捕捉できない可能性がある。MPI関数トレースのPoC実装はまだ初期段階であり、本番適用には追加検証が必要である。 #### 強み - ゼロインストルメンテーション(アプリケーション改変不要)で幅広いワークロードに対応 - HPC・クラウド・Kubernetesにまたがるプラットフォーム横断的な統一監視を実現 - Prometheus・Grafana・Jaegerなど既存のクラウドネイティブエコシステムと自然に統合できる - eBPFによる連続プロファイリング(CEEMS初のHPC向け連続プロファイリング対応)と組み合わせることで完全な監視・プロファイリングスタックを構成できる - オープンソース(GitHub: `mahendrapaipuri/ceems`)として公開されており、再現性が高い #### 弱点・課題 - 本発表はワークショップレベルの発表であり、大規模・長期間の本番評価は今後の課題である - メモリマップドI/Oなど、VFS経由でないファイルアクセスのカバレッジについての言及がない - MPI関数トレース(OpenTelemetry連携)はPoC段階であり、本番利用のための成熟度が不明 - Darshan比較はbinインターバルが異なる(52秒 vs 10秒)ため、直接比較に注意が必要 ## Abstract I/Oモニタリングおよびプロファイリングツールの相互運用性は、LUSTRE・Spectrum Scale・NFSなど基盤となるファイルシステムや、バッチジョブ・VM・コンテナ化ワークロードなどのリソースマネージャへの強い依存性により、非常に限られている。広く普及している汎用モニタリングツールは、アプリケーションのI/O挙動を理解するために必要とされるI/Oアクティビティの時間情報を欠くことが多い。アプリケーションおよびコンピューティングプラットフォームの多様化の進展により、I/O特性評価においてより高い柔軟性と広い対応範囲が求められている。本研究では、観測可能性およびクラウドネイティブの分野で急速に普及しているeBPF(extended Berkeley Packet Filter)技術を用いてI/Oアクティビティを監視するフレームワークを提案する。eBPFによってカーネルのVFS(Virtual File System)関数をトレースすることで、HPC・クラウドハイパーバイザー・Kubernetesなどの異なるプラットフォーム上のI/Oアクティビティを監視することが可能になる。eBPFプログラムによってトレースされたメトリクスをPrometheusなどの高性能時系列データベースに格納することで、異なる種類のローカルまたはリモートファイルシステムを使用するコンピューティングプラットフォームを統一的にシステム全体で監視することが可能になる。本フレームワークはファイルシステムおよびアプリケーションに依存しない形でI/Oアクティビティを監視し、IORベンチマーク結果を基準として提案フレームワークのオーバーヘッドと精度を定量化した実験結果を示す。結果はフレームワーク使用時のオーバーヘッドが無視できるほど小さく、提案手法で報告される帯域幅がIORテスト結果と非常に良好な一致を示すことを示している。