<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>#repo-username-link:visited{color:#333333}
#repo-username-link:hover{color:#333333}
#repo-username-link:active{color:#333333}
#branch-name-link:visited{color:#333333}
#branch-name-link:hover{color:#333333}
#branch-name-link:active{color:#333333}
.success:visited{color:#32D282}
.success:hover{color:#32D282}
.success:active{color:#32D282}
.failure:visited{color:#DB4545}
.failure:hover{color:#DB4545}
.failure:active{color:#DB4545}
.error:visited{color:#666766}
.error:hover{color:#666766}
.error:active{color:#666766}
#changeset-link:visited{color:#0068FF}
#changeset-link:hover{color:#0068FF}
#changeset-link:active{color:#0068FF}
#documentation-link:visited{color:#0068FF}
#documentation-link:hover{color:#0068FF}
#documentation-link:active{color:#0068FF}
#configuration-link:visited{color:#9EA3A8}
#configuration-link:hover{color:#9EA3A8}
#configuration-link:active{color:#9EA3A8}
#email-footer-section a:active{color:#9EA3A8}
#email-footer-section a:hover{color:#9EA3A8}
#email-footer-section a:visited{color:#9EA3A8}</style></head>
<body style="min-width: 100%;height: 100%;margin: 0;padding: 0;">
<table id="travis-ci-email-container" align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" style="height:100%;width:100%;padding:10px;font-family:'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:150%;text-align:center;color:#333333;background-color:#F4F5F9;background-image:url('https://s3.amazonaws.com/travis-email-assets/build_background.png');height: 100%;width: 100%;padding: 10px;font-family: 'Source Sans Pro', 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height: 150%;text-align: center;color: #333333;background-color: #F4F5F9;background-image: url(https://s3.amazonaws.com/travis-email-assets/build_background.png);">
<tr>
<td align="center" valign="top" style="padding-bottom: 20px;">
<table id="email-content-container" border="0" cellpadding="0" cellspacing="0" style="width:500px;padding:32px;background-color:#FFFFFF;width: 500px; padding: 32px; background-color: #FFFFFF;">
<!-- Repository Username Section -->
<tr>
<td id="repo-username-section" align="center" valign="top" style="padding-bottom:20px;padding-bottom: 20px;">
<a id="repo-username-link" style="color:#333333;text-decoration:none;border-bottom:1px solid #333333;padding-bottom:4px;color: #333333; border-bottom: 1px solid #333333; text-decoration: none; padding-bottom: 4px;" href="https://travis-ci.org/istokes/ovs?utm_medium=notification&utm_source=email">
<p class="repo-slug" style="margin:0px;font-size:30px;font-weight:600;line-height:36px;padding-left:5px;display: inline; font-size: 30px; font-weight: 600; line-height: 36px; padding-right: 5px; padding-left: 0px;">istokes</p>
<p id="repo-slug-divider" style="margin:0px;font-size:30px;font-weight:100;color:#9EA3A8;display: inline; font-size: 30px; font-weight: 100; color: #9EA3A8;">/</p>
<p class="repo-slug" style="margin:0px;font-size:30px;font-weight:600;line-height:36px;padding-left:5px;display: inline; font-size: 30px; font-weight: 600; line-height: 36px; padding-left: 5px;">ovs</p>
</a> </td>
</tr>
<!-- Branch Name Section -->
<tr>
<td id="branch-name-section" align="center" valign="top" style="padding-bottom: 35px;">
<p id="branch-name" style="margin:0px;font-size:28px;font-weight:300;margin: 0px; font-size: 28px; font-weight: 300;">
<img alt="branch icon" style="width:16px;height:auto;padding-right:8px;vertical-align:bottom;width: 16px; height: auto; padding-right: 8px; vertical-align: bottom;" src="https://s3.amazonaws.com/travis-email-assets/branch.png"><a id="branch-name-link" style="color:#333333;line-height:36px;text-decoration:none;border-bottom:1px solid #333333;text-decoration: none; border-bottom: 1px solid #333333; padding-bottom: 2px; line-height: 36px;" href="https://github.com/istokes/ovs/tree/dp_hash_recirc">dp_hash_recirc</a>
</p>
</td>
</tr>
<!-- Build Status Section -->
<tr>
<td align="center" valign="top" style="padding-bottom: 20px;">
<table cellpadding="0" cellspacing="0" class="build-status-border build-status-border-failure" style="border-radius:3px;border:1px solid #DB4545;width: 100%;">
<tr class="build-status-background-failure" style="background:rgba(219, 69, 69, 0.1)">
<td id="status-icon-section" align="center" valign="top" class="build-status-border-bottom-failure" style="border-bottom:1px solid #DB4545;padding: 15px 15px;">
<div style="float: left;">
<div style="display: inline;"><img alt="build has failed" style="display: inline; vertical-align: sub; width: 17px; height: 17px; padding-right: 8px;" src="https://s3.amazonaws.com/travis-email-assets/status-failed.png"></div><div style="display: inline;"><a id="status-section-message" class="failure" style="color:#DB4545;font-size: 16px; font-weight: 600;" href="https://travis-ci.org/istokes/ovs/builds/558895888?utm_medium=notification&utm_source=email">Build #927 failed</a></div>
</div>
<div style="display: inline; float: left;"><img id="arrow" alt="arrow to build time" style="width: 7px; height: auto; vertical-align: text-bottom; padding: 0px 8px;" src="https://s3.amazonaws.com/travis-email-assets/failure-arrow.png"></div>
<div style="float: right;">
<span><img id="build-time-clock-icon" alt="clock icon" style="width: 15px; height: 17px; padding-right: 8px; vertical-align: sub" src="https://s3.amazonaws.com/travis-email-assets/time.png"></span><span style="font-size: 14px;">58 mins and 56 secs</span>
</div>
</td>
</tr>
<tr>
<td id="user-avatar-changeset-section" align="center" valign="top" style="padding-bottom:32px;padding: 20px 15px 35px 15px;">
<div id="user-avatar-changeset-left" style="float:left;float: left;">
<p style="margin:0px;display: inline; font-size: 14px; font-weight: 700; color: #333333;">
<img alt="Vishal Deep Ajmera avatar" style="width: 22px; height: auto; border-radius: 10px; vertical-align: middle; margin-right: 8px;" src="https://secure.gravatar.com/avatar/f7f2048bc02080694af188f1ac459e84">Vishal Deep Ajmera
</p>
</div>
<div id="user-avatar-changeset-right" style="float:right;float: right;">
<a id="changeset-link" style="font-size:14px;font-weight:600;color:#0068FF;font-size: 14px; color: #0068FF; font-weight: 600;" href="https://github.com/istokes/ovs/commit/ae8ce59a0be0">ae8ce59 CHANGESET →</a>
</div>
</td>
</tr>
<tr>
<td id="commit-message-section" align="center" valign="top" style="min-height:104px;padding:0px 20px 20px 20px;min-height: 104px; padding: 0px 15px 20px 15px;">
<p id="commit-message" style="margin:0px;font-family:cousine, monospace;font-size:14px;line-height:22px;font-family: cousine, monospace; font-size: 14px; text-align: left; line-height: 22px;">Avoid dp_hash recirculation for balance-tcp bond selection mode<br><br>Problem:<br>--------<br>In OVS-DPDK, flows with output over a bond interface of type “balance-tcp”<br>(using a hash on TCP/UDP 5-tuple) get translated by the ofproto layer into<br>"HASH" and "RECIRC" datapath actions. After recirculation, the packet is<br>forwarded to the bond member port based on 8-bits of the datapath hash<br>value computed through dp_hash. This causes performance degradation in the<br>following ways:<br><br>1. The recirculation of the packet implies another lookup of the packet’s<br>flow key in the exact match cache (EMC) and potentially Megaflow classifier<br>(DPCLS). This is the biggest cost factor.<br><br>2. The recirculated packets have a new “RSS” hash and compete with the<br>original packets for the scarce number of EMC slots. This implies more<br>EMC misses and potentially EMC thrashing causing costly DPCLS lookups.<br><br>3. The 256 extra megaflow entries per bond for dp_hash bond selection put<br>additional load on the revalidation threads.<br><br>Owing to this performance degradation, deployments stick to “balance-slb”<br>bond mode even though it does not do active-active load balancing for<br>VXLAN- and GRE-tunnelled traffic because all tunnel packet have the same<br>source MAC address.<br><br>Proposed optimization:<br>----------------------<br>This proposal introduces a new load-balancing output action instead of<br>recirculation.<br><br>Maintain one table per-bond (could just be an array of uint16's) and<br>program it the same way internal flows are created today for each possible<br>hash value(256 entries) from ofproto layer. Use this table to load-balance<br>flows as part of output action processing.<br><br>Currently xlate_normal() -> output_normal() -> bond_update_post_recirc_rules()<br>-> bond_may_recirc() and compose_output_action__() generate<br>“dp_hash(hash_l4(0))” and “recirc(<RecircID>)” actions. In this case the<br>RecircID identifies the bond. For the recirculated packets the ofproto layer<br>installs megaflow entries that match on RecircID and masked dp_hash and send<br>them to the corresponding output port.<br><br>Instead, we will now generate actions as<br> "hash(l4(0)),lb_output(bond,<bond id>)"<br><br>This combines hash computation (only if needed, else re-use RSS hash) and<br>inline load-balancing over the bond. This action is used *only* for balance-tcp<br>bonds in OVS-DPDK datapath (the OVS kernel datapath remains unchanged).<br><br>Example:<br>--------<br>Current scheme:<br>---------------<br>With 1 IP-UDP flow:<br><br>flow-dump from pmd on cpu core: 2<br>recirc_id(0),in_port(7),packet_type(ns=0,id=0),eth(src=02:00:00:02:14:01,dst=0c:c4:7a:58:f0:2b),eth_type(0x0800),ipv4(frag=no), packets:2828969, bytes:181054016, used:0.000s, actions:hash(hash_l4(0)),recirc(0x1)<br><br>recirc_id(0x1),dp_hash(0x113683bd/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:2828937, bytes:181051968, used:0.000s, actions:2<br><br>With 8 IP-UDP flows (with random UDP src port): (all hitting same DPCL):<br><br>flow-dump from pmd on cpu core: 2<br>recirc_id(0),in_port(7),packet_type(ns=0,id=0),eth(src=02:00:00:02:14:01,dst=0c:c4:7a:58:f0:2b),eth_type(0x0800),ipv4(frag=no), packets:2674009, bytes:171136576, used:0.000s, actions:hash(hash_l4(0)),recirc(0x1)<br><br>recirc_id(0x1),dp_hash(0xf8e02b7e/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:377395, bytes:24153280, used:0.000s, actions:2<br>recirc_id(0x1),dp_hash(0xb236c260/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:333486, bytes:21343104, used:0.000s, actions:1<br>recirc_id(0x1),dp_hash(0x7d89eb18/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:348461, bytes:22301504, used:0.000s, actions:1<br>recirc_id(0x1),dp_hash(0xa78d75df/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:633353, bytes:40534592, used:0.000s, actions:2<br>recirc_id(0x1),dp_hash(0xb58d846f/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:319901, bytes:20473664, used:0.001s, actions:2<br>recirc_id(0x1),dp_hash(0x24534406/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:334985, bytes:21439040, used:0.001s, actions:1<br>recirc_id(0x1),dp_hash(0x3cf32550/0xff),in_port(7),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(frag=no), packets:326404, bytes:20889856, used:0.001s, actions:1<br><br>New scheme:<br>-----------<br>We can do with a single flow entry (for any number of new flows):<br><br>in_port(7),packet_type(ns=0,id=0),eth(src=02:00:00:02:14:01,dst=0c:c4:7a:58:f0:2b),eth_type(0x0800),ipv4(frag=no), packets:2674009, bytes:171136576, used:0.000s, actions:hash(l4(0)),lb_output(bond,1)<br><br>A new CLI has been added to dump the per-PMD bond cache as given below.<br><br>“sudo ovs-appctl dpif-netdev/pmd-bond-show”<br><br>root@ubuntu-190:performance_scripts # sudo ovs-appctl dpif-netdev/pmd-bond-show<br>pmd thread numa_id 0 core_id 4:<br>Bond cache:<br> bond-id 1 :<br> bucket 0 - slave 2<br> bucket 1 - slave 1<br> bucket 2 - slave 2<br> bucket 3 - slave 1<br><br>Performance improvement:<br>------------------------<br>With a prototype of the proposed idea, the following perf improvement is seen<br>with Phy-VM-Phy UDP traffic, single flow. With multiple flows, the improvement<br>is even more enhanced (due to reduced number of flows).<br><br>1 VM:<br>*****<br>+--------------------------------------+<br>| mpps |<br>+--------------------------------------+<br>| Flows master with-opt. %delta |<br>+--------------------------------------+<br>| 1 4.53 5.89 29.96<br>| 10 4.16 5.89 41.51<br>| 400 3.55 5.55 56.22<br>| 1k 3.44 5.45 58.30<br>| 10k 2.50 4.63 85.34<br>| 100k 2.29 4.27 86.15<br>| 500k 2.25 4.27 89.23<br>+--------------------------------------+<br>mpps: million packets per second.<br><br>Signed-off-by: Manohar Krishnappa Chidambaraswamy <manukc@gmail.com><br>Co-authored-by: Manohar Krishnappa Chidambaraswamy <manukc@gmail.com><br>Signed-off-by: Vishal Deep Ajmera <vishal.deep.ajmera@ericsson.com><br><br>CC: Jan Scheurich <jan.scheurich@ericsson.com><br>CC: Venkatesan Pradeep <venkatesan.pradeep@ericsson.com><br>CC: Nitin Katiyar <nitin.katiyar@ericsson.com></p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<!-- Broadcast Section -->
<!-- Build Environment Updates Section -->
<tr>
<td id="update-section" align="center" valign="top" style="padding-bottom:20px;padding-bottom: 20px;">
<table id="update-container" border="0" cellpadding="0" cellspacing="0" style="width:500px;padding:32px 32px 42px 32px;background-color:#FFFFFF;width: 500px; padding: 32px 32px 42px 32px; background-color: #FFFFFF">
<tr>
<td align="center" valign="top">
<p id="update-header" style="margin:0px;font-size:24px;line-height:31px;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid #0068FF;border-bottom: 2px solid #0068FF; padding-bottom: 10px; font-size: 24px; line-height: 31px; margin-bottom: 20px;">Want to know about upcoming build environment updates?</p>
<p id="update-message" style="margin:0px;font-size:16px;font-weight:300;line-height:26px;margin-bottom:32px;font-size: 16px; line-height: 26px; font-weight: 300; margin-bottom: 32px;">Would you like to stay up-to-date with the upcoming Travis CI build environment updates? We set up a mailing list for you!</p>
<a id="sign-up-button" style="font-size:14px;font-weight:600;color:#FFFFFF;text-decoration:none;background-color:#0068FF;padding:12px 20px;border-radius:3px;font-size: 14px; font-weight: 600; color: #FFFFFF; background-color: #0068FF; text-decoration: none; padding: 12px 20px; border-radius: 3px;" href="http://eepurl.com/9OCsP">SIGN UP HERE</a>
</td>
</tr>
</table>
</td>
</tr>
<!-- Documentation Section -->
<tr>
<td align="center" valign="top" style="padding-bottom: 20px;">
<table id="documentation-container" border="0" cellpadding="0" cellspacing="0" style="width:500px;padding:25px;background-color:rgba(222,239,255,0.3);border:1px solid #66A4FF;border-radius:3px;width: 500px; padding: 25px; background-color: rgba(222,239,255,0.3); border: 1px solid #66A4FF; border-radius: 3px;">
<tr>
<td id="documentation-section" align="center" valign="top">
<div>
<img alt="book icon" id="documentation-icon" style="display:inline;vertical-align:bottom;padding-right:5px;display: inline; vertical-align: bottom; padding-right: 5px;" src="https://s3.amazonaws.com/travis-email-assets/documentation.png">
<p id="documentation-text" style="margin:0px;display:inline;font-size:26px;font-weight:300;color:#0068FF;font-size: 26px; font-weight: 300; color: #0068FF; display: inline;">
<a id="documentation-link" href="https://docs.travis-ci.com/" style="color:#0068FF">Documentation</a> about Travis CI
</p>
</div>
</td>
</tr>
</table>
</td>
</tr>
<!-- Email Footer Section -->
<tr>
<td align="center" valign="top">
<table id="travis-ci-email-footer-container" border="0" cellpadding="20" cellspacing="0" style="width:500px;width: 500px;">
<tr>
<td id="questions-section" align="center" valign="top" style="font-weight:300;color:#0068FF;color:#0068FF; font-weight: 300;">
<span>Have any questions?</span>
<span>
<a href="mailto:support@travis-ci.com" style="color: #0068FF">We're here to help.</a>
</span>
</td>
</tr>
<tr>
<td id="email-footer-section" align="center" valign="top" style="font-size:10px;line-height:200%;text-align:center;color:#9EA3A8;padding-top:0px">
<span>
<a href="https://travis-ci.org/account/preferences/unsubscribe?repository=16644441&utm_medium=notification&utm_source=email" style="color:#9EA3A8">Unsubscribe</a> from build emails from the istokes/ovs repository.
</span>
</td>
</tr>
<tr>
<td id="email-footer-section" align="center" valign="top" style="font-size:10px;line-height:200%;text-align:center;color:#9EA3A8;padding-top:0px">
<span>
To unsubscribe from <strong>all</strong> build emails, please update your <a href="https://travis-ci.org/account/preferences/unsubscribe?utm_medium=notification&utm_source=email" style="color:#9EA3A8">settings</a>.
</span>
</td>
</tr>
<tr>
<td id="travis-ci-footer-logo-section" style="text-align:center;text-align: center;">
<a href="https://travis-ci.com"><img alt="black and white travis ci logo" src="https://s3.amazonaws.com/travis-email-assets/TravisCI-Logo-BW.png"></a>
</td>
</tr>
<tr>
<td id="email-footer-section" style="font-size:10px;line-height:200%;text-align:center;color:#9EA3A8;padding-top:0px;color: #9EA3A8; font-size: 10px; line-height: 200%; text-align: center; color: #9EA3A8; padding-top: 0px;">
<p style="margin:0px;margin: 0px;">Travis CI GmbH, Rigaer Str. 8, 10427 Berlin, Germany | GF/CEO: Randy Jacops |
<span>Contact: <a style="color:#9EA3A8;color: #9EA3A8;" href="mailto:contact@travis-ci.com">contact@travis-ci.com</a> | Amtsgericht Charlottenburg, Berlin, HRB 140133 B | Umsatzsteuer-ID gemäß §27 a Umsatzsteuergesetz: DE282002648</span>
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"action": {
"@type": "ViewAction",
"url": "https://travis-ci.org/istokes/ovs/builds/558895888?utm_medium=notification&utm_source=email",
"name": "View Build"
},
"description": "View Build #927 on Travis CI"
}
</script>
</body>
</html>