> -----Original Message-----
> From: Flavio Leitner <[email protected]>
> Sent: Friday 9 July 2021 18:54
> To: Ferriter, Cian <[email protected]>
> Cc: [email protected]; [email protected]
> Subject: Re: [ovs-dev] [v15 06/10] dpif-netdev: Add a partial HWOL PMD 
> statistic.
> 
> 
> 
> Hi,
> 
> After rebasing, the performance of branch master boosted in my env
> from 12Mpps to 13Mpps. However, this specific patch brings down
> to 12Mpps. I am using dpif_scalar and generic lookup (no AVX512).
> 

Thanks for the investigation. Always great seeing perf numbers and details!

I just want to check my understanding here with what you're seeing:

Performance before DPIF patchset
12Mpps

Performance at this patch
12Mpps

Performance after DPIF patchset
13Mpps

So the performance recovers somewhere else in the patchset?

I've checked the performance behaviour in my case. I'm going to report relative 
performance numbers. They are relative to master branch before AVX512 DPIF was 
applied (c36c8e3).
I tried to run a similar testcase, I can see you are using EMC from the memcmp 
in perf top output. I am also using the scalar DPIF in all the below testcases.

Master before AVX512 DPIF (c36c8e3)
1.000x (0.0%)
DPIF patch 3 - dpif-avx512: Add ISA implementation of dpif.
1.010x (1.0%)
DPIF patch 4 - dpif-netdev: Add command to switch dpif implementation.
1.042x (4.2%)
DPIF patch 5 - dpif-netdev: Add command to get dpif implementations.
1.063x (6.3%)
DPIF patch 6 - dpif-netdev: Add a partial HWOL PMD statistic.
1.069x (6.9%)
Latest master which has AVX512 DPIF patches (d2e9703)
1.075x (7.5%)
Master before AVX512 DPIF (c36c8e3), with prefetch change
0.983x (-1.7%)
Latest master which has AVX512 DPIF patches (d2e9703), with prefetch change
1.080x (8.0%)

> (I don't think this report should block the patch because the
> counter are interesting and the analysis below doesn't point
> directly to the proposed changes.)
> 
> This is a diff using all patches applied versus this patch reverted:
>     21.44%     +6.08%  ovs-vswitchd        [.] miniflow_extract
>      8.94%     -1.92%  libc-2.28.so        [.] __memcmp_avx2_movbe
>     14.62%     +1.44%  ovs-vswitchd        [.] dp_netdev_input__
>      2.80%     -1.08%  ovs-vswitchd        [.] 
> dp_netdev_pmd_flush_output_on_port
>      3.44%     -0.91%  ovs-vswitchd        [.] netdev_send
> 
> This is the code side by side, patch applied on the right side:
> (sorry, long lines)
> 

My mail client has wrapped the below lines, sorry for mangling the output!

<snip mangled perf diff output>
Please find it here:
https://mail.openvswitch.org/pipermail/ovs-dev/2021-July/385448.html

> 
> 
> I don't see any relevant optimization difference in the code
> above, but the "mov %r15w,-0x2(%r13)" on the right side accounts
> for almost all the difference, though on the left side it seems
> a bit more spread.
> 
> I applied the patch below and it helped to get to 12.7Mpps, so
> almost at the same levels. I wonder if you see the same result.
> 

Since I don't see the drop that you see with this patch, when I apply the below 
patch to the latest master, I see a smaller benefit.
The relative performance after adding the below prefetch compared to before 
(latest master):
1.005x (0.5%)

When I compare before/after performance (including the prefetch code, on latest 
master), the overall performance difference is 0.5% here.

> diff --git a/lib/flow.c b/lib/flow.c
> index 729d59b1b..4572e356b 100644
> --- a/lib/flow.c
> +++ b/lib/flow.c
> @@ -746,6 +746,9 @@ miniflow_extract(struct dp_packet *packet, struct 
> miniflow *dst)
>      uint8_t *ct_nw_proto_p = NULL;
>      ovs_be16 ct_tp_src = 0, ct_tp_dst = 0;
> 
> +    /* dltype will be updated later. */
> +    OVS_PREFETCH_WRITE(miniflow_pointer(mf, dl_type));
> +
>      /* Metadata. */
>      if (flow_tnl_dst_is_set(&md->tunnel)) {
>          miniflow_push_words(mf, tunnel, &md->tunnel,
> 
> 
> fbl
> 

<snip actual patch away>

Thanks,
Cian
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to