Hi All, I've updated the patch to account for two sets of comments on the RFCv2 see history below.
This patch set implements the 'preferential read' part of the feature of ingress scheduling described at OvS 2017 Fall Conference https://www.slideshare.net/LF_OpenvSwitch/lfovs17ingress-scheduling-82280320. It allows configuration to specify an ingress priority for an entire interface. This protects traffic on higher priority interfaces from loss and latency as PMDs get overloaded. Results for physical interfaces are excellent - higher priority ports suffer much less loss: Phy i/f: |dpdk_0 dpdk_1 dpdk_2 dpdk_3 % Total Load | 25% 25% 25% 25% Priority (3=Hi)| 0 1 2 3 ---------------+--------------------------- Total Offered | Load (kpps) | Pkt Loss (kpps) ------------------------------------------- 2100 | 0 0 0 0 2300 | 23 0 0 0 2500 | 308 0 0 0 2900 | 628 24 0 0 3400 | 811 370 8 0 3500 | 821 391 52 0 4000 | 964 565 238 20 This also holds true to a great extent when the 'priority' port is carrying most of the traffic: Phy i/f: |dpdk_0 dpdk_1 dpdk_2 dpdk_3 % Total Load | 10% 20% 30% 40% Priority (3=Hi)| 0 1 2 3 ---------------+--------------------------- Total Offered | Load (kpps) | Pkt Loss (kpps) ------------------------------------------- 2300 | 8 0 0 0 2500 | 181 0 0 0 2550 | 213 13 0 0 2620 | 223 63 0 9 2700 | 230 82 10 52 3000 | 262 143 101 172 3500 | 310 242 249 370 4000 | 361 341 398 569 For vhostuser ports VMs running iperf3 (TCP) benefit to an appreciable extent from being on a 'priority' ports - without a drop in overall throughput. Scenario: 3 VM-pairs running iperf3 (baseline) --------------------------------------------- VM pair | 1,2 3,4 5,6 priority | 0 0 0 Tput (Gbit/s)| 3.3 3.3 3.3 Scenario: 3 VM-pairs running iperf3 (one pair prioritized) ---------------------------------------------------------- VM pair | 1,2 3,4 5,6 priority | 0 0 0 Tput (Gbit/s)| 2.7 2.7 4.6 History: v1: * the configuration in only in dpif-netdev and will work with any polled netdev's not just dpdk netdevs. * re-configuration of the priorities at run-time is supported. * keep configuration in Interfaces other_config * applies cleanly on 9b4f08c RFCv2: * Keep ingress prio config in netdev base rather than in each netdev type. * Account for differing rxq lengths * Applies cleanly to 4299145 RFCv1: Initial version. Billy O'Mahony (2): ingress scheduling: documentation ingress scheduling: Provide per interface ingress priority Documentation/howto/dpdk.rst | 15 ++++ include/openvswitch/ofp-parse.h | 3 + lib/dpif-netdev.c | 188 +++++++++++++++++++++++++++++++++------- lib/netdev-dpdk.c | 10 +++ vswitchd/vswitch.xml | 15 ++++ 5 files changed, 200 insertions(+), 31 deletions(-) -- 2.7.4 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev