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,
const char *max_pkg_size_item_nm, const int fixed_buff_size,
const int task_buffer_extra_size, SFNetBufferConfig *net_buffer_cfg)
const char *max_pkg_size_item_nm, const int max_pkg_size_min_value,
const int fixed_buff_size, const int task_buffer_extra_size,
SFNetBufferConfig *net_buffer_cfg)
{
int padding_buff_size;
char *pMinBuffSize;
@ -84,7 +85,8 @@ static int load_network_parameters(IniFullContext *ini_ctx,
}
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->max_buff_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,
max_pkg_size_item_nm, SF_DEF_MAX_PACKAGE_SIZE, 1, 8192,
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,
"min_buff_size", ini_ctx->context, true);
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,
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) {
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) {
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;
}
@ -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 int task_buffer_extra_size, const bool need_set_run_by)
{
const int max_pkg_size_min_value = 0;
int result;
const char *old_section_name;
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);
if (load_network_params) {
if ((result=load_network_parameters(ini_ctx, max_pkg_size_item_nm,
fixed_buff_size, task_buffer_extra_size,
&g_sf_global_vars.net_buffer_cfg)) != 0)
max_pkg_size_min_value, fixed_buff_size,
task_buffer_extra_size, &g_sf_global_vars.
net_buffer_cfg)) != 0)
{
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->
max_pkg_size_item_name, fixed_buff_size,
task_buffer_extra_size, &sf_context->
net_buffer_cfg)) != 0)
max_pkg_size_item_name, config->max_pkg_size_min_value,
fixed_buff_size, task_buffer_extra_size,
&sf_context->net_buffer_cfg)) != 0)
{
return result;
}

View File

@ -66,6 +66,7 @@ typedef struct sf_context_ini_config {
int default_inner_port;
int default_outer_port;
int default_work_threads;
int max_pkg_size_min_value;
FCCommunicationType comm_type;
const char *max_pkg_size_item_name;
} SFContextIniConfig;
@ -174,7 +175,7 @@ extern SFContext g_sf_context;
#define SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
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 { \
FAST_INI_SET_FULL_CTX_EX(config.ini_ctx, filename, \
section_name, pIniContext); \
@ -183,6 +184,7 @@ extern SFContext g_sf_context;
config.default_outer_port = def_outer_port; \
config.default_work_threads = def_work_threads; \
config.max_pkg_size_item_name = max_pkg_size_item_nm; \
config.max_pkg_size_min_value = max_pkg_size_min_val; \
} while (0)
#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) \
SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
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,
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;
}
#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)
static inline void sf_release_task(struct fast_task_info *task)