On Fri, 15 Nov 2024 15:50:08 +0800
Congjie Zhou <zcjie0...@qq.com> wrote:

> add the tsc into the name.
> 
> Suggested-by: Stephen Hemminger <step...@networkplumber.org>
> Signed-off-by: Congjie Zhou <zcjie0...@qq.com>
> ---
> 
> When multiple secondary processes run in different containers, names
> identified by PIDs are not unique due to the pid namespace. 
> So Add tsc to redefine a unique name.
> 
> v1: use monotonic time to redefine the name
> v2: use tsc to redefine the name
> 
>  lib/eal/linux/eal_memalloc.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/eal/linux/eal_memalloc.c b/lib/eal/linux/eal_memalloc.c
> index e354efc..367d401 100644
> --- a/lib/eal/linux/eal_memalloc.c
> +++ b/lib/eal/linux/eal_memalloc.c
> @@ -16,6 +16,7 @@
>  #include <fcntl.h>
>  #include <signal.h>
>  #include <setjmp.h>
> +#include <inttypes.h>
>  #ifdef F_ADD_SEALS /* if file sealing is supported, so is memfd */
>  #include <linux/memfd.h>
>  #define MEMFD_SUPPORTED
> @@ -1447,8 +1448,8 @@ secondary_msl_create_walk(const struct rte_memseg_list 
> *msl,
>       local_msl = &local_memsegs[msl_idx];
>  
>       /* create distinct fbarrays for each secondary */
> -     snprintf(name, RTE_FBARRAY_NAME_LEN, "%s_%i",
> -             primary_msl->memseg_arr.name, getpid());
> +     snprintf(name, RTE_FBARRAY_NAME_LEN, "%s_%i_%"PRIx64,
> +             primary_msl->memseg_arr.name, getpid(), rte_get_tsc_cycles());
>  

Worst case name is now:
'memseg-1048576k-128-128-1234567890-ffffffffffffffff' = 51 characters


Acked-by: Stephen Hemminger <step...@networkplumber.org>

Reply via email to