[論文]Ensō: A Streaming Interface for NIC-Application Communication | USENIX

投稿者: | 2024年1月5日

Ensō: A Streaming Interface for NIC-Application Communication | USENIX

Introduction

現在のアーキではNICとSW間でfixed size packet bufferがやりとりされる。

Linux: sk_buffs

DPDK: mbufs

NICはTSO, LROオフロードし複数パケットのデータを結合しSWに引き渡す。Fixed size packet bufferのサイズに合わすためデータをpacket bufferサイズに分割しないといけない。

問題点①:アプリに対して、MTUサイズのPacket bufferに分割された受信データを抽象化し、Packet bufferを意識することなく受信データをアクセスさせる必要がある。効率が悪い

Packet bufferサイズは効率を考えるとMTUサイズになる

Packet bufferが細かく分割されるため、NICからホストメモリのpacket bufferにコピーした後に、さらに①アプリ領域へのメモリコピー or ②アプリがパケットバッファを処理、のどちらかをする必要がある。

問題点② キャッシュ効率が悪い

データがメモリ上に分散するため効率が悪い

問題点③ パケットごとにメタデータが必要で、メタデータ通信のためのメモリアクセスと帯域消費が増える

提案手法: Enso。NIC-SW間の可変長チャンクデータ(Streaming)のNIC-SW間のAPI。

解決策①:ring bufferの使い方を変える

従来:ring bufferにdescriptorのみを格納。

提案:ring bufferにデータを格納

効果①: メタデータアクセス削減、notify削減。

Ensō (cmu.edu)

Ensō (cmu.edu)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です