Description of problem: Over a period of time traffic patterns can change, or the datapath of OVS-DPDK can be found to be imbalanced, whereby some of the datapath cores are heavily overloaded leading to packet loss, and some are lightly loaded with available cycles. This can lead to continual packet loss. During reconfiguration OVS-DPDK will attempt to create a more balanced system, but reconfiguration may not take place for a long time. Auto-rebalance is an experimental feature in OVS 2.11 that will monitor the health of the processing load across cores, perform several checks and if predicted that the system will be have a better balanced load after a reconfiguration, it will automatically trigger a reconfiguration. Steps to Test: 1. setup 2 ports with 2 rx queues and 2 pmd cores 2. adjust traffic rates so that 1 pmd core is heavily overload (95%+) with 2 heavily loaded rxqs, while the other pmd core is lightly loaded with 2 lightly loaded rxqs. 3. After ~1 min, confirm 2. with: ovs-appctl dpif-netdev/pmd-rxq-show 4. enable auto-rebalance: ovs-vsctl set open_vswitch . other_config:pmd-auto-lb="true" 5. observe that after ~1 min auto-rebalance detects this situation and requests a rebalance (dpif_netdev|INFO|PMD auto lb dry run. requesting datapath reconfigure.) 7. Observe with pmd-rxq-show that now that the heavily loaded rx queues are on different cores Additional info: Further modifications may be made at a later time either inside of outside of OVS to refine this feature.
verified with openvswitch2.11-2.11.0-3.el7fdp.x86_64. verified with single rxq and multi rxq per port. pmd-auto-rebalance works well. Single rxq per port just like this : # ovs-appctl dpif-netdev/pmd-rxq-show pmd thread numa_id 0 core_id 10: isolated : false port: dpdk1 queue-id: 0 pmd usage: 57 % port: dpdkvhostuser0 queue-id: 0 pmd usage: 40 % pmd thread numa_id 0 core_id 38: isolated : false port: dpdk0 queue-id: 0 pmd usage: 0 % port: dpdkvhostuser1 queue-id: 0 pmd usage: 0 % # # # ovs-appctl dpif-netdev/pmd-rxq-show pmd thread numa_id 0 core_id 10: isolated : false port: dpdk1 queue-id: 0 pmd usage: NOT AVAIL port: dpdkvhostuser1 queue-id: 0 pmd usage: NOT AVAIL pmd thread numa_id 0 core_id 38: isolated : false port: dpdk0 queue-id: 0 pmd usage: NOT AVAIL port: dpdkvhostuser0 queue-id: 0 pmd usage: NOT AVAIL #
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2019:0799