インテルのみ表示可能 — GUID: ygy1620008114652
Ixiasoft
3.5.2.4.1.3. Testpmdのインストールと構築
注: test-pmd は CentOSでのみサポートされており、Ubuntuではサポートされていません。
MCDMAをテストする際に test-pmd を使用する場合は、次の手順を使用します。それ以外の場合に、perfq_app を使用する場合は、PMDのインストールとテスト・アプリケーション (CentOS) に進みます。
- dpdkをダウンロードし、ビルドパッチを適用します。
rootをユーザーとして次のコマンドを実行します。
$ cd software/dpdk/dpdk/patches/v20.05-rc1
$ sh apply-patch.sh
- ビルド・コンフィグレーションでIGB_UIOモジュールを有効にします。
./config/common_baseの次のマクロを「y」に更新します。デフォルトでは、igb_uioは無効になっています。
CONFIG_RTE_EAL_IGB_UIO=y
- チャネルが16を超える場合は、次のマクロを有効にします。
CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=128
- drivers/net/mcdma/rte_pmd_mcdma.h にある Testpmd の IFC_BUF_REUSE マクロの定義を解除します。これはデフォルトでは有効になっています。
#undef IFC_BUF_REUSE
- Txドロップカウントを回避するには、drivers/net/mcdma/rte_pmd_mcdma.h ファイルで次のマクロを有効にします。
これは、pkt-gen にのみ適用されます。ループバックの場合はこの手順をスキップします。
#define AVOID_TX_DROP_COUNT
- DPDKを構築してインストールします。
次の手順を実行します。
- $ export DPDK_DIR= <cloned dir>/software/dpdk/patches/v20.05-rc1/dpdk
- $ export RTE_SDK=${DPDK_DIR}
- $ export DPDK_TARGET=x86_64-native-linuxapp-gcc
- $ export RTE_TARGET=x86_64-native-linuxapp-gcc
- $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
- $ make config T=x86_64-native-linuxapp-gcc
- $ rm -rf x86_64-native-linuxapp-gcc
- $ make -j32 install T=$DPDK_TARGET DESTDIR=install
- UIOベースモジュールをインストールします。
$ modprobe uio
- igb_uioモジュールをインストールします。
$ insmod x86_64-native-linuxapp-gcc/build/kernel/linux/igb_uio/igb_uio.ko
- デバイスをigb_uioドライバーに結び付けます。
$ ./usertools/dpdk-devbind.py -b igb_uio <BDF>
次の例のようになります。
$ ./usertools/dpdk-devbind.py -b igb_uio 01:00.0
- Testpmd cliを実行します。
キューの数 | Test PMDコマンドライン (ループモード) |
---|---|
1 | ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -w 0000:01:00.0 -- --tx-first\ --nb-cores=1 --rxq=1 --txq=1 --rxd=512 --txd=512--max-pkt-len=<payload len> --no-flush-rx\ --stats-period 1 --burst=127 --txpkts=<payload len> |
2 | ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -w 0000:01:00.0 -- --tx-first\ --nb-cores=2 --rxq=2 --txq=2 --rxd=512 --txd=512 --max-pkt-len=<payload len> --no-flush-rx\ --stats-period 1 –burst=254 --txpkts=<payload len> |
3 | ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -w 0000:01:00.0 -- --tx-first\ --nb-cores=3 --rxq=3 --txq=3 --rxd=512 --txd=512 --max-pkt-len=64 --no-flush-rx\ --stats-period 1 --burst=508 --txpkts=<payload len> |
4 | ./x86_64-native-linuxapp-gcc/app/testpmd -c ff -n 4 -w 0000:01:00.0 -- --tx-first\ --nb-cores=4 --rxq=4 --txq=4 --rxd=512 --txd=512 --max-pkt-len=64 --no-flush-rx\ --stats-period 1 --burst=127 --txpkts=<payload len> |
8 | ./x86_64-native-linuxapp-gcc/app/testpmd -c fff -n 4 -w 0000:01:00.0 -- --tx-first\ --nb-cores=8 --rxq=8 --txq=8 --rxd=512 --txd=512 --max-pkt-len=<payload len> --no-flush-rx\ --stats-period 1 --burst=127 --txpkts=<payload len> |
フォワーディング・モード | Test PMDコマンドライン |
---|---|
Rx専用モード | ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -w 0000:01:00.0 --\ --forward-mode=rxonly --nb-cores=1 --rxq=1 --txq=1 --rxd=512 --txd=512 --max-pkt-len=<payload len>\ --no-flush-rx --stats-period 1 --burst=127 --txpkts=<payload len> |
Tx専用モード | ./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -w 0000:01:00.0 --\ --forward-mode=txonly --nb-cores=1 --rxq=1 --txq=1 --rxd=512 --txd=512 --max-pkt-len=<payload len>\ --no-flush-rx --stats-period 1 --burst=254 --txpkts=<payload len> |
注: --burst=0: 0に設定すると、ドライバーのデフォルトが使用されます (つまり、バーストサイズ16)。それ以外の場合は、Test PMDのデフォルトのバーストサイズ (つまり32) が使用されます。Txの場合、デフォルトのTestpmd pkt-lenは64です。
次のコマンドを使用して、test-pmdを実行します。
$./x86_64-native-linuxapp-gcc/app/testpmd -c f -n 4 -w 0000:01:00.0 -- --tx-first --nb-cores=1 --rxq=1 --txq=1 --rxd=512 --txd=512 --max-pkt-len=64 --no-flush-rx --stats-period 1 -- burst=127 --txpkts=64
使用するパラメーター
- デバイスのBDF (-w 0000:01:00.0)
- フォワーディング・モード (--tx-first)
- コアの数 (--nb-cores=1)
- ポートごとのRXキューとTXキューの数 (--rxq=1 --txq=1)
- RXおよびTXリングの記述子の数 (--rxd=512 --txd=512)
- 最大パケット長 (max-pkt-len=64)
- PERIOD秒ごとに統計を表示 (--stats-period 1)
- バーストあたりのパケット数 (--burst=127)
注意: このハードウェア・テストは、 インテル® Stratix® 10 GX HタイルPCIe Gen3 x16のコンフィグレーションで実行しています。