> -----Original Message-----
> From: Darrell Ball [mailto:[email protected]]
> Sent: Saturday, August 26, 2017 1:45 AM
> To: Fischetti, Antonio <[email protected]>; [email protected]
> Subject: Re: [ovs-dev] [PATCH v4] dpif-netdev: Avoid reading RSS hash when EMC
> is disabled
>
>
>
> On 8/25/17, 3:21 PM, "Fischetti, Antonio" <[email protected]> wrote:
>
>
>
> > -----Original Message-----
> > From: Darrell Ball [mailto:[email protected]]
> > Sent: Friday, August 25, 2017 6:19 PM
> > To: Fischetti, Antonio <[email protected]>;
> [email protected]
> > 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, "[email protected] on behalf of
> > [email protected]" <[email protected] on behalf
> of
> > [email protected]> 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 <[email protected]>
> > ---
> >
> > 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.
>
> Well, there is no pnic in this case.
> I am thinking gateway usage is predominate in importance, but the RSS cases
> are
> about equal
> based on the sampling below, so we could almost ‘remove them from the
> equation’, as it were.
>
> For non-RSS:
> Using emc, there is about 0.7 % degradation, but it is more common to use emc
> So overall, it is not clear; what do you think ?
[Antonio]
Yes, maybe it's better to keep this patch as it was in v3 - ie dependent on
patch #1
"dpif-netdev: Skip EMC lookup/insert for recirc packets" which is under
discussion -
because these changes can fit on those already present in patch #1.
When these changes are put in a stand-alone independent patch we can save some
cpu cycle for the hash part, but we have some more branch like
+ if (!md_is_valid) {
that could explain the 0.7% degradation.
Thanks anyway for your review and comments.
>
> Also when the NIC does not provide a hash value, but this shouldn't be
> considered a common case I guess.
>
> I agree.
>
>
> >
> >
> >
> > +--------------+----------------+
> > +-----+-----+ 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
> > [email protected]
> > 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
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev