<div dir="ltr">Hi Tiago,<div><br></div><div>you are correct, this is a virtualization environment. The tests numbers I am quoting are running directly on the hypervisor, rather than guests.</div><div><br></div>My ultimate aim is to get good performance for guests talking over VXLAN. Using OvS I get around 5Gb/s between guests talking over VXLAN and near wire speed performance where the guests talk to a bridge without VXLAN. I&#39;d like to improve on the VXLAN performance.<div><br><div><div>I believe VXLAN is offloaded by tx-udp_tnl-segmentation? (...VXLAN is being configured at the interface level by OpenNebula, so handled by the kernel module).</div><div><br><div>Regarding the NIC, I see:</div><div><br></div><div>





<p class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">[root@v41 ~]# ethtool -k p2p1 | grep tcp-segmentation-offload</span></p>
<p class="gmail-p2" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(195,55,32)"><span class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"><b>tcp-segmentation-offload</b></span><span class="gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">: on</span></p>
<p class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><br></p>Are the TSO patches for OvS-DPDK suitable to apply and use, if so anything I should know? eg version to apply to, source to obtain current patches from?</div><div><br></div><div>Many thanks,</div><div><br></div><div>Rob</div><div><br></div><div><div class="gmail_quote"><div dir="ltr">On Fri, Nov 16, 2018 at 2:06 AM Lam, Tiago &lt;<a href="mailto:tiago.lam@intel.com">tiago.lam@intel.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I have a couple of questions, but at a first glance this seems to be a<br>
result of OvS-DPDK not yet supporting TSO, while the Kernel does. We are<br>
in the works of addressing that.<br>
<br>
The numbers you are reporting, ~9.4 Gbps vs ~5.5 Gbps are very similar<br>
to the ones we have been getting with and without our TSO series [1]<br>
applied.<br>
<br>
On the description below, is this a virtualized environment by any<br>
change? I.e. are you running the iperf tests on top of VMs running on<br>
those Centos hosts, or directly on them?<br>
<br>
Can you also confirm you are using TSO when using OvS with the Kernel by<br>
reporting what you get with $ethtool -k $iface | grep<br>
&quot;tcp-segmentation-offload:&quot;. Is it reported as &quot;on&quot;?<br>
<br>
Regards,<br>
Tiago.<br>
<br>
[1] <a href="https://mail.openvswitch.org/pipermail/ovs-dev/2018-August/350832.html" rel="noreferrer" target="_blank">https://mail.openvswitch.org/pipermail/ovs-dev/2018-August/350832.html</a><br>
<br>
On 15/11/2018 22:17, Robert Brooks wrote:<br>
&gt; I have a pair of Centos 7 hosts on 10gig switch.<br>
&gt; <br>
&gt; Using OVS without dpdk enabled I can get 9.4Gb/s with a simple iperf test.<br>
&gt; <br>
&gt; After switching the receiving host to ovs-dpdk following guidance here:<br>
&gt; <a href="http://docs.openvswitch.org/en/latest/intro/install/dpdk/" rel="noreferrer" target="_blank">http://docs.openvswitch.org/en/latest/intro/install/dpdk/</a><br>
&gt; <br>
&gt; I get 1.02Gb/s with 1500 MTU and 5.75Gb/s with a 9000 MTU.<br>
&gt; <br>
&gt; Hardware is a Dell R630, with two E5-2680 26 core @ 2.40GHz cpus, 256GB<br>
&gt; RAM, Intel 92599ES NIC.<br>
&gt; <br>
&gt; I have confirmed the doucmented kernel boot options are set and 1GB<br>
&gt; hugepages are in use.<br>
&gt; <br>
&gt; # cat /proc/cmdline <br>
&gt; BOOT_IMAGE=/vmlinuz-3.10.0-862.3.2.el7.x86_64<br>
&gt; root=UUID=7d4edcad-0fd5-4224-a55f-ff2db81aac27 ro crashkernel=auto<br>
&gt; <a href="http://rd.lvm.lv" rel="noreferrer" target="_blank">rd.lvm.lv</a> &lt;<a href="http://rd.lvm.lv" rel="noreferrer" target="_blank">http://rd.lvm.lv</a>&gt;=vg01/swap <a href="http://rd.lvm.lv" rel="noreferrer" target="_blank">rd.lvm.lv</a><br>
&gt; &lt;<a href="http://rd.lvm.lv" rel="noreferrer" target="_blank">http://rd.lvm.lv</a>&gt;=vg01/usr console=ttyS0,115200 iommu=pt intel_iommu=on<br>
&gt; default_hugepagesz=1G hugepagesz=1G hugepages=8<br>
&gt; <br>
&gt; Software is openvswitch 2.10.1 built using the provided rpm spec file. I<br>
&gt; have used both the Centos provided dpdk 17.11 and a re-compile using<br>
&gt; latest LTS of 17.11.4.<br>
&gt; <br>
&gt; I have tried various performance tweaks, including cpu pinning and<br>
&gt; isolated cpus.<br>
&gt; <br>
&gt; Switching back to regular ovs returns the performance to close to wire<br>
&gt; speed.<br>
&gt; <br>
&gt; Under load the following is logged:<br>
&gt; <br>
&gt; 2018-11-15T21:59:24.306Z|00170|poll_loop|INFO|wakeup due to [POLLIN] on<br>
&gt; fd 74 (character device /dev/net/tun) at lib/netdev-linux.c:1347 (98%<br>
&gt; CPU usage)<br>
&gt; <br>
&gt; Config dump:<br>
&gt; <br>
&gt; # ovsdb-client dump Open_vSwitch<br>
&gt; <br>
&gt; AutoAttach table<br>
&gt; <br>
&gt; _uuid mappings system_description system_name<br>
&gt; <br>
&gt; ----- -------- ------------------ -----------<br>
&gt; <br>
&gt; <br>
&gt; Bridge table<br>
&gt; <br>
&gt; _uuid                                auto_attach controller datapath_id <br>
&gt;       datapath_type datapath_version external_ids fail_mode flood_vlans<br>
&gt; flow_tables ipfix mcast_snooping_enable mirrors name  netflow<br>
&gt; other_config ports                                                      <br>
&gt;          <br>
&gt; <br>
&gt; ------------------------------------ ----------- ----------<br>
&gt; ------------------ ------------- ---------------- ------------ ---------<br>
&gt; ----------- ----------- ----- --------------------- ------- -----<br>
&gt; ------- ------------<br>
&gt; ---------------------------------------------------------------------<br>
&gt; <br>
&gt; 006f021a-b14d-49fb-a11d-48df2fa2bca1 []          []        <br>
&gt; &quot;0000001b21a6ddc4&quot; netdev        &quot;&lt;built-in&gt;&quot;     {}           []       <br>
&gt; []          {}          []    false                 []      &quot;br0&quot; []   <br>
&gt;   {}           [3bd79dba-777c-40d0-b573-bf9e027326f4,<br>
&gt; 60b0661f-2177-4283-a6cb-a80336<br>
&gt; <br>
&gt; <br>
&gt; Controller table<br>
&gt; <br>
&gt; _uuid connection_mode controller_burst_limit controller_rate_limit<br>
&gt; enable_async_messages external_ids inactivity_probe is_connected<br>
&gt; local_gateway local_ip local_netmask max_backoff other_config role<br>
&gt; status target<br>
&gt; <br>
&gt; ----- --------------- ---------------------- ---------------------<br>
&gt; --------------------- ------------ ---------------- ------------<br>
&gt; ------------- -------- ------------- ----------- ------------ ----<br>
&gt; ------ ------<br>
&gt; <br>
&gt; <br>
&gt; Flow_Sample_Collector_Set table<br>
&gt; <br>
&gt; _uuid bridge external_ids id ipfix<br>
&gt; <br>
&gt; ----- ------ ------------ -- -----<br>
&gt; <br>
&gt; <br>
&gt; Flow_Table table<br>
&gt; <br>
&gt; _uuid external_ids flow_limit groups name overflow_policy prefixes<br>
&gt; <br>
&gt; ----- ------------ ---------- ------ ---- --------------- --------<br>
&gt; <br>
&gt; <br>
&gt; IPFIX table<br>
&gt; <br>
&gt; _uuid cache_active_timeout cache_max_flows external_ids obs_domain_id<br>
&gt; obs_point_id other_config sampling targets<br>
&gt; <br>
&gt; ----- -------------------- --------------- ------------ -------------<br>
&gt; ------------ ------------ -------- -------<br>
&gt; <br>
&gt; <br>
&gt; Interface table<br>
&gt; <br>
&gt; _uuid                                admin_state bfd bfd_status<br>
&gt; cfm_fault cfm_fault_status cfm_flap_count cfm_health cfm_mpid<br>
&gt; cfm_remote_mpids cfm_remote_opstate duplex error external_ids ifindex <br>
&gt; ingress_policing_burst ingress_policing_rate lacp_current link_resets<br>
&gt; link_speed  link_stat <br>
&gt; <br>
&gt; ------------------------------------ ----------- --- ----------<br>
&gt; --------- ---------------- -------------- ---------- --------<br>
&gt; ---------------- ------------------ ------ ----- ------------ --------<br>
&gt; ---------------------- --------------------- ------------ -----------<br>
&gt; ----------- ----------<br>
&gt; <br>
&gt; 271077eb-97af-4c2d-a5ee-2c63c9367312 up          {}  {}         []     <br>
&gt;   []               []             []         []       []              <br>
&gt; []                 full   []    {}           13       0                 <br>
&gt;     0                     []           11          10000000    up        <br>
&gt; <br>
&gt; 4c3f7cdb-fd16-44c7-bb82-4aa8cef0c136 up          {}  {}         []     <br>
&gt;   []               []             []         []       []              <br>
&gt; []                 full   []    {}           13032858 0                 <br>
&gt;     0                     []           0           10000000000 up       s<br>
&gt; <br>
&gt; <br>
&gt; Manager table<br>
&gt; <br>
&gt; _uuid connection_mode external_ids inactivity_probe is_connected<br>
&gt; max_backoff other_config status target<br>
&gt; <br>
&gt; ----- --------------- ------------ ---------------- ------------<br>
&gt; ----------- ------------ ------ ------<br>
&gt; <br>
&gt; <br>
&gt; Mirror table<br>
&gt; <br>
&gt; _uuid external_ids name output_port output_vlan select_all<br>
&gt; select_dst_port select_src_port select_vlan snaplen statistics<br>
&gt; <br>
&gt; ----- ------------ ---- ----------- ----------- ----------<br>
&gt; --------------- --------------- ----------- ------- ----------<br>
&gt; <br>
&gt; <br>
&gt; NetFlow table<br>
&gt; <br>
&gt; _uuid active_timeout add_id_to_interface engine_id engine_type<br>
&gt; external_ids targets<br>
&gt; <br>
&gt; ----- -------------- ------------------- --------- -----------<br>
&gt; ------------ -------<br>
&gt; <br>
&gt; <br>
&gt; Open_vSwitch table<br>
&gt; <br>
&gt; _uuid                                bridges                           <br>
&gt;     cur_cfg datapath_types   db_version dpdk_initialized dpdk_version  <br>
&gt; external_ids                                                            <br>
&gt;                                 iface_types                             <br>
&gt; <br>
&gt; ------------------------------------<br>
&gt; -------------------------------------- ------- ----------------<br>
&gt; ---------- ---------------- --------------<br>
&gt; --------------------------------------------------------------------------------------------------------<br>
&gt; ----------------------------------------<br>
&gt; <br>
&gt; ea8e7bcc-df11-42bd-96c9-b7eaafdfa863<br>
&gt; [006f021a-b14d-49fb-a11d-48df2fa2bca1] 45      [netdev, system] &quot;7.16.1&quot;<br>
&gt;   true             &quot;DPDK 17.11.4&quot; {hostname=&quot;v41&quot;,<br>
&gt; rundir=&quot;/var/run/openvswitch&quot;,<br>
&gt; system-id=&quot;7d5d1db0-87db-41bc-bb94-661dde831e9f&quot;} [dpdk, dpdkr,<br>
&gt; dpdkvhostuser, dpdkvhostum<br>
&gt; <br>
&gt; <br>
&gt; Port table<br>
&gt; <br>
&gt; _uuid                                bond_active_slave bond_downdelay<br>
&gt; bond_fake_iface bond_mode bond_updelay cvlans external_ids fake_bridge<br>
&gt; interfaces                             lacp mac name   other_config<br>
&gt; protected qos rstp_statistics rstp_status statistics status tag trunks<br>
&gt; vlan_mode<br>
&gt; <br>
&gt; ------------------------------------ ----------------- --------------<br>
&gt; --------------- --------- ------------ ------ ------------ -----------<br>
&gt; -------------------------------------- ---- --- ------ ------------<br>
&gt; --------- --- --------------- ----------- ---------- ------ --- ------<br>
&gt; ---------<br>
&gt; <br>
&gt; 60b0661f-2177-4283-a6cb-a80336a8c478 []                0             <br>
&gt; false           []        0            []     {}           false      <br>
&gt; [271077eb-97af-4c2d-a5ee-2c63c9367312] []   []  &quot;br0&quot;  {}          <br>
&gt; false     []  {}              {}          {}         {}     []  []     []<br>
&gt; <br>
&gt; 3bd79dba-777c-40d0-b573-bf9e027326f4 []                0             <br>
&gt; false           []        0            []     {}           false      <br>
&gt; [4c3f7cdb-fd16-44c7-bb82-4aa8cef0c136] []   []  &quot;p2p1&quot; {}          <br>
&gt; false     []  {}              {}          {}         {}     []  []     []<br>
&gt; <br>
&gt; <br>
&gt; QoS table<br>
&gt; <br>
&gt; _uuid external_ids other_config queues type<br>
&gt; <br>
&gt; ----- ------------ ------------ ------ ----<br>
&gt; <br>
&gt; <br>
&gt; Queue table<br>
&gt; <br>
&gt; _uuid dscp external_ids other_config<br>
&gt; <br>
&gt; ----- ---- ------------ ------------<br>
&gt; <br>
&gt; <br>
&gt; SSL table<br>
&gt; <br>
&gt; _uuid bootstrap_ca_cert ca_cert certificate external_ids private_key<br>
&gt; <br>
&gt; ----- ----------------- ------- ----------- ------------ -----------<br>
&gt; <br>
&gt; <br>
&gt; sFlow table<br>
&gt; <br>
&gt; _uuid agent external_ids header polling sampling targets<br>
&gt; <br>
&gt; ----- ----- ------------ ------ ------- -------- -------<br>
&gt; <br>
&gt; <br>
&gt; I see rx_dropped counters. Other than that I&#39;m not sure what&#39;s going on,<br>
&gt; as I&#39;ve tried various tuning suggested by dpdk, Intel and Red Hat, but<br>
&gt; performance remains unimproved.<br>
&gt; <br>
&gt; <br>
&gt; Regards,<br>
&gt; <br>
&gt; <br>
&gt; Rob<br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; discuss mailing list<br>
&gt; <a href="mailto:discuss@openvswitch.org" target="_blank">discuss@openvswitch.org</a><br>
&gt; <a href="https://mail.openvswitch.org/mailman/listinfo/ovs-discuss" rel="noreferrer" target="_blank">https://mail.openvswitch.org/mailman/listinfo/ovs-discuss</a><br>
&gt; <br>
</blockquote></div></div></div></div></div></div>