diff options
author | David Marchand <david.marchand@redhat.com> | 2019-04-25 17:22:08 +0200 |
---|---|---|
committer | Ian Stokes <ian.stokes@intel.com> | 2019-06-26 18:43:39 +0100 |
commit | 35c91567c81e44eadadc265ec5fca82483e765e6 (patch) | |
tree | 468fc5d16e4653be2c92eb29f89e68337ab16cf4 /tests | |
parent | 934a85a877b41997a9bf0a7c75019035d815af6e (diff) | |
download | openvswitch-35c91567c81e44eadadc265ec5fca82483e765e6.tar.gz |
dpif-netdev: Only poll enabled vhost queues.
We currently poll all available queues based on the max queue count
exchanged with the vhost peer and rely on the vhost library in DPDK to
check the vring status beneath.
This can lead to some overhead when we have a lot of unused queues.
To enhance the situation, we can skip the disabled queues.
On rxq notifications, we make use of the netdev's change_seq number so
that the pmd thread main loop can cache the queue state periodically.
$ ovs-appctl dpif-netdev/pmd-rxq-show
pmd thread numa_id 0 core_id 1:
isolated : true
port: dpdk0 queue-id: 0 (enabled) pmd usage: 0 %
pmd thread numa_id 0 core_id 2:
isolated : true
port: vhost1 queue-id: 0 (enabled) pmd usage: 0 %
port: vhost3 queue-id: 0 (enabled) pmd usage: 0 %
pmd thread numa_id 0 core_id 15:
isolated : true
port: dpdk1 queue-id: 0 (enabled) pmd usage: 0 %
pmd thread numa_id 0 core_id 16:
isolated : true
port: vhost0 queue-id: 0 (enabled) pmd usage: 0 %
port: vhost2 queue-id: 0 (enabled) pmd usage: 0 %
$ while true; do
ovs-appctl dpif-netdev/pmd-rxq-show |awk '
/port: / {
tot++;
if ($5 == "(enabled)") {
en++;
}
}
END {
print "total: " tot ", enabled: " en
}'
sleep 1
done
total: 6, enabled: 2
total: 6, enabled: 2
...
# Started vm, virtio devices are bound to kernel driver which enables
# F_MQ + all queue pairs
total: 6, enabled: 2
total: 66, enabled: 66
...
# Unbound vhost0 and vhost1 from the kernel driver
total: 66, enabled: 66
total: 66, enabled: 34
...
# Configured kernel bound devices to use only 1 queue pair
total: 66, enabled: 34
total: 66, enabled: 19
total: 66, enabled: 4
...
# While rebooting the vm
total: 66, enabled: 4
total: 66, enabled: 2
...
total: 66, enabled: 66
...
# After shutting down the vm
total: 66, enabled: 66
total: 66, enabled: 2
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ilya Maximets <i.maximets@samsung.com>
Signed-off-by: Ian Stokes <ian.stokes@intel.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/pmd.at | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/tests/pmd.at b/tests/pmd.at index aac91a8ca..96ae959c6 100644 --- a/tests/pmd.at +++ b/tests/pmd.at @@ -14,7 +14,7 @@ parse_pmd_rxq_show () { # of the core on one line # 'port:' port_name 'queue_id:' rxq_id rxq_id rxq_id rxq_id parse_pmd_rxq_show_group () { - awk '/port:/ {print $1, $2, $3, $4, $12, $20, $28}' + awk '/port:/ {print $1, $2, $3, $4, $13, $22, $31}' } # Given the output of `ovs-appctl dpctl/dump-flows`, prints a list of flows @@ -72,7 +72,7 @@ CHECK_PMD_THREADS_CREATED() AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl pmd thread numa_id <cleared> core_id <cleared>: isolated : false - port: p0 queue-id: 0 pmd usage: NOT AVAIL + port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL ]) AT_CHECK([ovs-appctl dpif/show | sed 's/\(tx_queues=\)[[0-9]]*/\1<cleared>/g'], [0], [dnl @@ -103,14 +103,14 @@ dummy@ovs-dummy: hit:0 missed:0 AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl pmd thread numa_id <cleared> core_id <cleared>: isolated : false - port: p0 queue-id: 0 pmd usage: NOT AVAIL - port: p0 queue-id: 1 pmd usage: NOT AVAIL - port: p0 queue-id: 2 pmd usage: NOT AVAIL - port: p0 queue-id: 3 pmd usage: NOT AVAIL - port: p0 queue-id: 4 pmd usage: NOT AVAIL - port: p0 queue-id: 5 pmd usage: NOT AVAIL - port: p0 queue-id: 6 pmd usage: NOT AVAIL - port: p0 queue-id: 7 pmd usage: NOT AVAIL + port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 1 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 2 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 3 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 4 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 5 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 6 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 7 (enabled) pmd usage: NOT AVAIL ]) OVS_VSWITCHD_STOP @@ -134,14 +134,14 @@ dummy@ovs-dummy: hit:0 missed:0 AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl pmd thread numa_id <cleared> core_id <cleared>: isolated : false - port: p0 queue-id: 0 pmd usage: NOT AVAIL - port: p0 queue-id: 1 pmd usage: NOT AVAIL - port: p0 queue-id: 2 pmd usage: NOT AVAIL - port: p0 queue-id: 3 pmd usage: NOT AVAIL - port: p0 queue-id: 4 pmd usage: NOT AVAIL - port: p0 queue-id: 5 pmd usage: NOT AVAIL - port: p0 queue-id: 6 pmd usage: NOT AVAIL - port: p0 queue-id: 7 pmd usage: NOT AVAIL + port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 1 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 2 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 3 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 4 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 5 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 6 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 7 (enabled) pmd usage: NOT AVAIL ]) AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:pmd-rxq-assign=cycles]) @@ -167,14 +167,14 @@ CHECK_PMD_THREADS_CREATED([1], [], [+$TMP]) AT_CHECK([ovs-appctl dpif-netdev/pmd-rxq-show | sed SED_NUMA_CORE_PATTERN], [0], [dnl pmd thread numa_id <cleared> core_id <cleared>: isolated : false - port: p0 queue-id: 0 pmd usage: NOT AVAIL - port: p0 queue-id: 1 pmd usage: NOT AVAIL - port: p0 queue-id: 2 pmd usage: NOT AVAIL - port: p0 queue-id: 3 pmd usage: NOT AVAIL - port: p0 queue-id: 4 pmd usage: NOT AVAIL - port: p0 queue-id: 5 pmd usage: NOT AVAIL - port: p0 queue-id: 6 pmd usage: NOT AVAIL - port: p0 queue-id: 7 pmd usage: NOT AVAIL + port: p0 queue-id: 0 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 1 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 2 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 3 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 4 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 5 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 6 (enabled) pmd usage: NOT AVAIL + port: p0 queue-id: 7 (enabled) pmd usage: NOT AVAIL ]) OVS_VSWITCHD_STOP |