From 7692ad1681386e5ab27006ddbdcb530dfa887121 Mon Sep 17 00:00:00 2001 From: jiangheng Date: Mon, 20 Mar 2023 16:14:45 +0800 Subject: [PATCH] discard wakeup_num parameter --- src/lstack/api/lstack_epoll.c | 15 +++---- src/lstack/core/lstack_cfg.c | 39 ----------------- src/lstack/core/lstack_dpdk.c | 8 ---- src/lstack/core/lstack_protocol_stack.c | 51 ++-------------------- src/lstack/include/lstack_cfg.h | 2 - src/lstack/include/lstack_protocol_stack.h | 1 - src/lstack/include/posix/lstack_epoll.h | 2 +- src/lstack/lstack.conf | 3 -- 8 files changed, 9 insertions(+), 112 deletions(-) diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c index 4a10b09..d4b4be7 100644 --- a/src/lstack/api/lstack_epoll.c +++ b/src/lstack/api/lstack_epoll.c @@ -79,7 +79,7 @@ void add_sock_event(struct lwip_sock *sock, uint32_t event) } } -void wakeup_stack_epoll(struct protocol_stack *stack, bool wakeup_thread_enable) +void wakeup_stack_epoll(struct protocol_stack *stack) { struct list_node *node, *temp; @@ -97,15 +97,10 @@ void wakeup_stack_epoll(struct protocol_stack *stack, bool wakeup_thread_enable) struct wakeup_poll *wakeup = container_of((node - stack->stack_idx), struct wakeup_poll, wakeup_list); - if (!wakeup_thread_enable) { - if (__atomic_load_n(&wakeup->in_wait, __ATOMIC_ACQUIRE)) { - __atomic_store_n(&wakeup->in_wait, false, __ATOMIC_RELEASE); - rte_mb(); - pthread_mutex_unlock(&wakeup->wait); - stack->stats.wakeup_events++; - } - } else { - gazelle_light_ring_enqueue_busrt(stack->wakeup_ring, (void **)&wakeup, 1); + if (__atomic_load_n(&wakeup->in_wait, __ATOMIC_ACQUIRE)) { + __atomic_store_n(&wakeup->in_wait, false, __ATOMIC_RELEASE); + rte_mb(); + pthread_mutex_unlock(&wakeup->wait); stack->stats.wakeup_events++; } diff --git a/src/lstack/core/lstack_cfg.c b/src/lstack/core/lstack_cfg.c index 88f69e1..4164b0e 100644 --- a/src/lstack/core/lstack_cfg.c +++ b/src/lstack/core/lstack_cfg.c @@ -48,7 +48,6 @@ static int32_t parse_host_addr(void); static int32_t parse_low_power_mode(void); static int32_t parse_stack_cpu_number(void); static int32_t parse_use_ltran(void); -static int32_t parse_wakeup_cpu_number(void); static int32_t parse_mask_addr(void); static int32_t parse_devices(void); static int32_t parse_dpdk_args(void); @@ -104,7 +103,6 @@ static struct config_vector_t g_config_tbl[] = { { "dpdk_args", parse_dpdk_args }, { "seperate_send_recv", parse_seperate_sendrecv_args }, { "num_cpus", parse_stack_cpu_number }, - { "num_wakeup", parse_wakeup_cpu_number }, { "low_power_mode", parse_low_power_mode }, { "kni_switch", parse_kni_switch }, { "listen_shadow", parse_listen_shadow }, @@ -450,9 +448,6 @@ int32_t init_stack_numa_cpuset(struct protocol_stack *stack) CPU_SET(cfg->recv_cpus[idx], &stack_cpuset); } } - for (int32_t idx = 0; idx < cfg->num_wakeup; ++idx) { - CPU_SET(cfg->wakeup[idx], &stack_cpuset); - } ret = stack_idle_cpuset(stack, &stack_cpuset); if (ret < 0) { @@ -757,40 +752,6 @@ static int32_t parse_low_power_mode(void) return parse_int(&g_config_params.low_power_mod, "low_power_mode", 0, 0, 1); } -static int32_t parse_wakeup_cpu_number(void) -{ - const config_setting_t *cfg_args = NULL; - const char *args = NULL; - - g_config_params.num_wakeup = 0; - - cfg_args = config_lookup(&g_config, "num_wakeup"); - if (cfg_args == NULL) { - return 0; - } - - args = config_setting_get_string(cfg_args); - if (cfg_args == NULL) { - return 0; - } - - char *tmp_arg = strdup(args); - int32_t cnt = separate_str_to_array(tmp_arg, g_config_params.wakeup, CFG_MAX_CPUS); - free(tmp_arg); - if (cnt <= 0 || cnt > CFG_MAX_CPUS) { - return -EINVAL; - } - g_config_params.num_wakeup = cnt; - - if (g_config_params.num_wakeup < g_config_params.num_cpu) { - LSTACK_PRE_LOG(LSTACK_ERR, "num_wakeup=%hu less than num_stack_cpu=%hu.\n", g_config_params.num_wakeup, - g_config_params.num_cpu); - return -EINVAL; - } - - return 0; -} - static int32_t parse_use_ltran(void) { return parse_int(&g_config_params.use_ltran, "use_ltran", 1, 0, 1); diff --git a/src/lstack/core/lstack_dpdk.c b/src/lstack/core/lstack_dpdk.c index 7ded9e9..ebfebaa 100644 --- a/src/lstack/core/lstack_dpdk.c +++ b/src/lstack/core/lstack_dpdk.c @@ -237,14 +237,6 @@ int32_t create_shared_ring(struct protocol_stack *stack) { lockless_queue_init(&stack->rpc_queue); - if (get_protocol_stack_group()->wakeup_enable) { - stack->wakeup_ring = create_ring("WAKEUP_RING", VDEV_WAKEUP_QUEUE_SZ, RING_F_SP_ENQ | RING_F_SC_DEQ, - stack->queue_id); - if (stack->wakeup_ring == NULL) { - return -1; - } - } - if (use_ltran()) { stack->rx_ring = create_ring("RING_RX", VDEV_RX_QUEUE_SZ, RING_F_SP_ENQ | RING_F_SC_DEQ, stack->queue_id); if (stack->rx_ring == NULL) { diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c index 5e510bd..92300ef 100644 --- a/src/lstack/core/lstack_protocol_stack.c +++ b/src/lstack/core/lstack_protocol_stack.c @@ -256,41 +256,6 @@ static int32_t create_thread(void *arg, char *thread_name, stack_thread_func fun return 0; } -static void* gazelle_wakeup_thread(void *arg) -{ - uint16_t queue_id = *(uint16_t *)arg; - struct protocol_stack *stack = get_protocol_stack_group()->stacks[queue_id]; - - struct cfg_params *cfg = get_global_cfg_params(); - int32_t lcore_id = cfg->wakeup[stack->stack_idx]; - thread_affinity_init(lcore_id); - - struct timespec st = { - .tv_sec = 0, - .tv_nsec = 1 - }; - - LSTACK_LOG(INFO, LSTACK, "weakup_%02hu start\n", stack->queue_id); - - for (;;) { - if (cfg->low_power_mod != 0 && stack->low_power) { - nanosleep(&st, NULL); - } - - struct wakeup_poll *wakeup[WAKEUP_MAX_NUM]; - uint32_t num = gazelle_light_ring_dequeue_burst(stack->wakeup_ring, (void **)wakeup, WAKEUP_MAX_NUM); - for (uint32_t i = 0; i < num; i++) { - if (__atomic_load_n(&wakeup[i]->in_wait, __ATOMIC_ACQUIRE)) { - __atomic_store_n(&wakeup[i]->in_wait, false, __ATOMIC_RELEASE); - rte_mb(); - pthread_mutex_unlock(&wakeup[i]->wait); - } - } - } - - return NULL; -} - static void* gazelle_kernelevent_thread(void *arg) { struct thread_params *t_params = (struct thread_params*) arg; @@ -374,16 +339,8 @@ void wait_sem_value(sem_t *sem, int32_t wait_value) } while (sem_val < wait_value); } -static int32_t create_affiliate_thread(void *arg, bool wakeup_enable) +static int32_t create_affiliate_thread(void *arg) { - - if (wakeup_enable) { - if (create_thread(arg, "gazelleweakup", gazelle_wakeup_thread) != 0) { - LSTACK_LOG(ERR, LSTACK, "gazelleweakup errno=%d\n", errno); - return -1; - } - } - if (create_thread(arg, "gazellekernel", gazelle_kernelevent_thread) != 0) { LSTACK_LOG(ERR, LSTACK, "gazellekernel errno=%d\n", errno); return -1; @@ -409,7 +366,7 @@ static struct protocol_stack *stack_thread_init(void *arg) if (init_stack_numa_cpuset(stack) < 0) { goto END; } - if (create_affiliate_thread(arg, stack_group->wakeup_enable) < 0) { + if (create_affiliate_thread(arg) < 0) { goto END; } @@ -484,7 +441,6 @@ static void* gazelle_stack_thread(void *arg) uint16_t low_power_mod = cfg->low_power_mod; uint32_t wakeup_tick = 0; struct protocol_stack_group *stack_group = get_protocol_stack_group(); - bool wakeup_thread_enable = stack_group->wakeup_enable; struct protocol_stack *stack = stack_thread_init(arg); @@ -516,7 +472,7 @@ static void* gazelle_stack_thread(void *arg) if ((wakeup_tick & 0xf) == 0) { wakeup_kernel_event(stack); - wakeup_stack_epoll(stack, wakeup_thread_enable); + wakeup_stack_epoll(stack); } /* KNI requests are generally low-rate I/Os, @@ -583,7 +539,6 @@ int32_t init_protocol_stack(void) stack_group->stack_num = get_global_cfg_params()->num_cpu * 2; } - stack_group->wakeup_enable = (get_global_cfg_params()->num_wakeup > 0) ? true : false; init_list_node(&stack_group->poll_list); pthread_spin_init(&stack_group->poll_list_lock, PTHREAD_PROCESS_PRIVATE); diff --git a/src/lstack/include/lstack_cfg.h b/src/lstack/include/lstack_cfg.h index 5f8e6b3..16f37b4 100644 --- a/src/lstack/include/lstack_cfg.h +++ b/src/lstack/include/lstack_cfg.h @@ -67,8 +67,6 @@ struct cfg_params { uint32_t cpus[CFG_MAX_CPUS]; uint32_t send_cpus[CFG_MAX_CPUS]; uint32_t recv_cpus[CFG_MAX_CPUS]; - uint16_t num_wakeup; - uint32_t wakeup[CFG_MAX_CPUS]; uint8_t num_ports; uint16_t ports[CFG_MAX_PORTS]; char log_file[PATH_MAX]; diff --git a/src/lstack/include/lstack_protocol_stack.h b/src/lstack/include/lstack_protocol_stack.h index 3691250..001ab47 100644 --- a/src/lstack/include/lstack_protocol_stack.h +++ b/src/lstack/include/lstack_protocol_stack.h @@ -95,7 +95,6 @@ struct protocol_stack_group { struct rte_mempool *kni_pktmbuf_pool; struct eth_params *eth_params; struct protocol_stack *stacks[PROTOCOL_STACK_MAX]; - bool wakeup_enable; struct list_node poll_list; pthread_spinlock_t poll_list_lock; sem_t sem_listen_thread; diff --git a/src/lstack/include/posix/lstack_epoll.h b/src/lstack/include/posix/lstack_epoll.h index 6aa9d30..d6c81a7 100644 --- a/src/lstack/include/posix/lstack_epoll.h +++ b/src/lstack/include/posix/lstack_epoll.h @@ -64,7 +64,7 @@ struct wakeup_poll { struct netconn; struct lwip_sock; void add_sock_event(struct lwip_sock *sock, uint32_t event); -void wakeup_stack_epoll(struct protocol_stack *stack, bool wakeup_thread_enable); +void wakeup_stack_epoll(struct protocol_stack *stack); int32_t lstack_epoll_create(int32_t size); int32_t lstack_epoll_create1(int32_t flags); int32_t lstack_epoll_ctl(int32_t epfd, int32_t op, int32_t fd, struct epoll_event *event); diff --git a/src/lstack/lstack.conf b/src/lstack/lstack.conf index 64a2f42..81da10a 100644 --- a/src/lstack/lstack.conf +++ b/src/lstack/lstack.conf @@ -14,7 +14,6 @@ use_ltran=1 kni_switch=0 low_power_mode=0 -listen_shadow=0 #needed mbuf count = tcp_conn_count * mbuf_count_per_conn tcp_conn_count = 1500 @@ -37,8 +36,6 @@ nic_read_number = 128 #each cpu core start a protocol stack thread. num_cpus="2" -#each cpu core start a wakeup thread. -#num_wakeup="3" #app worker thread bind to numa in epoll/poll. app_bind_numa=1 -- 2.23.0