【でぃーぴーでぃーけー】

DPDK とは?

公開:
💡 NICのキューを直接見に行き、まとめて処理する

高速なパケット処理のためのライブラリとドライバ群。代表的な構成では、ユーザー空間のアプリがNICのキューをポーリングし、パケットをまとめて処理する。

📌 このページのポイント
DPDK ユーザー空間でポーリングする代表的な構成 NIC RXキュー PMD バースト受信 アプリ パケット処理 キューを繰り返し確認する。常時ポーリングはCPUを使う 同じRXキューの同時操作を避けるなど、担当と同期を設計
NICのキューを直接見に行き、まとめて処理する
ひよこ ひよこ
ネットワークを速くするためのキットなの?
ペンギン先生 ペンギン先生
高速なパケット処理を作るためのライブラリとドライバ群だよ。データプレーンは、パケットを実際に受け取り、振り分け、送る部分のこと。代表的な構成では通常のカーネルのネットワーク処理経路を迂回して、ユーザー空間で扱うんだ。
ひよこ ひよこ
パケットが来たことをどうやって知るの?
ペンギン先生 ペンギン先生
PMDではアプリ側が受信キューを繰り返し見に行くポーリングを使うよ。到着のたびに通知されるのを待つ方式と比べ、通知や切り替えの費用を減らせる。DPDKのすべての構成で割り込みを一切使わない、という意味ではないよ。
ひよこ ひよこ
1個ずつ処理するのかな?
ペンギン先生 ペンギン先生
複数のパケットをバーストとしてまとめて取り出せるよ。呼び出しの回数などを減らせる反面、実際に何個取れるかや処理時間はトラフィックに左右される。まとめれば必ず遅延まで減るとは限らないんだ。
ひよこ ひよこ
コアを増やして同じキューを読めば速くなる?
ペンギン先生 ペンギン先生
そのままではいけないよ。文書では、同じRXキューを複数コアから同時にポーリングしない前提がある。別々のキューを担当させるなど、共有対象と同期を設計する必要があるんだ。
ひよこ ひよこ
いつでもDPDKを使うべきなの?
ペンギン先生 ペンギン先生
常に確認を続ける構成は、通信が少ない間もCPUを使うよ。省電力の方法やドライバの違いもあるけれど、対応機器、メモリ配置、NUMA、運用の手間まで検討しよう。必要な通信量や遅延に対して、普通のネットワークAPIで足りるかも比べたいね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「DPDK」は「NICのキューを直接見に行き、まとめて処理する」と押さえておこう!
📖 おまけ:英語の意味
「Data Plane Development Kit」 = データプレーンの開発キット
💬 Data Plane Development Kitは「データプレーンの開発キット」という意味の表現だよ。

参考資料

← 用語集にもどる