[PATCH v3] mempool: micro-optimize put function
Morten Brørup
mb at smartsharesystems.com
Tue Dec 27 16:37:06 CET 2022
> From: Andrew Rybchenko [mailto:andrew.rybchenko at oktetlabs.ru]
> Sent: Tuesday, 27 December 2022 09.54
>
> On 12/24/22 13:46, Morten Brørup wrote:
> > Micro-optimization:
> > Reduced the most likely code path in the generic put function by
> moving an
> > unlikely check out of the most likely code path and further down.
> >
> > Also updated the comments in the function.
> >
> > v3 (feedback from Konstantin Ananyev):
> > * Removed assertion and comment about the invariant preventing
> overflow
> > in the comparison. They were more confusing than enlightening.
> > v2 (feedback from Andrew Rybchenko):
> > * Modified comparison to prevent overflow if n is really huge and len
> is
> > non-zero.
> > * Added assertion about the invariant preventing overflow in the
> > comparison.
> > * Crossing the threshold is not extremely unlikely, so removed
> likely()
> > from that comparison.
> > The compiler will generate code with optimal static branch
> prediction
> > here anyway.
> >
> > Signed-off-by: Morten Brørup <mb at smartsharesystems.com>
> > Acked-by: Konstantin Ananyev <konstantin.ananyev at huawei.com>
>
> Thanks for optimizing it further.
>
> Reviewed-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
>
> > ---
> > lib/mempool/rte_mempool.h | 35 ++++++++++++++++++-----------------
> > 1 file changed, 18 insertions(+), 17 deletions(-)
> >
> > diff --git a/lib/mempool/rte_mempool.h b/lib/mempool/rte_mempool.h
> > index 9f530db24b..61ca0c6b65 100644
> > --- a/lib/mempool/rte_mempool.h
> > +++ b/lib/mempool/rte_mempool.h
> > @@ -1364,32 +1364,33 @@ rte_mempool_do_generic_put(struct rte_mempool
> *mp, void * const *obj_table,
> > {
> > void **cache_objs;
> >
> > - /* No cache provided */
> > + /* No cache provided? */
>
> IMHO such changes do not add value and just add noise.
> There are few similar cases below.
> No strong opinion in any case.
>
This patch is obsolete, because the zero-copy patch v5 [1] uses the zero-copy put function, which is optimized similarly, in rte_mempool_do_generic_put().
[1]: https://patchwork.dpdk.org/project/dpdk/patch/20221227151700.80887-1-mb@smartsharesystems.com/
More information about the dev
mailing list