From 3b2dcb0348e890950dfbc3fe4aec7008d4e1f63a Mon Sep 17 00:00:00 2001 From: pmikus Date: Tue, 25 Aug 2020 06:57:59 +0000 Subject: Framework: Bump DPDK 20.08 + DPDK 20.08 + Migrate make -> meson + Fix all trending issues Signed-off-by: pmikus Change-Id: I31dcb22627c0f8d17ec63c5b138a2da958b006f4 --- DPDK_VPP_VER | 2 +- resources/libraries/bash/function/dpdk.sh | 110 +++++---------------- resources/libraries/python/DPDK/L3fwdTest.py | 4 +- resources/libraries/python/DPDK/TestpmdTest.py | 2 +- resources/libraries/python/DpdkUtil.py | 4 - resources/libraries/robot/dpdk/default.robot | 6 +- .../robot/performance/performance_utils.robot | 8 +- .../ansible/roles/common/defaults/main.yaml | 1 + .../ansible/roles/common/tasks/main.yaml | 7 ++ tests/dpdk/perf/__init__.robot | 8 +- tests/vpp/perf/__init__.robot | 2 +- 11 files changed, 49 insertions(+), 105 deletions(-) diff --git a/DPDK_VPP_VER b/DPDK_VPP_VER index dc6bb4c2ae..560d7031db 100644 --- a/DPDK_VPP_VER +++ b/DPDK_VPP_VER @@ -1 +1 @@ -dpdk-20.02 +dpdk-20.08 \ No newline at end of file diff --git a/resources/libraries/bash/function/dpdk.sh b/resources/libraries/bash/function/dpdk.sh index 4298e79e62..0b148aa83d 100644 --- a/resources/libraries/bash/function/dpdk.sh +++ b/resources/libraries/bash/function/dpdk.sh @@ -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 diff --git a/resources/libraries/python/DPDK/L3fwdTest.py b/resources/libraries/python/DPDK/L3fwdTest.py index 5adab76745..c33810348d 100644 --- a/resources/libraries/python/DPDK/L3fwdTest.py +++ b/resources/libraries/python/DPDK/L3fwdTest.py @@ -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, diff --git a/resources/libraries/python/DPDK/TestpmdTest.py b/resources/libraries/python/DPDK/TestpmdTest.py index 1eccd7addf..dd30376fd1 100644 --- a/resources/libraries/python/DPDK/TestpmdTest.py +++ b/resources/libraries/python/DPDK/TestpmdTest.py @@ -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, diff --git a/resources/libraries/python/DpdkUtil.py b/resources/libraries/python/DpdkUtil.py index 24c4d57652..dcca73db1d 100644 --- a/resources/libraries/python/DpdkUtil.py +++ b/resources/libraries/python/DpdkUtil.py @@ -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 diff --git a/resources/libraries/robot/dpdk/default.robot b/resources/libraries/robot/dpdk/default.robot index 15b61e7f04..957a2541d8 100644 --- a/resources/libraries/robot/dpdk/default.robot +++ b/resources/libraries/robot/dpdk/default.robot @@ -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} diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot index 84113709cf..548044848b 100644 --- a/resources/libraries/robot/performance/performance_utils.robot +++ b/resources/libraries/robot/performance/performance_utils.robot @@ -676,7 +676,7 @@ | | 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. @@ -684,3 +684,9 @@ | | 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 diff --git a/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml b/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml index 15a241d1ca..f54bfce228 100644 --- a/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml +++ b/resources/tools/testbed-setup/ansible/roles/common/defaults/main.yaml @@ -9,6 +9,7 @@ packages_base: - "dkms" - "iperf3" - "linux-tools-common" + - "ninja-build" - "qemu-system" - "socat" - "unzip" diff --git a/resources/tools/testbed-setup/ansible/roles/common/tasks/main.yaml b/resources/tools/testbed-setup/ansible/roles/common/tasks/main.yaml index e60eec9fb0..c3d16d8b9c 100644 --- a/resources/tools/testbed-setup/ansible/roles/common/tasks/main.yaml +++ b/resources/tools/testbed-setup/ansible/roles/common/tasks/main.yaml @@ -83,6 +83,13 @@ 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" diff --git a/tests/dpdk/perf/__init__.robot b/tests/dpdk/perf/__init__.robot index 200289254b..0161b4cff1 100644 --- a/tests/dpdk/perf/__init__.robot +++ b/tests/dpdk/perf/__init__.robot @@ -40,10 +40,10 @@ | | ... | - 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} diff --git a/tests/vpp/perf/__init__.robot b/tests/vpp/perf/__init__.robot index d49486bf87..388dcb0262 100644 --- a/tests/vpp/perf/__init__.robot +++ b/tests/vpp/perf/__init__.robot @@ -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 -- cgit 1.2.3-korg