summary:
Poll Mode Driver,HugePages,NUMA最適化など様々な最適化技術を通じて1コアあたり数千万パケット/秒の処理性能を達成する.通信機器だけでなく,クラウド基盤,分散データベース,ストリーム処理システムなど多様な分野で活用されている.
元々は2010年にインテルによって開発され,初期は通信機器やネットワークアプライアンス向けに最適化されていたが,その高いパフォーマンスが評価され,現在ではクラウド基盤や分散システム,高速データベース処理,NFV[Network Functions Virtualization],SDN[Software-Defined Networking]にも活用されるに至っている.2017年にLinux Foundationに移管され,現在はコミュニティ主導で開発が継続されており,広範なアーキテクチャ[x86,ARM,PowerPC,RISC-Vなど]とNICベンダー[Intel,Mellanox/NVIDIA,Broadcom,Marvellなど]に対応している.
DPDKの基本的な思想は,カーネル空間で処理されていた従来のパケット受信・送信処理を,ユーザー空間に引き上げることにある.具体的には,NIC[Network Interface Card]から直接パケットバッファを取得し,メモリコピーやカーネルとのコンテキストスイッチを極力排除することで,レイテンシの削減とスループットの向上を実現している.そのために,Poll Mode Driver[PMD]と呼ばれるノンブロッキングI/Oモデルを採用しており,これにより割り込み処理のオーバーヘッドも回避している.また,SR-IOV[Single Root I/O Virtualization]やVirtio等の仮想化環境でのI/O最適化技術とも統合されている.
DPDKはNUMA[非一様メモリアクセス]アーキテクチャへの最適化,HugePagesによる大規模メモリマップ,高速リングバッファ,ロックレスなデータ構造,ゼロコピー転送機構など,さまざまな低レベル最適化を通じて,1コアあたり数千万パケット/秒以上の処理性能を実現している.特に40GbE/100GbE以上の高速ネットワーク環境においてその真価を発揮する.さらに,標準的なユーザー空間APIを提供しており,アプリケーションはカーネルを経由せず,直接NICと通信できる.DPDKは複数のコンポーネントライブラリ[EAL,メモリプール,リングバッファ,パケット分類,暗号化アクセラレーションなど]から構成され,アプリケーション開発者は必要な機能を選択して利用できる.
このようなDPDKの技術的特徴は,単にネットワークルータやスイッチの分野にとどまらず,データベースサーバー[DBサーバー]の高速化にも応用されつつある.特に分散データベースやトランザクション処理が集中するオンライン処理系[OLTP],または大量データのバッチ転送が求められる分析処理系[OLAP]において,DPDKの導入はネットワークIOのボトルネックを根本から解消し得る.ScyllaDBやSEDA[Staged Event-Driven Architecture]ベースのデータベースエンジンでは,すでにDPDKを活用した高性能化が実現されている.
通常のDBサーバーでは,クライアントとの接続やレプリケーション,ノード間の通信においてTCP/IPスタックを通じたパケット処理が発生し,これはカーネル空間での割り込み処理やコンテキストスイッチ,メモリコピーといったコストを伴う.これに対して,DPDKを導入すれば,ユーザー空間から直接NICのバッファにアクセスし,パケットの受信・送信を非同期かつ高速に行うことが可能となる.結果として,データベース層のトランザクションスループットやレスポンスタイムは大幅に改善される.特に小さなパケットサイズでの高頻度トランザクション処理において,DPDK導入による効果が顕著となる.
さらに,変更データキャプチャ[CDC]ツールとの連携においても,DPDKは有用である.Flink CDCやKafka Connect,Debeziumなどのリアルタイムストリーム処理パイプラインでは,RDBMSからのデータ変更ログをKafkaPulsarなどのメッセージングシステムに中継する際,大量のネットワークトラフィックが発生する.これらの通信層にDPDKが組み込まれることにより,全体の転送レイテンシとネットワーク負荷が大きく削減される.一方で,DPDKを利用したシステムでは,カーネルのネットワークスタックをバイパスするため,従来のモニタリングツールやセキュリティ機構との互換性に課題が生じることもある.
DPDKは,単なるネットワーク高速化ライブラリではなく,データ処理アーキテクチャ全体の設計に影響を及ぼすインフラ技術である.とりわけ,ゼロコピー転送,NUMA最適化,ユーザー空間IOの思想は,将来の分散データベースやストリーミングエンジンにとって不可欠な基盤技術であると言える.最近では,SPDK[Storage Performance Development Kit]との組み合わせによる,ネットワークとストレージの両方をユーザー空間で高速処理するアーキテクチャも注目されている.データベースが単なる記録装置からリアルタイム処理系へと進化する中で,DPDKのような高速IO基盤の重要性は高まっている.
Mathematics is the language with which God has written the universe.