[PATCH v3] mempool: micro-optimize put function

Andrew Rybchenko andrew.rybchenko at oktetlabs.ru
Tue Dec 27 09:54:08 CET 2022


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.



More information about the dev mailing list