グーグルのクラウドを支えるテクノロジー
[IT研修]注目キーワード
Python
Power Platform
最新技術動向
生成AI
Docker
Kubernetes
第222回 SmartNICのCPUコアを用いたシステム処理のオフロード(パート2)
(中井悦司)
2026年5月26日公開
はじめに
前回に続いて、2025年に公開された論文「Wave: Offloading Resource Management to SmartNIC Cores」に基づいて、タスクスケジューラやメモリ管理の処理など、OSの管理タスクをSmartNICのCPUコアにオフロードするアーキテクチャー「Wave」について解説します。今回は、Waveの具体的な仕組みを説明します。
Waveの課題
Waveの仕組みを説明する前に、Waveを実装する上での課題について触れておきます。それは、PCIeを経由したデータのやり取りです。タスクスケジューラやRPCのようなシステム処理は、ホストマシンのCPUコアをアイドル状態で遊ばせないために、マイクロ秒未満での意思決定が求められます。一方、ホストとSmartNICを接続するPCIeインターフェースの通信速度は、CPUチップ内部のインターコネクトに比べてはるかに遅く、往復で約1マイクロ秒のレイテンシーが発生します。つまり、システム処理の意思決定の経路上に、PCIe経由の通信が挟まることで、求められる処理速度に対する大きなボトルネックが発生します。この課題をWaveがどのように解決(隠蔽)しているかは、次回にあらためて解説します。今回は、まずは、Waveの基本的な仕組みを説明します。
Waveエージェントとのコミュニケーション
前回の記事で説明したように、Waveではホスト側のLinuxカーネルとSmartNIC上のCPUコアで稼働するエージェントが、メモリー上の「キュー」を介してメッセージ(状態変化の通知)やトランザクション(意思決定のコミット)をやり取りします(図1)。

図1 メッセージキューを利用したコミュニケーション(論文より抜粋)
このキューを実装するデータ転送のメカニズムは、扱うシステム処理の要件に応じて「MMIO(Memory-Mapped I/O)」と「DMA(Direct Memory Access)」の2つから選択できるように設計されています。ここで、それぞれのメリットとデメリットをまとめておきます。
まず、DMAのメリットとデメリットは次になります。
- メリット: 非常に高いスループットでのデータ転送が可能です。SmartNICのDMAエンジンがホストCPUの代わりにデータ転送を行うため、ホストCPUのサイクルを消費せずに済みます。
- デメリット: 転送を開始するまでの準備が必要となるため、通信の開始に遅延が生じます。そのため、レイテンシーに敏感な通信には不向きです。
そして、MMIOのメリットとデメリットは次になります。
- メリット: メモリーアドレスに対する通常の読み書きとして直接通信できるため、転送の開始にかかる時間がDMAに比べて短く、低レイテンシーな通信が可能です。少量のデータを素早くやり取りする際に適します。
- デメリット: ホストCPUとSmartNIC上のCPUコアのそれぞれがSmartNIC上のメモリーを読み書きします。そのため、ホストCPUがデータを読み取る際は、PCIeのラウンドトリップによる大きな遅延が発生します。そのため、大量のデータをやり取りする用途には不向きです。(ホストCPUがデータを書き込む際はキャッシュを利用するので、ホストCPU側から見れば、大きな遅延は発生しません。)
Waveエージェントの実装例
冒頭の論文では、Waveを用いて、次の3つのシステム処理をSmartNICへオフロードした実装例が紹介されています。
- タスクスケジューラ
前回紹介した「ghOSt」のアーキテクチャーを利用して、実行するスレッドをどのホストコアに割り当てるかを決定するエージェントをSmartNIC上に配置します。スケジューリングは1マイクロ秒未満の応答性が求められるため、通信には低レイテンシーなMMIOを両方向で使用します。また、キューに入ったメッセージを遅延なく受け取るために、エージェントは常にキューをポーリングしてメッセージを待ち受けます。そして、エージェントが決定を下すと、MSI-Xにより割り込みとトランザクションAPIを利用して、ホスト側のLinuxカーネルに、実際のコンテキストスイッチを実行させます。
- メモリ管理
仮想ページから物理ページへのマッピングや、ページ移行を管理する処理をオフロードします。この論文では、特に、メモリへのアクセス頻度を機械学習で分析して、高速なDRAMと低速なストレージ間にデータを最適配置する「SOL」という高度な計算を伴うポリシーを実装しています。SOLをホストCPUで実行すると、多数のCPUコアが計算処理に占有されてしまいますが、これをSmartNICのCPUコアにオフロードする形になります。この処理はアドレス空間全体のページテーブル情報をやり取りするために、1Gbps以上の高いスループットが必要です。そのため、両方向の通信にDMAを使用します。
- Stubby RPC
Google社内のgRPCに相当する「Stubby」のデータプレーン(TCP処理など)と、受信したRPCパケットをホストのどのコアに割り当てるかという判断をオフロードします。RPCは処理時間が非常に短く、スループットは中程度であるため、通信にはMMIOを使用します。これらの処理をホストCPUで行う場合、SmartNICからホストCPUにパケットデータをPCIe経由で転送する必要があるため、処理の遅延が大きくなります。SmartNIC上で直接処理することで、ホストCPUの計算リソース(論文内の評価実験では8コア分)をアプリケーションのために解放することができます。
次回予告
今回は、2025年に公開された論文「Wave: Offloading Resource Management to SmartNIC Cores」に基づいて、OSの管理タスクをSmartNICのCPUコアにオフロードするアーキテクチャー「Wave」について、より詳細な実装内容を紹介しました。次回は、Waveの課題である「PCIeのレイテンシー」に対応するための最適化技術、そして、Waveの性能評価データを紹介します。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
CTC教育サービス 関連コース
[IT研修]注目キーワード
Python
Power Platform
最新技術動向
生成AI
Docker
Kubernetes
「グーグルのクラウドを支えるテクノロジー」コラム一覧へ
コラム一覧へ