[ovs-dev] [PATCH v3 1/3] dpif-netdev: Only poll enabled vhost queues.
Ian Stokes
ian.stokes at intel.com
Wed Jun 26 18:15:45 UTC 2019
On 4/25/2019 4:22 PM, David Marchand wrote:
> 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 at redhat.com>
Thank all for working on this. I didn't come across any issues during
testing the last 2 days and code LGTM.
I've fixed the alignment issue spotted by Ilya below and pushed to master.
> + ds_put_format(reply, " %s", netdev_rxq_enabled(list[i].rxq->rx)
> + ? "(enabled) " : "(disabled)");
The second line should be shifted to keep the ternary operator visually
consistent:
ds_put_format(reply, " %s", netdev_rxq_enabled(list[i].rxq->rx)
? "(enabled) " : "(disabled)");
Regards
Ian
More information about the dev
mailing list