Framework: Bump DPDK 20.08 71/28571/21
authorpmikus <pmikus@cisco.com>
Tue, 25 Aug 2020 06:57:59 +0000 (06:57 +0000)
committerPeter Mikus <pmikus@cisco.com>
Thu, 3 Sep 2020 06:25:33 +0000 (06:25 +0000)
+ DPDK 20.08
+ Migrate make -> meson
+ Fix all trending issues

Signed-off-by: pmikus <pmikus@cisco.com>
Change-Id: I31dcb22627c0f8d17ec63c5b138a2da958b006f4

DPDK_VPP_VER
resources/libraries/bash/function/dpdk.sh
resources/libraries/python/DPDK/L3fwdTest.py
resources/libraries/python/DPDK/TestpmdTest.py
resources/libraries/python/DpdkUtil.py
resources/libraries/robot/dpdk/default.robot
resources/libraries/robot/performance/performance_utils.robot
resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml
resources/tools/testbed-setup/ansible/roles/common/tasks/main.yaml
tests/dpdk/perf/__init__.robot
tests/vpp/perf/__init__.robot

index dc6bb4c..560d703 100644 (file)
@@ -1 +1 @@
-dpdk-20.02
+dpdk-20.08
\ No newline at end of file
index 4298e79..0b148aa 100644 (file)
@@ -84,55 +84,29 @@ function dpdk_compile () {
 
     set -exuo pipefail
 
-    arch=$(uname -m) || {
-        die "Get CPU architecture failed."
-    }
-
-    # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target.
-    if [ ${arch} == "aarch64" ]; then
-        arch="arm64"
-        machine="armv8a"
-    else
-        machine="native"
-    fi
-
-    # Patch settings.
-    sed_mlx="s/^CONFIG_RTE_LIBRTE_MLX5_PMD=n/CONFIG_RTE_LIBRTE_MLX5_PMD=y/g"
-    sed_i40e="s/^CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/g"
-    sed_file="./config/common_base"
-
     pushd "${DPDK_DIR}" || die "Pushd failed"
-    if ( lsmod || die ) | fgrep mlx; then
-        sed -i "${sed_mlx}" "${sed_file}" || die
-    fi
 
-    sed -i "${sed_i40e}" "${sed_file}" || die "Patch failed"
-
-    sed_build_fix='s/#include <\(rte_ethdev.*.h\)>/#include "\1"/g'
-    # can't put the filename in quotes so that shell expands it
-    sed -i "${sed_build_fix}" ./lib/librte_ethdev/rte_ethdev*.h || {
-        die "DPDK build patch failed"
-    }
+    # Patch ARM.
+    sed_cmd="s/'RTE_MAX_LCORE', [0-9]*/'RTE_MAX_LCORE', $(nproc --all)/"
+    sed_file="config/arm/meson.build"
+    sed -i "${sed_cmd}" "${sed_file}" || die "Patch failed"
 
-    # Compile
-    make install T="${arch}"-"${machine}"-linuxapp-gcc -j || {
-        die "Failed to compile DPDK!"
-    }
-    popd || die "Popd failed"
-
-    # Compile the l3fwd.
-    export RTE_SDK="${DPDK_DIR}/"
-    export RTE_TARGET="${arch}-${machine}-linuxapp-gcc"
-    # Patch settings.
+    # Patch L3FWD.
     sed_rxd="s/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 1024/g"
     sed_txd="s/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 1024/g"
     sed_file="./main.c"
-    pushd "${RTE_SDK}"/examples/l3fwd || die "Pushd failed"
+    pushd examples/l3fwd || die "Pushd failed"
     sed -i "${sed_rxd}" "${sed_file}" || die "Patch failed"
     sed -i "${sed_txd}" "${sed_file}" || die "Patch failed"
-    make clean || die "Failed to compile l3fwd"
-    make -j || die "Failed to compile l3fwd"
     popd || die "Popd failed"
+
+    # Compile using Meson and Ninja.
+    export CFLAGS=""
+    CFLAGS+="-DRTE_LIBRTE_I40E_16BYTE_RX_DESC=y"
+    meson -Dexamples=l3fwd build || {
+        die "Failed to compile DPDK!"
+    }
+    ninja -C build || die "Failed to compile DPDK!"
 }
 
 
@@ -228,32 +202,18 @@ function dpdk_l3fwd_compile () {
 
     set -exuo pipefail
 
-    arch=$(uname -m) || {
-        die "Get CPU architecture failed."
-    }
-
-    # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target.
-    if [ ${arch} == "aarch64" ]; then
-        arch="arm64"
-        machine="armv8a"
-    else
-        machine="native"
-    fi
-
-    # Compile the l3fwd.
-    export RTE_SDK="${DPDK_DIR}/"
-    export RTE_TARGET="${arch}-${machine}-linuxapp-gcc"
-    # Patch settings.
+    pushd "${DPDK_DIR}" || die "Pushd failed"
+    # Patch L3FWD.
     sed_rxd="s/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 2048/g"
     sed_txd="s/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 2048/g"
     sed_file="./main.c"
-    pushd "${RTE_SDK}"/examples/l3fwd || die "Pushd failed"
+    pushd examples/l3fwd || die "Pushd failed"
     sed -i "${sed_rxd}" "${sed_file}" || die "Patch failed"
     sed -i "${sed_txd}" "${sed_file}" || die "Patch failed"
     chmod +x ${1} && source ${1} || die "Patch failed"
-    make clean || die "Failed to compile l3fwd"
-    make -j || die "Failed to compile l3fwd"
     popd || die "Popd failed"
+
+    ninja -C build || die "Failed to compile DPDK!"
 }
 
 
@@ -268,20 +228,8 @@ function dpdk_l3fwd () {
 
     set -exuo pipefail
 
-    arch=$(uname -m) || {
-        die "Get CPU architecture failed."
-    }
-
-    # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target.
-    if [ ${arch} == "aarch64" ]; then
-        arch="arm64"
-        machine="armv8a"
-    else
-        machine="native"
-    fi
-
     rm -f screenlog.0 || true
-    binary="${DPDK_DIR}/examples/l3fwd/build/app/l3fwd"
+    binary="${DPDK_DIR}/build/examples/dpdk-l3fwd"
 
     sudo sh -c "screen -dmSL DPDK-test ${binary} ${@}" || {
         die "Failed to start l3fwd"
@@ -335,20 +283,8 @@ function dpdk_testpmd () {
 
     set -exuo pipefail
 
-    arch=$(uname -m) || {
-        die "Get CPU architecture failed."
-    }
-
-    # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target.
-    if [ ${arch} == "aarch64" ]; then
-        arch="arm64"
-        machine="armv8a"
-    else
-        machine="native"
-    fi
-
     rm -f screenlog.0 || true
-    binary="${DPDK_DIR}/${arch}-${machine}-linuxapp-gcc/app/testpmd"
+    binary="${DPDK_DIR}/build/app/dpdk-testpmd"
 
     sudo sh -c "screen -dmSL DPDK-test ${binary} ${@}" || {
         die "Failed to start testpmd"
@@ -356,9 +292,7 @@ function dpdk_testpmd () {
 
     for attempt in {1..60}; do
         echo "Checking if testpmd is alive, attempt nr ${attempt}"
-         if fgrep "Press enter to exit" screenlog.0 && \
-            fgrep "Port 0: link state change event" screenlog.0 && \
-            fgrep "Port 1: link state change event" screenlog.0; then
+         if fgrep "Press enter to exit" screenlog.0; then
              cat screenlog.0
              exit 0
         fi
index 5adab76..c338103 100644 (file)
@@ -68,7 +68,7 @@ class L3fwdTest:
 
             if jumbo_frames:
                 l3fwd_args = DpdkUtil.get_l3fwd_args(
-                    eal_corelist=f"0,{lcores_list}",
+                    eal_corelist=f"1,{lcores_list}",
                     eal_driver=False,
                     eal_pci_whitelist0=if_pci0,
                     eal_pci_whitelist1=if_pci1,
@@ -82,7 +82,7 @@ class L3fwdTest:
                 )
             else:
                 l3fwd_args = DpdkUtil.get_l3fwd_args(
-                    eal_corelist=f"0,{lcores_list}",
+                    eal_corelist=f"1,{lcores_list}",
                     eal_driver=False,
                     eal_pci_whitelist0=if_pci0,
                     eal_pci_whitelist1=if_pci1,
index 1eccd7a..dd30376 100644 (file)
@@ -58,7 +58,7 @@ class TestpmdTest:
 
             pmd_max_pkt_len = u"9200" if jumbo_frames else u"1518"
             testpmd_args = DpdkUtil.get_testpmd_args(
-                eal_corelist=f"0,{lcores_list}",
+                eal_corelist=f"1,{lcores_list}",
                 eal_driver=False,
                 eal_pci_whitelist0=if_pci0,
                 eal_pci_whitelist1=if_pci1,
index 24c4d57..dcca73d 100644 (file)
@@ -42,10 +42,6 @@ class DpdkUtil:
         options.add_with_value_from_dict(
             u"w", u"eal_pci_whitelist1", kwargs
         )
-        # Set master core.
-        options.add_with_value(
-            u"-master-lcore", u"0"
-        )
         # Load an external driver. Multiple -d options are allowed.
         options.add_with_value_if_from_dict(
             u"d", u"/usr/lib/librte_pmd_virtio.so", u"eal_driver", kwargs, True
index 15b61e7..957a254 100644 (file)
@@ -41,8 +41,8 @@
 | | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
 | | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
 | | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
-| | | ${cpus}= | Cpu Range Per Node Str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${1} | cpu_cnt=${dp_cores} | smt_used=${smt_used}
+| | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
+| | | ... | skip_cnt=${2} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
 | | | ${thr_count_int}= | Run keyword if | ${smt_used} |
 | | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
 | | | ... | ${thr_count_int}
@@ -84,7 +84,7 @@
 | | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
 | | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
 | | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${1} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
+| | | ... | skip_cnt=${2} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
 | | | ${thr_count_int}= | Run keyword if | ${smt_used} |
 | | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
 | | | ... | ${thr_count_int}
index 8411370..5480448 100644 (file)
 | | Run Keyword If | ${extended_debug}==${True}
 | | ... | Perf Stat On All DUTs | ${nodes}
 
-| Additional Statistics Action For vpp-clear-show-runtime-with-traffic
+| Additional Statistics Action For clear-show-runtime-with-traffic
 | | [Documentation]
 | | ... | Additional Statistics Action for clear and show runtime counters with
 | | ... | running traffic.
 | | Clear and show runtime counters with running traffic
 | | ... | ${trial_duration} | ${rate} | ${frame_size} | ${traffic_profile}
 | | ... | ${traffic_directions} | ${tx_port} | ${rx_port}
+
+| Additional Statistics Action For noop
+| | [Documentation]
+| | ... | Additional Statistics Action for no operation.
+| |
+| | No operation
\ No newline at end of file
index 15a241d..f54bfce 100644 (file)
@@ -9,6 +9,7 @@ packages_base:
   - "dkms"
   - "iperf3"
   - "linux-tools-common"
+  - "ninja-build"
   - "qemu-system"
   - "socat"
   - "unzip"
index e60eec9..c3d16d8 100644 (file)
   tags:
     - install-pip
 
+- name: Install Meson (repository version is too old)
+  pip:
+    name:
+      - "meson==0.47.1"
+  tags:
+    - install-meson
+
 - name: Set sudoers admin
   lineinfile:
     path: "/etc/sudoers"
index 2002892..0161b4c 100644 (file)
 | | ... | - post_run_stats - Statistics actions during traffic after timer.
 | |
 | | ${pre_stats}= | Create List
-| | ... | vpp-clear-show-runtime-with-traffic
-| | ${post_stats}= | Create List | ${EMPTY}
-| | ${pre_run_stats}= | Create List | ${EMPTY}
-| | ${post_run_stats}= | Create List | ${EMPTY}
+| | ... | clear-show-runtime-with-traffic
+| | ${post_stats}= | Create List | noop
+| | ${pre_run_stats}= | Create List | noop
+| | ${post_run_stats}= | Create List | noop
 | | Set Global Variable | ${pre_stats}
 | | Set Global Variable | ${post_stats}
 | | Set Global Variable | ${pre_run_stats}
index d49486b..388dcb0 100644 (file)
@@ -45,7 +45,7 @@
 | | ... | - packages_dir - Path to directory where VPP packages are stored.
 | |
 | | ${pre_stats}= | Create List
-| | ... | vpp-clear-show-runtime-with-traffic | vpp-clear-stats
+| | ... | clear-show-runtime-with-traffic | vpp-clear-stats
 | | ... | vpp-enable-packettrace | vpp-enable-elog
 | | ${post_stats}= | Create List
 | | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog