DPDKプロフィール

DPDK(データプレーン開発キット)主にLinuxシステムに基づいて、開発する6WIND、Intelおよび他の企業では、ライブラリのコレクションのために実行されていて、高速なパケット処理を駆動、データ処理が大幅にパフォーマンスとスループットを向上させることができ、データを改善生産面アプリケーション。

DPDKは、ポーリング(ポーリング)のではなく、データパケットを処理するための割り込みを使用しました。パケットを受信すると、DPDK過負荷ネットワークカードドライバは、割り込みを介してCPUに通知しないが、直接メモリへのデータパケットに、直接処理DPDKによって提供されるインターフェースを介してアプリケーション層ソフトウェアを配信するために、これは、CPUの節約します中断時間とメモリコピー時間。

なぜDPDKは必要
どこがボトルネックですか?
=>システムが戻ってアプリケーションに処理結果、処理を完了するために必要な適切なカーネル関数を呼び出し、カーネルのアプリケーションの要求にシステムコールを呼び出します
=>割り込み処理 
=>ユーザーを切り替えます空間とカーネル空間=>データは、ユーザプレーンデータのレプリケーションにカーネル面をコピーし
、ユーザーを処理プロセスのユーザーを切り替え=>スケジューリングとコンテンツスケジュールのスイッチと内容
=>非効率は、メモリの読み出し/書き込み 、キャッシュミスが十分に効果的なメモリアクセスではない、多くのキャッシュミスは、キャッシュメモリは、データをキャッシュするために使用されています。CPUは、そうでない場合は、「行方不明」(ミス)として知られている(ヒット)「ヒット」として知られているキャッシュキャッシュ内のデータへのアクセスを持っています。
=>共有に関与ロック/アンロックデータ構造のアクセスが必要ですロック操作構造を共有しました
以上のいくつかは許容できない、リアルタイムシステムのために、クロック・サイクルの多くを過ごすことになります。
問題にどのように対処する?
=>利用MODEポーリングドライバ(PMD)の代わりに中断駆動型ネットワークデバイスドライバの
=>ユーザー空間カーネル空間INSTEAD直接ユーザ空間から周辺機器へのアクセスのからデバイスへのアクセス
=> PCIeデバイス間の最適化されたメモリ・アクセスキャッシュメモリへのアクセスを最適化する
  ==>、巨大ページ
  ==>パケット処理バッチは
  ==> HW / SWコントロールprefethcing、データのダイレクトIO
  ==>データアライメント
=>ロックフリーするために、共有キューを使用するロックなしで共有キューデータ構造を最適化して最適化します構造は、
=>に単一のソフトウェア・スレッドをバインド する論理コア
私たちが行う必要があるか?
=>ザ・カーネルNICドライバにアンロードして、プールにモードドライバ=> DPDKセットアップの初期化時間を切り替える必要があり、通常のネットワークコントローラ(NIC)のインターフェース
=> => DPDK SET巨大ページメモリする必要がありますセットアップの初期化時には、巨大なページを(グレップのhugepagesは/ proc /設定 meminfoの): システムプロセスは、仮想アドレスを介してメモリにアクセスしているが、CPUは実際の物理メモリアドレス・アクセス・メモリを駆動するためにそれを変換する必要があります。変換効率を向上させるために、CPUは、仮想メモリアドレスと物理メモリアドレスとの間の最近のマッピングをキャッシュし、CPUによって維持マッピングテーブルに格納されています。メモリのアクセス速度を最大化するためには、マッピングテーブルにできるだけ多くのマッピングを保存する必要があります。Linuxでは、メモリはデフォルトで、各ページには、大規模な物理メモリ場合は、マッピングテーブルのエントリが非常にCPUの検索効率に影響を与えることを意味し、4Kで、分割ページの形式です。メモリサイズが固定されているので、エントリのマッピングテーブルを低減するためには、ページのサイズを大きくするための唯一の方法を取ることができます。
論理コアへ=>バインド・ソフトウェア・スレッド => CpuInfo.dat

おすすめ

転載: www.cnblogs.com/biggerjun2015/p/11723011.html