2017-09-08 18 views
2

Dell PowerEdgeサーバーに接続されたIntel x520およびx540デュアルポートNICを使用しています。すべてのNICポートは10Gbpsで動作するため、合計40Gbpsです。システムには、Xeon E5-2640 v3 CPU(Haswell Microarchitecture)を含む2つのソケットがあります。PCIeとDMAのベンチマーク方法

私は直面している多くの問題があり、PCIeとDMAベンチマークを使用して解決できます。しかし、私は同じことをするための適切な方法を見つけることができませんでした。私はDPDKベースのドライバとライブラリ(64バイトパケット)でも40Gbpsのスループットを達成できません。私は64バイトのサイズで実験を行う必要があり、パケットサイズを変更することはできません。

私は、DPDK-pktgenを使用してパケットを生成し、Intel-PCM、./pcm-pci.xを使用してイベントを数えます。しかし、カウントは1つの方法です。つまり、イベントの数を数えているので、システムがサポートできるイベントの最大数がわからないことがあります。 pcm-pci.xからの結果:

Skt PCIeRdCur RFO  CRd  DRd  ItoM PRd WiL 
0  73 M  3222 K 784 K 63 M  52 M  0 2791 K 

私のNICはソケット0に接続されているので、ソケット1の結果を出していません。

PCIeバスとDMAエンジンをベンチマークする方法はありますか?パケット処理(ハードウェアのレイテンシを測定するためにrdtsc()を使用することはできません)のためにIOサブシステム(各レベル)で正確なレイテンシを得る方法はありますか?

答えて

0

あなたのCPUコアが100%使用率で動作しているかどうかは言及していませんか?最大容量で動作していて、回線速度が40Gbpsに達していない場合は、ソフトウェアに関連する可能性があります。

SystemTapをご覧ください。カーネルのイベントや機能の実行時間、遅延、ジッタ(ヒストグラムの作成)をデバッグして記録することができます。 https://blog.cloudflare.com/revenge-listening-sockets/

これは実際にあなたが要求したものではありませんが、テストでボトルネックを絞り込むのに役立ちます。 SystemTapを使用すると、カーネルの関数呼び出しのカウント、実行時間(遅延)、ジッタを監視することができます。また、Linuxでのperfは、システムのパフォーマンス(コンテキストスイッチ、分岐失敗など、hereおよびhereを参照)あなたのソフトウェアのボトルネックを絞り込むことができます。

これは、このようなハードウェアと直接対話している関数にあなたを導く可能性がありますhttp://elixir.free-electrons.com/linux/latest/source/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c#L8000

^説明:

WRITELは、I/Oアドレスマップされたメモリへの「ロング」を書き込みます。この場合、アドレスはtx_ring-> tail(ハードウェアアドレス)であり、書き込まれる値は です。 です。このデバイスへの書き込みによって、デバイス がトリガされ、追加のデータがRAMからDMAされる準備ができており、 がネットワークに書き込まれたことを知らせます。

これらのツールを使用すると、レイテンシを引き起こしているソフトウェア機能につながる可能性があります。たとえば、キャッシュミス率が高いなどです。

編集

また、それはあなたが使用していることを、DPDKとの良好なパフォーマンスのために私の経験では非常に重要であるあなたのOSのバージョン、カーネルバージョン、NICドライバおよびファームウェアのバージョンなどについては言及しませんでした最新のNICファームウェア、ドライバ、最近のKernelビルドなどがあります。

関連する問題