Message ID | 20220624101325.1792748-4-ktraynor@redhat.com |
---|---|
State | Accepted |
Commit | 70a9f9e96c2f727a2d9743357f9c2570394572a7 |
Headers | show |
Series | DPDK shared mempool config. | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/intel-ovs-compilation | success | test: success |
Hi Kevin, Thanks for the patch, one comment below, let me know your thoughts. > -----Original Message----- > From: dev <ovs-dev-bounces@openvswitch.org> On Behalf Of Kevin Traynor > Sent: Friday, June 24, 2022 3:43 PM > To: dev@openvswitch.org > Cc: david.marchand@redhat.com > Subject: [ovs-dev] [PATCH v5 3/3] system-dpdk: Add unit test for user > configured mempools. > > Test that user configured mempool params have been stored. > > Signed-off-by: Kevin Traynor <ktraynor@redhat.com> > Reviewed-by: David Marchand <david.marchand@redhat.com> > --- > tests/system-dpdk.at | 34 ++++++++++++++++++++++++++++++++++ > 1 file changed, 34 insertions(+) > > diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at index > 7d2715c4a..8889861a2 100644 > --- a/tests/system-dpdk.at > +++ b/tests/system-dpdk.at > @@ -13,4 +13,19 @@ m4_define([SYSTEM_DPDK_ALLOWED_LOGS],[ > ]) > > +dnl CHECK_MEMPOOL_PARAM([mtu], [numa], [+line]) dnl dnl Waits for logs > +to indicate that the user has configured a mempool dnl for 'mtu' on > +'numa'. Checking starts from line number 'line' in dnl > +ovs-vswitchd.log. > +m4_define([CHECK_MEMPOOL_PARAM], [ > + line_st=$3 > + if [[ -z "$line_st" ]] > + then > + line_st="+0" > + fi > + OVS_WAIT_UNTIL([tail -n $line_st ovs-vswitchd.log dnl > + | grep "User configured shared mempool set for: MTU > +$1, NUMA $2."]) > +]) > + > dnl --------------------------------------------------------------------- > ----- > dnl Check if EAL init is successful > @@ -405,2 +420,21 @@ OVS_VSWITCHD_STOP("m4_join([], > [SYSTEM_DPDK_ALLOWED_LOGS], [ AT_CLEANUP dnl dnl ----------------------- > --------------------------------------------------- > + > +dnl > +----------------------------------------------------------------------- > +--- > +dnl Setup user configured mempools > +AT_SETUP([OVS-DPDK - user configured mempool]) > +AT_KEYWORDS([dpdk]) > +OVS_DPDK_PRE_CHECK() > +OVS_DPDK_START_OVSDB() > +OVS_DPDK_START_VSWITCHD() > + > +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . > +other_config:shared-mempool-config=9000,6000,1500]) > +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . > +other_config:dpdk-init=true]) > + > +CHECK_MEMPOOL_PARAM([9000], [ALL], []) > +CHECK_MEMPOOL_PARAM([6000], [ALL], []) > +CHECK_MEMPOOL_PARAM([1500], [ALL], []) > + > +OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]") > +AT_CLEANUP > +dnl > +----------------------------------------------------------------------- > +--- > -- The test case seems to be quite simple, how about the following change to test few more cases ? diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at index 8c36ae655..7f6a0e16f 100644 --- a/tests/system-dpdk.at +++ b/tests/system-dpdk.at @@ -596,13 +596,65 @@ OVS_DPDK_PRE_CHECK() OVS_DPDK_START_OVSDB() OVS_DPDK_START_VSWITCHD() -AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:shared-mempool-config=9000,6000,1500]) +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:shared-mempool-config=8000,6000,1500]) AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true]) -CHECK_MEMPOOL_PARAM([9000], [ALL], []) +CHECK_MEMPOOL_PARAM([8000], [ALL], []) CHECK_MEMPOOL_PARAM([6000], [ALL], []) CHECK_MEMPOOL_PARAM([1500], [ALL], []) -OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]") +AT_CHECK(ovs-appctl vlog/set netdev_dpdk:dbg) + +dnl Find number of sockets +AT_CHECK([lscpu], [], [stdout]) +AT_CHECK([cat stdout | grep "NUMA node(s)" | awk '{c=1; while (c++<$(3)) {printf "512,"}; print "512"}' > NUMA_NODE]) + + +dnl Add userspace bridge and vhostuser-client port +AT_CHECK([ovs-vsctl add-br br10 -- set bridge br10 datapath_type=netdev]) +AT_CHECK([ovs-vsctl add-port br10 dpdkvhostuserclient0 -- set Interface dpdkvhostuserclient0 type=dpdkvhostuserclient options:vhost-server-path=$OVS_RUNDIR/dpdkvhostclient0], [], [stdout], [stderr]) +AT_CHECK([ovs-vsctl show], [], [stdout]) +sleep 2 + +dnl Parse log file for vhost init +AT_CHECK([grep "VHOST_CONFIG: vhost-user client: socket created" ovs-vswitchd.log], [], [stdout]) +AT_CHECK([grep "vHost User device 'dpdkvhostuserclient0' created in 'client' mode, using client socket" ovs-vswitchd.log], [], [stdout]) +AT_CHECK([grep "VHOST_CONFIG: $OVS_RUNDIR/dpdkvhostclient0: reconnecting..." ovs-vswitchd.log], [], [stdout]) + +dnl Execute testpmd in background +on_exit "pkill -f -x -9 'tail -f /dev/null'" +tail -f /dev/null | dpdk-testpmd --socket-mem="$(cat NUMA_NODE)" --no-pci\ + --vdev="net_virtio_user,path=$OVS_RUNDIR/dpdkvhostclient0,server=1" \ + --file-prefix page0 --single-file-segments -- -a >$OVS_RUNDIR/testpmd-dpdkvhostuserclient0.log 2>&1 & + +OVS_WAIT_UNTIL([grep "virtio is now ready for processing" ovs-vswitchd.log]) + +dnl Check if the right user configured mempool is found +AT_CHECK([grep "Found user configured shared mempool .* suitable for port with MTU 1500" ovs-vswitchd.log], [], [stdout]) +AT_CHECK([grep "Port dpdkvhostuserclient0: Requesting a mempool" ovs-vswitchd.log], [], [stdout]) + +dnl Change the MTU value to 7000 to trigger mempool change +TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1)) +AT_CHECK(ovs-vsctl set Interface dpdkvhostuserclient0 mtu_request=7000) +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Found user configured shared mempool .* suitable for port with MTU 7000"]) +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Port dpdkvhostuserclient0: Requesting a mempool"]) + +dnl Change back the MTU value to 1500 to trigger mempool change(re-use) +TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1)) +AT_CHECK(ovs-vsctl set Interface dpdkvhostuserclient0 mtu_request=1500) +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Found user configured shared mempool .* suitable for port with MTU 1500"]) +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Reusing mempool"]) + +dnl Change the MTU value beyond the max value in shared-mempool-config list +TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1)) +AT_CHECK(ovs-vsctl set Interface dpdkvhostuserclient0 mtu_request=9000) +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "No user configured shared mempool mbuf sizes found suitable for port with MTU 9000"]) +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Port dpdkvhostuserclient0: Requesting a mempool"]) + +dnl Clean up +AT_CHECK([ovs-vsctl del-port br10 dpdkvhostuserclient0], [], [stdout], [stderr]) +OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [ +\@VHOST_CONFIG: failed to connect to $OVS_RUNDIR/dpdkvhostclient0: No such file or directory@d +])") AT_CLEANUP dnl -------------------------------------------------------------------------- Thanks and regards, Sunil
On 08/07/2022 22:16, Pai G, Sunil wrote: > Hi Kevin, > > Thanks for the patch, one comment below, let me know your thoughts. > Hi Sunil, Thanks for the suggestion. These tests look like a good addition. If you want to send them formally to the mailing list, I can Ack them. thanks, Kevin. >> -----Original Message----- >> From: dev <ovs-dev-bounces@openvswitch.org> On Behalf Of Kevin Traynor >> Sent: Friday, June 24, 2022 3:43 PM >> To: dev@openvswitch.org >> Cc: david.marchand@redhat.com >> Subject: [ovs-dev] [PATCH v5 3/3] system-dpdk: Add unit test for user >> configured mempools. >> >> Test that user configured mempool params have been stored. >> >> Signed-off-by: Kevin Traynor <ktraynor@redhat.com> >> Reviewed-by: David Marchand <david.marchand@redhat.com> >> --- >> tests/system-dpdk.at | 34 ++++++++++++++++++++++++++++++++++ >> 1 file changed, 34 insertions(+) >> >> diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at index >> 7d2715c4a..8889861a2 100644 >> --- a/tests/system-dpdk.at >> +++ b/tests/system-dpdk.at >> @@ -13,4 +13,19 @@ m4_define([SYSTEM_DPDK_ALLOWED_LOGS],[ >> ]) >> >> +dnl CHECK_MEMPOOL_PARAM([mtu], [numa], [+line]) dnl dnl Waits for logs >> +to indicate that the user has configured a mempool dnl for 'mtu' on >> +'numa'. Checking starts from line number 'line' in dnl >> +ovs-vswitchd.log. >> +m4_define([CHECK_MEMPOOL_PARAM], [ >> + line_st=$3 >> + if [[ -z "$line_st" ]] >> + then >> + line_st="+0" >> + fi >> + OVS_WAIT_UNTIL([tail -n $line_st ovs-vswitchd.log dnl >> + | grep "User configured shared mempool set for: MTU >> +$1, NUMA $2."]) >> +]) >> + >> dnl --------------------------------------------------------------------- >> ----- >> dnl Check if EAL init is successful >> @@ -405,2 +420,21 @@ OVS_VSWITCHD_STOP("m4_join([], >> [SYSTEM_DPDK_ALLOWED_LOGS], [ AT_CLEANUP dnl dnl ----------------------- >> --------------------------------------------------- >> + >> +dnl >> +----------------------------------------------------------------------- >> +--- >> +dnl Setup user configured mempools >> +AT_SETUP([OVS-DPDK - user configured mempool]) >> +AT_KEYWORDS([dpdk]) >> +OVS_DPDK_PRE_CHECK() >> +OVS_DPDK_START_OVSDB() >> +OVS_DPDK_START_VSWITCHD() >> + >> +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . >> +other_config:shared-mempool-config=9000,6000,1500]) >> +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . >> +other_config:dpdk-init=true]) >> + >> +CHECK_MEMPOOL_PARAM([9000], [ALL], []) >> +CHECK_MEMPOOL_PARAM([6000], [ALL], []) >> +CHECK_MEMPOOL_PARAM([1500], [ALL], []) >> + >> +OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]") >> +AT_CLEANUP >> +dnl >> +----------------------------------------------------------------------- >> +--- >> -- > > > The test case seems to be quite simple, how about the following change to test few more cases ? > > diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at > index 8c36ae655..7f6a0e16f 100644 > --- a/tests/system-dpdk.at > +++ b/tests/system-dpdk.at > @@ -596,13 +596,65 @@ OVS_DPDK_PRE_CHECK() > OVS_DPDK_START_OVSDB() > OVS_DPDK_START_VSWITCHD() > > -AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:shared-mempool-config=9000,6000,1500]) > +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:shared-mempool-config=8000,6000,1500]) > AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true]) > > -CHECK_MEMPOOL_PARAM([9000], [ALL], []) > +CHECK_MEMPOOL_PARAM([8000], [ALL], []) > CHECK_MEMPOOL_PARAM([6000], [ALL], []) > CHECK_MEMPOOL_PARAM([1500], [ALL], []) > > -OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]") > +AT_CHECK(ovs-appctl vlog/set netdev_dpdk:dbg) > + > +dnl Find number of sockets > +AT_CHECK([lscpu], [], [stdout]) > +AT_CHECK([cat stdout | grep "NUMA node(s)" | awk '{c=1; while (c++<$(3)) {printf "512,"}; print "512"}' > NUMA_NODE]) > + > + > +dnl Add userspace bridge and vhostuser-client port > +AT_CHECK([ovs-vsctl add-br br10 -- set bridge br10 datapath_type=netdev]) > +AT_CHECK([ovs-vsctl add-port br10 dpdkvhostuserclient0 -- set Interface dpdkvhostuserclient0 type=dpdkvhostuserclient options:vhost-server-path=$OVS_RUNDIR/dpdkvhostclient0], [], [stdout], [stderr]) > +AT_CHECK([ovs-vsctl show], [], [stdout]) > +sleep 2 > + > +dnl Parse log file for vhost init > +AT_CHECK([grep "VHOST_CONFIG: vhost-user client: socket created" ovs-vswitchd.log], [], [stdout]) > +AT_CHECK([grep "vHost User device 'dpdkvhostuserclient0' created in 'client' mode, using client socket" ovs-vswitchd.log], [], [stdout]) > +AT_CHECK([grep "VHOST_CONFIG: $OVS_RUNDIR/dpdkvhostclient0: reconnecting..." ovs-vswitchd.log], [], [stdout]) > + > +dnl Execute testpmd in background > +on_exit "pkill -f -x -9 'tail -f /dev/null'" > +tail -f /dev/null | dpdk-testpmd --socket-mem="$(cat NUMA_NODE)" --no-pci\ > + --vdev="net_virtio_user,path=$OVS_RUNDIR/dpdkvhostclient0,server=1" \ > + --file-prefix page0 --single-file-segments -- -a >$OVS_RUNDIR/testpmd-dpdkvhostuserclient0.log 2>&1 & > + > +OVS_WAIT_UNTIL([grep "virtio is now ready for processing" ovs-vswitchd.log]) > + > +dnl Check if the right user configured mempool is found > +AT_CHECK([grep "Found user configured shared mempool .* suitable for port with MTU 1500" ovs-vswitchd.log], [], [stdout]) > +AT_CHECK([grep "Port dpdkvhostuserclient0: Requesting a mempool" ovs-vswitchd.log], [], [stdout]) > + > +dnl Change the MTU value to 7000 to trigger mempool change > +TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1)) > +AT_CHECK(ovs-vsctl set Interface dpdkvhostuserclient0 mtu_request=7000) > +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Found user configured shared mempool .* suitable for port with MTU 7000"]) > +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Port dpdkvhostuserclient0: Requesting a mempool"]) > + > +dnl Change back the MTU value to 1500 to trigger mempool change(re-use) > +TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1)) > +AT_CHECK(ovs-vsctl set Interface dpdkvhostuserclient0 mtu_request=1500) > +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Found user configured shared mempool .* suitable for port with MTU 1500"]) > +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Reusing mempool"]) > + > +dnl Change the MTU value beyond the max value in shared-mempool-config list > +TMP=$(($(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])+1)) > +AT_CHECK(ovs-vsctl set Interface dpdkvhostuserclient0 mtu_request=9000) > +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "No user configured shared mempool mbuf sizes found suitable for port with MTU 9000"]) > +OVS_WAIT_UNTIL([tail -n +$TMP ovs-vswitchd.log | grep "Port dpdkvhostuserclient0: Requesting a mempool"]) > + > +dnl Clean up > +AT_CHECK([ovs-vsctl del-port br10 dpdkvhostuserclient0], [], [stdout], [stderr]) > +OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [ > +\@VHOST_CONFIG: failed to connect to $OVS_RUNDIR/dpdkvhostclient0: No such file or directory@d > +])") > AT_CLEANUP > dnl -------------------------------------------------------------------------- > > > Thanks and regards, > Sunil >
> Thanks for the suggestion. These tests look like a good addition. If you > want to send them formally to the mailing list, I can Ack them. > > thanks, > Kevin. Hi Kevin, Sure, patch available on the mailing list here: https://patchwork.ozlabs.org/project/openvswitch/patch/20220905105022.107298-1-sunil.pai.g@intel.com/ Thanks and regards Sunil <snipped>
diff --git a/tests/system-dpdk.at b/tests/system-dpdk.at index 7d2715c4a..8889861a2 100644 --- a/tests/system-dpdk.at +++ b/tests/system-dpdk.at @@ -13,4 +13,19 @@ m4_define([SYSTEM_DPDK_ALLOWED_LOGS],[ ]) +dnl CHECK_MEMPOOL_PARAM([mtu], [numa], [+line]) +dnl +dnl Waits for logs to indicate that the user has configured a mempool +dnl for 'mtu' on 'numa'. Checking starts from line number 'line' in +dnl ovs-vswitchd.log. +m4_define([CHECK_MEMPOOL_PARAM], [ + line_st=$3 + if [[ -z "$line_st" ]] + then + line_st="+0" + fi + OVS_WAIT_UNTIL([tail -n $line_st ovs-vswitchd.log dnl + | grep "User configured shared mempool set for: MTU $1, NUMA $2."]) +]) + dnl -------------------------------------------------------------------------- dnl Check if EAL init is successful @@ -405,2 +420,21 @@ OVS_VSWITCHD_STOP("m4_join([], [SYSTEM_DPDK_ALLOWED_LOGS], [ AT_CLEANUP dnl dnl -------------------------------------------------------------------------- + +dnl -------------------------------------------------------------------------- +dnl Setup user configured mempools +AT_SETUP([OVS-DPDK - user configured mempool]) +AT_KEYWORDS([dpdk]) +OVS_DPDK_PRE_CHECK() +OVS_DPDK_START_OVSDB() +OVS_DPDK_START_VSWITCHD() + +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:shared-mempool-config=9000,6000,1500]) +AT_CHECK([ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true]) + +CHECK_MEMPOOL_PARAM([9000], [ALL], []) +CHECK_MEMPOOL_PARAM([6000], [ALL], []) +CHECK_MEMPOOL_PARAM([1500], [ALL], []) + +OVS_VSWITCHD_STOP("[SYSTEM_DPDK_ALLOWED_LOGS]") +AT_CLEANUP +dnl --------------------------------------------------------------------------