sf_load_context_from_config_ex support max_pkg_size_min_value

use_iouring
YuQing 2024-02-26 16:17:20 +08:00
parent 78d65ba2c6
commit 7f6ad6dcba
3 changed files with 37 additions and 21 deletions

View File

@ -56,8 +56,9 @@ SFContext g_sf_context = {{'\0'}, NULL, 0, sf_address_family_auto,
}; };
static int load_network_parameters(IniFullContext *ini_ctx, static int load_network_parameters(IniFullContext *ini_ctx,
const char *max_pkg_size_item_nm, const int fixed_buff_size, const char *max_pkg_size_item_nm, const int max_pkg_size_min_value,
const int task_buffer_extra_size, SFNetBufferConfig *net_buffer_cfg) const int fixed_buff_size, const int task_buffer_extra_size,
SFNetBufferConfig *net_buffer_cfg)
{ {
int padding_buff_size; int padding_buff_size;
char *pMinBuffSize; char *pMinBuffSize;
@ -84,7 +85,8 @@ static int load_network_parameters(IniFullContext *ini_ctx,
} }
if (fixed_buff_size > 0) { if (fixed_buff_size > 0) {
padding_buff_size = fixed_buff_size + task_buffer_extra_size; padding_buff_size = FC_MAX(fixed_buff_size, max_pkg_size_min_value) +
task_buffer_extra_size;
net_buffer_cfg->min_buff_size = padding_buff_size; net_buffer_cfg->min_buff_size = padding_buff_size;
net_buffer_cfg->max_buff_size = padding_buff_size; net_buffer_cfg->max_buff_size = padding_buff_size;
net_buffer_cfg->max_pkg_size = padding_buff_size; net_buffer_cfg->max_pkg_size = padding_buff_size;
@ -94,6 +96,13 @@ static int load_network_parameters(IniFullContext *ini_ctx,
net_buffer_cfg->max_pkg_size = iniGetByteCorrectValueEx(ini_ctx, net_buffer_cfg->max_pkg_size = iniGetByteCorrectValueEx(ini_ctx,
max_pkg_size_item_nm, SF_DEF_MAX_PACKAGE_SIZE, 1, 8192, max_pkg_size_item_nm, SF_DEF_MAX_PACKAGE_SIZE, 1, 8192,
SF_MAX_NETWORK_BUFF_SIZE, true); SF_MAX_NETWORK_BUFF_SIZE, true);
if (net_buffer_cfg->max_pkg_size < max_pkg_size_min_value) {
net_buffer_cfg->max_pkg_size = max_pkg_size_min_value;
}
if (task_buffer_extra_size > 0) {
net_buffer_cfg->max_pkg_size += task_buffer_extra_size;
}
pMinBuffSize = iniGetStrValueEx(ini_ctx->section_name, pMinBuffSize = iniGetStrValueEx(ini_ctx->section_name,
"min_buff_size", ini_ctx->context, true); "min_buff_size", ini_ctx->context, true);
pMaxBuffSize = iniGetStrValueEx(ini_ctx->section_name, pMaxBuffSize = iniGetStrValueEx(ini_ctx->section_name,
@ -109,8 +118,16 @@ static int load_network_parameters(IniFullContext *ini_ctx,
"max_buff_size", SF_DEF_MAX_BUFF_SIZE, 1, 8192, "max_buff_size", SF_DEF_MAX_BUFF_SIZE, 1, 8192,
SF_MAX_NETWORK_BUFF_SIZE, true); SF_MAX_NETWORK_BUFF_SIZE, true);
if (task_buffer_extra_size > 0) {
net_buffer_cfg->min_buff_size += task_buffer_extra_size;
net_buffer_cfg->max_buff_size += task_buffer_extra_size;
}
if (net_buffer_cfg->max_buff_size < net_buffer_cfg->max_pkg_size) { if (net_buffer_cfg->max_buff_size < net_buffer_cfg->max_pkg_size) {
net_buffer_cfg->max_buff_size = net_buffer_cfg->max_pkg_size; net_buffer_cfg->max_buff_size = net_buffer_cfg->max_pkg_size;
} else if (net_buffer_cfg->max_pkg_size <
net_buffer_cfg->max_buff_size)
{
net_buffer_cfg->max_pkg_size = net_buffer_cfg->max_buff_size;
} }
if (net_buffer_cfg->max_buff_size < net_buffer_cfg->min_buff_size) { if (net_buffer_cfg->max_buff_size < net_buffer_cfg->min_buff_size) {
logWarning("file: "__FILE__", line: %d, " logWarning("file: "__FILE__", line: %d, "
@ -122,14 +139,6 @@ static int load_network_parameters(IniFullContext *ini_ctx,
} }
} }
if (task_buffer_extra_size > 0) {
net_buffer_cfg->min_buff_size += task_buffer_extra_size;
net_buffer_cfg->max_buff_size += task_buffer_extra_size;
if (net_buffer_cfg->max_pkg_size < net_buffer_cfg->max_buff_size) {
net_buffer_cfg->max_pkg_size = net_buffer_cfg->max_buff_size;
}
}
return 0; return 0;
} }
@ -284,6 +293,7 @@ int sf_load_global_config_ex(const char *log_filename_prefix,
const char *max_pkg_size_item_nm, const int fixed_buff_size, const char *max_pkg_size_item_nm, const int fixed_buff_size,
const int task_buffer_extra_size, const bool need_set_run_by) const int task_buffer_extra_size, const bool need_set_run_by)
{ {
const int max_pkg_size_min_value = 0;
int result; int result;
const char *old_section_name; const char *old_section_name;
char *pRunByGroup; char *pRunByGroup;
@ -299,8 +309,9 @@ int sf_load_global_config_ex(const char *log_filename_prefix,
tcp_set_quick_ack(g_sf_global_vars.tcp_quick_ack); tcp_set_quick_ack(g_sf_global_vars.tcp_quick_ack);
if (load_network_params) { if (load_network_params) {
if ((result=load_network_parameters(ini_ctx, max_pkg_size_item_nm, if ((result=load_network_parameters(ini_ctx, max_pkg_size_item_nm,
fixed_buff_size, task_buffer_extra_size, max_pkg_size_min_value, fixed_buff_size,
&g_sf_global_vars.net_buffer_cfg)) != 0) task_buffer_extra_size, &g_sf_global_vars.
net_buffer_cfg)) != 0)
{ {
return result; return result;
} }
@ -768,9 +779,9 @@ int sf_load_context_from_config_ex(SFContext *sf_context,
} }
if ((result=load_network_parameters(&config->ini_ctx, config-> if ((result=load_network_parameters(&config->ini_ctx, config->
max_pkg_size_item_name, fixed_buff_size, max_pkg_size_item_name, config->max_pkg_size_min_value,
task_buffer_extra_size, &sf_context-> fixed_buff_size, task_buffer_extra_size,
net_buffer_cfg)) != 0) &sf_context->net_buffer_cfg)) != 0)
{ {
return result; return result;
} }

View File

@ -66,6 +66,7 @@ typedef struct sf_context_ini_config {
int default_inner_port; int default_inner_port;
int default_outer_port; int default_outer_port;
int default_work_threads; int default_work_threads;
int max_pkg_size_min_value;
FCCommunicationType comm_type; FCCommunicationType comm_type;
const char *max_pkg_size_item_name; const char *max_pkg_size_item_name;
} SFContextIniConfig; } SFContextIniConfig;
@ -172,9 +173,9 @@ extern SFContext g_sf_context;
#define SF_FCHOWN_TO_RUNBY_RETURN_ON_ERROR(fd, path) \ #define SF_FCHOWN_TO_RUNBY_RETURN_ON_ERROR(fd, path) \
SF_FCHOWN_RETURN_ON_ERROR(fd, path, geteuid(), getegid()) SF_FCHOWN_RETURN_ON_ERROR(fd, path, geteuid(), getegid())
#define SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \ #define SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
pIniContext, section_name, def_inner_port, def_outer_port, \ pIniContext, section_name, def_inner_port, def_outer_port, \
def_work_threads, max_pkg_size_item_nm) \ def_work_threads, max_pkg_size_item_nm, max_pkg_size_min_val) \
do { \ do { \
FAST_INI_SET_FULL_CTX_EX(config.ini_ctx, filename, \ FAST_INI_SET_FULL_CTX_EX(config.ini_ctx, filename, \
section_name, pIniContext); \ section_name, pIniContext); \
@ -183,6 +184,7 @@ extern SFContext g_sf_context;
config.default_outer_port = def_outer_port; \ config.default_outer_port = def_outer_port; \
config.default_work_threads = def_work_threads; \ config.default_work_threads = def_work_threads; \
config.max_pkg_size_item_name = max_pkg_size_item_nm; \ config.max_pkg_size_item_name = max_pkg_size_item_nm; \
config.max_pkg_size_min_value = max_pkg_size_min_val; \
} while (0) } while (0)
#define SF_SET_CONTEXT_INI_CONFIG(config, the_comm_type, \ #define SF_SET_CONTEXT_INI_CONFIG(config, the_comm_type, \
@ -190,7 +192,7 @@ extern SFContext g_sf_context;
def_outer_port, def_work_threads) \ def_outer_port, def_work_threads) \
SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \ SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
pIniContext, section_name, def_inner_port, def_outer_port, \ pIniContext, section_name, def_inner_port, def_outer_port, \
def_work_threads, "max_pkg_size") def_work_threads, "max_pkg_size", 0)
int sf_load_global_config_ex(const char *log_filename_prefix, int sf_load_global_config_ex(const char *log_filename_prefix,
IniFullContext *ini_ctx, const bool load_network_params, IniFullContext *ini_ctx, const bool load_network_params,

View File

@ -170,7 +170,10 @@ static inline struct fast_task_info *sf_alloc_init_task_ex(
return task; return task;
} }
#define sf_hold_task(task) __sync_add_and_fetch(&task->reffer_count, 1) #define sf_hold_task_ex(task, inc_count) __sync_add_and_fetch( \
&task->reffer_count, inc_count)
#define sf_hold_task(task) sf_hold_task_ex(task, 1)
#define sf_alloc_init_task(handler, fd) sf_alloc_init_task_ex(handler, fd, 1) #define sf_alloc_init_task(handler, fd) sf_alloc_init_task_ex(handler, fd, 1)
static inline void sf_release_task(struct fast_task_info *task) static inline void sf_release_task(struct fast_task_info *task)