[PATCH v2] eal/unix: optimize thread creation with glibc
Luca Boccassi
luca.boccassi at gmail.com
Sat Nov 2 13:36:56 CET 2024
On Sat, 2 Nov 2024 at 11:32, David Marchand <david.marchand at redhat.com> wrote:
>
> Setting the cpu affinity of the child thread from the parent thread is
> racy when using pthread_setaffinity_np, as the child thread may start
> running and initialize before affinity is set.
>
> On the other hand, setting the cpu affinity from the child thread itself
> may fail, so the parent thread waits for the child thread to report
> whether this call succeeded.
>
> This synchronisation point resulted in a significant slow down of
> rte_thread_create() (as seen in the lcores_autotest unit tests, in OBS
> for some ARM systems).
>
> Another option for setting cpu affinity is to use the not portable
> pthread_attr_setaffinity_np, but it is not available with musl.
> Assume availability by relying on __USE_GNU that is set with glibc.
>
> Fixes: b28c6196b132 ("eal/unix: fix thread creation")
> Cc: stable at dpdk.org
>
> Signed-off-by: David Marchand <david.marchand at redhat.com>
> ---
> Changes since v1:
> - fixed build with FreeBSD,
>
> ---
> lib/eal/unix/rte_thread.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
The test now completes in 1.19 seconds, so this fixes the issue with glibc:
[ 438s] 36/82 DPDK:fast-tests / lcores_autotest OK
1.19s
I do not use musl, so this is good enough for me. Thanks!
Acked-by: Luca Boccassi <bluca at debian.org>
More information about the dev
mailing list