SmartNICで負荷をオフロード

こんにちは、坂野です 🙂

近年、NIC(Network Interface Card)にARM等のプロセッサを搭載し、汎用的な処理を可能とした「SmartNIC」が登場してきています。
製品によっては、SmartNIC上でLinux OSが動作できるようなものもあり、CPU負荷を柔軟に肩代わりできるものとして期待されています。
ただ、黎明期の技術であることから、SmartNICの効果的な使い方については、まだ明らかでない部分が多いようです。

このSmartNICに関し、以下の国際会議論文を先日の研究室ミーティングで紹介・議論しました。

  • タイトル: ”Offloading distributed applications onto smartNICs using iPipe”
  • 著者: Ming Liu, Tianyi Cui, Henry Schuh, Arvind Krishnamurthy
  • 発表: ACM SIGCOMM 2019
  • URL: https://dl.acm.org/doi/10.1145/3341302.3342079

この論文では、ここ数年でリリースされたSmartNIC製品4機種(※)を用いて、SmartNICの性能特性を分析しています。
また、SmartNICを有効利用するためのフレームワークiPipeを提案し、実際にiPipeを用いた分散アプリケーション3種(分散KVS他)を実装して、CPU負荷軽減について実機で評価をおこなっています。
実験では、DPDKベースの実装と比較し、CPU負荷をより軽減でき、またスループットと遅延についても良い性能が得られることが示されています。(詳細は原論文を参照してください)

※ Marvell社 LiquidIO II CN2350 & CN2360, Mellanox社 BlueField 1M332A, Broadcom社 Stingray PS225