Multi Channel DMA Intel® FPGA IP for PCI Express* デザイン例のユーザーガイド

ID 683517
日付 10/06/2023
Public
ドキュメント目次

3.5.2.4.1.3. Testpmdのインストールと構築

注: test-pmd は CentOSでのみサポートされており、Ubuntuではサポートされていません。
MCDMAをテストする際に test-pmd を使用する場合は、次の手順を使用します。それ以外の場合に、perfq_app を使用する場合は、PMDのインストールとテスト・アプリケーション (CentOS) に進みます。
  1. dpdkをダウンロードし、ビルドパッチを適用します。

    rootをユーザーとして次のコマンドを実行します。

    $ cd software/dpdk/dpdk/patches/v20.05-rc1

    $ sh apply-patch.sh

  2. ビルド・コンフィグレーションでIGB_UIOモジュールを有効にします。
    ./config/common_baseの次のマクロを「y」に更新します。デフォルトでは、igb_uioは無効になっています。
    CONFIG_RTE_EAL_IGB_UIO=y
  3. チャネルが16を超える場合は、次のマクロを有効にします。
    CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=128
  4. drivers/net/mcdma/rte_pmd_mcdma.h にある TestpmdIFC_BUF_REUSE マクロの定義を解除します。これはデフォルトでは有効になっています。
    #undef IFC_BUF_REUSE
  5. Txドロップカウントを回避するには、drivers/net/mcdma/rte_pmd_mcdma.h ファイルで次のマクロを有効にします。
    これは、pkt-gen にのみ適用されます。ループバックの場合はこの手順をスキップします。
    #define AVOID_TX_DROP_COUNT
  6. DPDKを構築してインストールします。
    次の手順を実行します。
    1. $ export DPDK_DIR= <cloned dir>/software/dpdk/patches/v20.05-rc1/dpdk
    2. $ export RTE_SDK=${DPDK_DIR}
    3. $ export DPDK_TARGET=x86_64-native-linuxapp-gcc
    4. $ export RTE_TARGET=x86_64-native-linuxapp-gcc
    5. $ export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
    6. $ make config T=x86_64-native-linuxapp-gcc
    7. $ rm -rf x86_64-native-linuxapp-gcc
    8. $ make -j32 install T=$DPDK_TARGET DESTDIR=install
  7. UIOベースモジュールをインストールします。

    $ modprobe uio

  8. igb_uioモジュールをインストールします。

    $ insmod x86_64-native-linuxapp-gcc/build/kernel/linux/igb_uio/igb_uio.ko

  9. デバイスをigb_uioドライバーに結び付けます。

    $ ./usertools/dpdk-devbind.py -b igb_uio <BDF>

    次の例のようになります。

    $ ./usertools/dpdk-devbind.py -b igb_uio 01:00.0

  10. 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
使用するパラメーター
  1. デバイスのBDF (-w 0000:01:00.0)
  2. フォワーディング・モード (--tx-first)
  3. コアの数 (--nb-cores=1)
  4. ポートごとのRXキューとTXキューの数 (--rxq=1 --txq=1)
  5. RXおよびTXリングの記述子の数 (--rxd=512 --txd=512)
  6. 最大パケット長 (max-pkt-len=64)
  7. PERIOD秒ごとに統計を表示 (--stats-period 1)
  8. バーストあたりのパケット数 (--burst=127)
注意: このハードウェア・テストは、 インテル® Stratix® 10 GX HタイルPCIe Gen3 x16のコンフィグレーションで実行しています。
注: PタイルGen4 x16でのハードウェア・テストは、今後のリリースで追加される可能性があります。