> -----Original Message-----
> From: Darrell Ball [mailto:db...@vmware.com]
> Sent: Friday, August 25, 2017 6:19 PM
> To: Fischetti, Antonio <antonio.fische...@intel.com>; d...@openvswitch.org
> Subject: Re: [ovs-dev] [PATCH v4] dpif-netdev: Avoid reading RSS hash when EMC
> is disabled
> 
> Hi Antonio
> 
> On 8/25/17, 6:56 AM, "ovs-dev-boun...@openvswitch.org on behalf of
> antonio.fische...@intel.com" <ovs-dev-boun...@openvswitch.org on behalf of
> antonio.fische...@intel.com> wrote:
> 
>     When EMC is disabled the reading of RSS hash is skipped.
>     Also, for packets that are not recirculated it retrieves
>     the hash value without considering the recirc id.
> 
>     Signed-off-by: Antonio Fischetti <antonio.fische...@intel.com>
>     ---
> 
>      V4
>       - reworked to remove dependencies from other patches in
>         patchset "Skip EMC for recirc pkts and other optimizations."
>         https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__mail.openvswitch.org_pipermail_ovs-2Ddev_2017-
> 2DAugust_337320.html&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-
> uZnsw&m=7UGZunJeutRugFmidRAykhZFRYscZ2rUUmhF7Ys9IM8&s=hzVGT1bI3zOj_x9J5cu18Q2D5
> WLHdEC1qhQ-Gu--TEE&e=
> 
>       - measurements were repeated with the latest head of master.
> 
>      Port-to-Port Test
>      =================
>             Software built with "-O2 -march=native -g".
> 
>             I measured the Rx rate regardless of pkt loss by sending 1 UDP
> flow,
>             64B packets, at the line-rate.
> 
>             2 PMDs with 3 Tx queues.
> 
>             Flows setup:
>               in_port=dpdk0 actions=output:dpdk1
>               in_port=dpdk1 actions=output:dpdk0
> 
>             Results
>             -------
>             Values are for the Rx rate in Mpps, regardless of packet loss.
> 
>             RSS column:
>                Yes: RSS hash is provided by the NIC
>                No: RSS is disabled and the 5-tuple hash must be
>                    computed in software.
> 
>                    Note: to simulate RSS disabled I added the line
>                    dp_packet_rss_valid(struct dp_packet *p)
>                    {
>                    +return false;
>                    #ifdef DPDK_NETDEV
> 
>             EMC column:
>                Yes: default probability insertion,
>                No: EMC disabled.
> 
>             Orig means Commit ID:
>               75f9e007e7f7eb91461e238f882d1c539c56bb8d
> 
> [Darrell]
> It looks like the main benefit (+6% throughput) occurs
> when RSS is not calculated by the NIC and emc is disabled. What are the common
> cases when RSS is not generated by the NIC ?

[Antonio]
A common case could be when packets are coming in from a VM.  
Also when the NIC does not provide a hash value, but this shouldn't be 
considered a common case I guess.


> 
> 
> 
>                         +--------------+----------------+
>             +-----+-----+    Orig      | Orig + this    |
>             | RSS | EMC |              |    patch       |
>             +-----+-----+--------------+----------------+
>             | Yes | Yes | 12.02, 11.38 | 12.18, 11.32   |
>             | Yes |  No |  8.35,  8.36 |  8.36,  8.38   |
>             +-----+-----+--------------+----------------+
>             |  No | Yes |  9.91, 11.15 |  9.84, 11.08   |
>             |  No |  No |  7.83,  7.87 |  8.33,  8.35   |
>             +-----+-----+--------------+----------------+
> 
>     ---
>      lib/dpif-netdev.c | 32 ++++++++++++++++++++++++++++----
>      1 file changed, 28 insertions(+), 4 deletions(-)
> 
>     diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
>     index e2cd931..1157998 100644
>     --- a/lib/dpif-netdev.c
>     +++ b/lib/dpif-netdev.c
>     @@ -4567,6 +4567,22 @@ dp_netdev_upcall(struct dp_netdev_pmd_thread *pmd,
> struct dp_packet *packet_,
>      }
> 
>      static inline uint32_t
>     +dpif_netdev_packet_get_rss_hash_orig_pkt(struct dp_packet *packet,
>     +                                const struct miniflow *mf)
>     +{
>     +    uint32_t hash;
>     +
>     +    if (OVS_LIKELY(dp_packet_rss_valid(packet))) {
>     +        hash = dp_packet_get_rss_hash(packet);
>     +    } else {
>     +        hash = miniflow_hash_5tuple(mf, 0);
>     +        dp_packet_set_rss_hash(packet, hash);
>     +    }
>     +
>     +    return hash;
>     +}
>     +
>     +static inline uint32_t
>      dpif_netdev_packet_get_rss_hash(struct dp_packet *packet,
>                                      const struct miniflow *mf)
>      {
>     @@ -4701,10 +4717,18 @@ emc_processing(struct dp_netdev_pmd_thread *pmd,
>              }
>              miniflow_extract(packet, &key->mf);
>              key->len = 0; /* Not computed yet. */
>     -        key->hash = dpif_netdev_packet_get_rss_hash(packet, &key->mf);
>     -
>     -        /* If EMC is disabled skip emc_lookup */
>     -        flow = (cur_min == 0) ? NULL: emc_lookup(flow_cache, key);
>     +        /* If EMC is disabled skip hash computation and emc_lookup */
>     +        if (OVS_LIKELY(cur_min)) {
>     +            if (!md_is_valid) {
>     +                key->hash =
> dpif_netdev_packet_get_rss_hash_orig_pkt(packet,
>     +                        &key->mf);
>     +            } else {
>     +                key->hash = dpif_netdev_packet_get_rss_hash(packet, &key-
> >mf);
>     +            }
>     +            flow = emc_lookup(flow_cache, key);
>     +        } else {
>     +            flow = NULL;
>     +        }
>              if (OVS_LIKELY(flow)) {
>                  dp_netdev_queue_batches(packet, flow, &key->mf, batches,
>                                          n_batches);
>     --
>     2.4.11
> 
>     _______________________________________________
>     dev mailing list
>     d...@openvswitch.org
>     https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__mail.openvswitch.org_mailman_listinfo_ovs-
> 2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=BVhFA09CGX7JQ5Ih-
> uZnsw&m=7UGZunJeutRugFmidRAykhZFRYscZ2rUUmhF7Ys9IM8&s=azu46pbDSUX7cT7WFQXNZKhOT
> fE96wI4CF4xgXGi7Go&e=
> 

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to