如何在 dpdk 18.11 中设置线程名称
How to set thread name in dpdk 18.11
在dpdk 17.05 struct lcore_config是public和pthread_t可以通过lcore_config[lcore_id].thread_id得到
在 18.11 中,struct lcore_config 是私有的,如何为 lcore_id 获取 pthread_t?
问题 - 我无法使用 pthread_setname_np(, "my_thread_name");
设置线程名称
rte_gettid()
returns int
但我需要 pthread_t
在 DPDK rte_lcore.h
中 API rte_thread_setname
负责设置备用名称而不是 DPDK 分配的名称。在 Linux DPDK 内部调用 pthread_setname_np
.
DPDK 版本:dpdk-stable-18.11.10
[edit-1] 如果您有 glbc > 2.12,则根据 DPDK 代码库设置名
glibc 版本:Ubuntu GLIBC 2.30-0ubuntu2.2
C文件中修改的代码:
printf("hello from core %u\n", lcore_id);
snprintf(name, 100, "hello-%d", lcore_id);
if (rte_thread_setname( pthread_self(), name) == 0)
printf(" thread name %s\n", name);
CFLAGS 添加到 Makefile:
CFLAGS += -DALLOW_EXPERIMENTAL_API
或使用 EXTRA_CFLAGS=-DALLOW_EXPERIMENTAL_API make
构建
36986 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.60 helloworld
37004 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.61 lcore-slave-1
37005 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.61 lcore-slave-2
37006 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.61 lcore-slave-3
调用后
15326 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-0
15327 root 20 0 153312 7728 5976 T 0.0 0.2 0:00.00 eal-intr-thread
15328 root 20 0 153312 7728 5976 T 0.0 0.2 0:00.00 rte_mp_handle
15329 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-1
15330 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-2
15331 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-3
在dpdk 17.05 struct lcore_config是public和pthread_t可以通过lcore_config[lcore_id].thread_id得到 在 18.11 中,struct lcore_config 是私有的,如何为 lcore_id 获取 pthread_t?
问题 - 我无法使用 pthread_setname_np(
rte_gettid()
returns int
但我需要 pthread_t
在 DPDK rte_lcore.h
中 API rte_thread_setname
负责设置备用名称而不是 DPDK 分配的名称。在 Linux DPDK 内部调用 pthread_setname_np
.
DPDK 版本:dpdk-stable-18.11.10 [edit-1] 如果您有 glbc > 2.12,则根据 DPDK 代码库设置名 glibc 版本:Ubuntu GLIBC 2.30-0ubuntu2.2
C文件中修改的代码:
printf("hello from core %u\n", lcore_id);
snprintf(name, 100, "hello-%d", lcore_id);
if (rte_thread_setname( pthread_self(), name) == 0)
printf(" thread name %s\n", name);
CFLAGS 添加到 Makefile:
CFLAGS += -DALLOW_EXPERIMENTAL_API
或使用 EXTRA_CFLAGS=-DALLOW_EXPERIMENTAL_API make
36986 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.60 helloworld
37004 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.61 lcore-slave-1
37005 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.61 lcore-slave-2
37006 root 20 0 227916 6996 6024 R 93.8 0.0 0:40.61 lcore-slave-3
调用后
15326 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-0
15327 root 20 0 153312 7728 5976 T 0.0 0.2 0:00.00 eal-intr-thread
15328 root 20 0 153312 7728 5976 T 0.0 0.2 0:00.00 rte_mp_handle
15329 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-1
15330 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-2
15331 root 20 0 153312 7728 5976 T 0.0 0.2 0:03.32 hello-3