100 lines
3.4 KiB
Diff
100 lines
3.4 KiB
Diff
From 8a148ade17e4c73cd768ad81b30096139898bbe7 Mon Sep 17 00:00:00 2001
|
|
From: wu-changsheng <wuchangsheng2@huawei.com>
|
|
Date: Sat, 8 Oct 2022 21:03:58 +0800
|
|
Subject: [PATCH 20/21] support conf control app bind numa
|
|
|
|
---
|
|
src/lstack/api/lstack_epoll.c | 9 +++++++--
|
|
src/lstack/core/lstack_cfg.c | 20 +++++++++++++++++++-
|
|
src/lstack/include/lstack_cfg.h | 1 +
|
|
3 files changed, 27 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/lstack/api/lstack_epoll.c b/src/lstack/api/lstack_epoll.c
|
|
index cc1cbf0..bd3396a 100644
|
|
--- a/src/lstack/api/lstack_epoll.c
|
|
+++ b/src/lstack/api/lstack_epoll.c
|
|
@@ -343,7 +343,9 @@ static void epoll_bind_statck(struct wakeup_poll *wakeup)
|
|
}
|
|
|
|
if (wakeup->bind_stack != wakeup->max_stack && wakeup->max_stack) {
|
|
- bind_to_stack_numa(wakeup->max_stack);
|
|
+ if (get_global_cfg_params()->app_bind_numa) {
|
|
+ bind_to_stack_numa(wakeup->max_stack);
|
|
+ }
|
|
if (wakeup->bind_stack) {
|
|
unregister_wakeup(wakeup->bind_stack, wakeup);
|
|
}
|
|
@@ -461,7 +463,10 @@ static void poll_bind_statck(struct wakeup_poll *wakeup, int32_t *stack_count)
|
|
if (wakeup->bind_stack) {
|
|
unregister_wakeup(wakeup->bind_stack, wakeup);
|
|
}
|
|
- bind_to_stack_numa(stack_group->stacks[bind_id]);
|
|
+
|
|
+ if (get_global_cfg_params()->app_bind_numa) {
|
|
+ bind_to_stack_numa(stack_group->stacks[bind_id]);
|
|
+ }
|
|
wakeup->bind_stack = stack_group->stacks[bind_id];
|
|
register_wakeup(wakeup->bind_stack, wakeup);
|
|
}
|
|
diff --git a/src/lstack/core/lstack_cfg.c b/src/lstack/core/lstack_cfg.c
|
|
index 19a5b30..2cd9989 100644
|
|
--- a/src/lstack/core/lstack_cfg.c
|
|
+++ b/src/lstack/core/lstack_cfg.c
|
|
@@ -55,6 +55,7 @@ static int32_t parse_dpdk_args(void);
|
|
static int32_t parse_gateway_addr(void);
|
|
static int32_t parse_kni_switch(void);
|
|
static int32_t parse_listen_shadow(void);
|
|
+static int32_t parse_app_bind_numa(void);
|
|
|
|
struct config_vector_t {
|
|
const char *name;
|
|
@@ -71,8 +72,9 @@ static struct config_vector_t g_config_tbl[] = {
|
|
{ "num_cpus", parse_stack_cpu_number },
|
|
{ "num_wakeup", parse_wakeup_cpu_number },
|
|
{ "low_power_mode", parse_low_power_mode },
|
|
- { "kni_switch", parse_kni_switch },
|
|
+ { "kni_switch", parse_kni_switch },
|
|
{ "listen_shadow", parse_listen_shadow },
|
|
+ { "app_bind_numa", parse_app_bind_numa },
|
|
{ NULL, NULL }
|
|
};
|
|
|
|
@@ -710,6 +712,22 @@ static int32_t parse_listen_shadow(void)
|
|
return 0;
|
|
}
|
|
|
|
+static int32_t parse_app_bind_numa(void)
|
|
+{
|
|
+ const config_setting_t *arg = NULL;
|
|
+
|
|
+ arg = config_lookup(&g_config, "app_bind_numa");
|
|
+ if (arg == NULL) {
|
|
+ g_config_params.app_bind_numa = true;
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ int32_t val = config_setting_get_int(arg);
|
|
+ g_config_params.app_bind_numa = (val == 0) ? false : true;
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static int32_t parse_kni_switch(void)
|
|
{
|
|
const config_setting_t *arg = NULL;
|
|
diff --git a/src/lstack/include/lstack_cfg.h b/src/lstack/include/lstack_cfg.h
|
|
index 1a6ef39..80dfd24 100644
|
|
--- a/src/lstack/include/lstack_cfg.h
|
|
+++ b/src/lstack/include/lstack_cfg.h
|
|
@@ -76,6 +76,7 @@ struct cfg_params {
|
|
bool use_ltran; // ture:lstack read from nic false:read form ltran
|
|
bool kni_switch;
|
|
bool listen_shadow; // true:listen in all stack thread. false:listen in one stack thread.
|
|
+ bool app_bind_numa;
|
|
int dpdk_argc;
|
|
char **dpdk_argv;
|
|
struct secondary_attach_arg sec_attach_arg;
|
|
--
|
|
2.23.0
|
|
|