[ovs-dev] [PATCH v2] tests: Add PMD auto load balance unit tests.

Kevin Traynor ktraynor at redhat.com
Tue Jun 8 13:05:10 UTC 2021


Not sure why some names seemed dropped out of CC. Re-adding.

On 08/06/2021 13:47, Kevin Traynor wrote:
> Ping
> 
> On 05/05/2021 14:34, Kevin Traynor wrote:
>> Ping. Any objection to adding these unit tests?
>>
>> On 16/03/2021 15:45, Kevin Traynor wrote:
>>> These tests focus on enabling/disabling and user parameters.
>>>
>>> Co-Authored-by: David Marchand <david.marchand at redhat.com>
>>> Signed-off-by: David Marchand <david.marchand at redhat.com>
>>> Signed-off-by: Kevin Traynor <ktraynor at redhat.com>
>>>
>>> ---
>>> v2:
>>> - Remove above max documented interval test
>>> - Add David's code to combine param checks and add as co-author
>>> ---
>>>  tests/alb.at       | 218 +++++++++++++++++++++++++++++++++++++++++++++
>>>  tests/automake.mk  |   1 +
>>>  tests/testsuite.at |   1 +
>>>  3 files changed, 220 insertions(+)
>>>  create mode 100644 tests/alb.at
>>>
>>> diff --git a/tests/alb.at b/tests/alb.at
>>> new file mode 100644
>>> index 000000000..0ea1bbdd1
>>> --- /dev/null
>>> +++ b/tests/alb.at
>>> @@ -0,0 +1,218 @@
>>> +AT_BANNER([PMD Auto Load Balance])
>>> +
>>> +m4_divert_push([PREPARE_TESTS])
>>> +
>>> +get_log_line_num () {
>>> +    LINENUM=$(cat ovs-vswitchd.log | wc -l | tr -d [[:blank:]])
>>> +}
>>> +
>>> +m4_divert_pop([PREPARE_TESTS])
>>> +
>>> +m4_define([DUMMY_NUMA], [--dummy-numa="0,0"])
>>> +
>>> +dnl CHECK_ALB_PARAM([param], [value], [+line])
>>> +dnl
>>> +dnl Waits for ALB logs for 'param' in logs and checks if value matches
>>> +dnl 'value'. Checking starts from line number 'line' in ovs-vswithd.log.
>>> +m4_define([CHECK_ALB_PARAM], [
>>> +    line_st=$3
>>> +    if [[ -z "$line_st" ]]
>>> +    then
>>> +        line_st="+0"
>>> +    fi
>>> +    OVS_WAIT_UNTIL([tail -n $line_st ovs-vswitchd.log | grep "PMD auto load balance $1 set to"])
>>> +    AT_CHECK([tail -n $line_st ovs-vswitchd.log | sed -n "s#.*\(PMD auto load balance $1 set to.*\)#\1#p" | tail -1], [0], [dnl
>>> +PMD auto load balance $1 set to $2
>>> +])
>>> +])
>>> +
>>> +AT_SETUP([ALB - default state])
>>> +OVS_VSWITCHD_START
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log])
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> +
>>> +AT_SETUP([ALB - enable/disable])
>>> +OVS_VSWITCHD_START([add-port br0 p0 \
>>> +                    -- set Interface p0 type=dummy-pmd options:n_rxq=3 \
>>> +                    -- set Open_vSwitch . other_config:pmd-cpu-mask=3 \
>>> +                    -- set open_vswitch . other_config:pmd-auto-lb="true"],
>>> +                   [], [], [DUMMY_NUMA])
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is enabled" ovs-vswitchd.log])
>>> +
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="false"])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true"])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is enabled"])
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> +
>>> +AT_SETUP([ALB - min num PMD/RxQ])
>>> +OVS_VSWITCHD_START([add-port br0 p0 \
>>> +                    -- set Interface p0 type=dummy-pmd options:n_rxq=2 \
>>> +                    -- set Open_vSwitch . other_config:pmd-cpu-mask=1 \
>>> +                    -- set open_vswitch . other_config:pmd-auto-lb="true"],
>>> +                   [], [], [DUMMY_NUMA])
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log])
>>> +
>>> +# Add more PMD
>>> +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x3])
>>> +OVS_WAIT_UNTIL([grep "There are 2 pmd threads on numa node" ovs-vswitchd.log])
>>> +
>>> +# Add one more rxq to have 2 rxq on a PMD
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set interface p0 options:n_rxq=3])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is enabled"])
>>> +
>>> +# Reduce PMD
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=0x1])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +
>>> +# Check logs when try to enable but min PMD/RxQ prevents
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="false"])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true"])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> +
>>> +AT_SETUP([ALB - PMD/RxQ assignment type])
>>> +OVS_VSWITCHD_START([add-port br0 p0 \
>>> +                    -- set Interface p0 type=dummy-pmd options:n_rxq=3 \
>>> +                    -- set Open_vSwitch . other_config:pmd-cpu-mask=3 \
>>> +                    -- set open_vswitch . other_config:pmd-auto-lb="true"],
>>> +                   [], [], [DUMMY_NUMA])
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is enabled" ovs-vswitchd.log])
>>> +
>>> +# Change assignment type
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=roundrobin])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +
>>> +# Change back assignment type
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=cycles])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is enabled"])
>>> +
>>> +# Check logs when try to enable but assignment prevents
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="false"])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=roundrobin])
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true"])
>>> +OVS_WAIT_UNTIL([tail -n +$LINENUM ovs-vswitchd.log | grep "PMD auto load balance is disabled"])
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> +
>>> +AT_SETUP([ALB - interval param])
>>> +OVS_VSWITCHD_START
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log])
>>> +
>>> +# Check default
>>> +CHECK_ALB_PARAM([interval], [1 mins], [])
>>> +
>>> +# Set new value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="10"])
>>> +CHECK_ALB_PARAM([interval], [10 mins], [+$LINENUM])
>>> +
>>> +# Set min value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="1"])
>>> +CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM])
>>> +
>>> +# Set max value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="20000"])
>>> +CHECK_ALB_PARAM([interval], [20000 mins], [+$LINENUM])
>>> +
>>> +# Set below min value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="0"])
>>> +CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM])
>>> +
>>> +# No check for above max as it is only a documented max value and not a hard limit
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> +
>>> +AT_SETUP([ALB - improvement param])
>>> +OVS_VSWITCHD_START
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log])
>>> +
>>> +# Check default
>>> +CHECK_ALB_PARAM([improvement threshold], [25%], [])
>>> +
>>> +# Set new value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-improvement-threshold=60])
>>> +CHECK_ALB_PARAM([improvement threshold], [60%], [+$LINENUM])
>>> +
>>> +# Set min value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-improvement-threshold=0])
>>> +CHECK_ALB_PARAM([improvement threshold], [0%], [+$LINENUM])
>>> +
>>> +# Set below min value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-improvement-threshold=-1])
>>> +CHECK_ALB_PARAM([improvement threshold], [25%], [+$LINENUM])
>>> +
>>> +# Set max value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-improvement-threshold=100])
>>> +CHECK_ALB_PARAM([improvement threshold], [100%], [+$LINENUM])
>>> +
>>> +# Set above max value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-improvement-threshold=101])
>>> +CHECK_ALB_PARAM([improvement threshold], [25%], [+$LINENUM])
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> +
>>> +AT_SETUP([ALB - load param])
>>> +OVS_VSWITCHD_START
>>> +OVS_WAIT_UNTIL([grep "PMD auto load balance is disabled" ovs-vswitchd.log])
>>> +
>>> +# Check default
>>> +CHECK_ALB_PARAM([load threshold], [95%], [])
>>> +
>>> +# Set to new value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-load-threshold=70])
>>> +CHECK_ALB_PARAM([load threshold], [70%], [+$LINENUM])
>>> +
>>> +# Set to min value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-load-threshold=0])
>>> +CHECK_ALB_PARAM([load threshold], [0%], [+$LINENUM])
>>> +
>>> +# Set to below min
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-load-threshold=-1])
>>> +CHECK_ALB_PARAM([load threshold], [95%], [+$LINENUM])
>>> +
>>> +# Set to max
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-load-threshold=100])
>>> +CHECK_ALB_PARAM([load threshold], [100%], [+$LINENUM])
>>> +
>>> +# Set above max value
>>> +get_log_line_num
>>> +AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-load-threshold=101])
>>> +CHECK_ALB_PARAM([load threshold], [95%], [+$LINENUM])
>>> +
>>> +OVS_VSWITCHD_STOP
>>> +AT_CLEANUP
>>> diff --git a/tests/automake.mk b/tests/automake.mk
>>> index 44a65849c..b9e841843 100644
>>> --- a/tests/automake.mk
>>> +++ b/tests/automake.mk
>>> @@ -63,4 +63,5 @@ TESTSUITE_AT = \
>>>  	tests/jsonrpc-py.at \
>>>  	tests/pmd.at \
>>> +	tests/alb.at \
>>>  	tests/tunnel.at \
>>>  	tests/tunnel-push-pop.at \
>>> diff --git a/tests/testsuite.at b/tests/testsuite.at
>>> index 73699918d..58adfa09c 100644
>>> --- a/tests/testsuite.at
>>> +++ b/tests/testsuite.at
>>> @@ -61,4 +61,5 @@ m4_include([tests/ofproto.at])
>>>  m4_include([tests/dpif-netdev.at])
>>>  m4_include([tests/pmd.at])
>>> +m4_include([tests/alb.at])
>>>  m4_include([tests/dpctl.at])
>>>  m4_include([tests/ofproto-dpif.at])
>>>
>>
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> 



More information about the dev mailing list