sf_load_config support fixed_buff_size

support_rdma
YuQing 2023-09-11 11:36:30 +08:00
parent 2463725570
commit fca50e6d49
4 changed files with 44 additions and 33 deletions

View File

@ -522,6 +522,7 @@ int sf_connection_manager_init_ex(SFConnectionManager *cm,
const bool bg_thread_enabled)
{
const int socket_domain = AF_INET;
const int padding_size = 1024;
struct {
ConnectionExtraParams holder;
ConnectionExtraParams *ptr;
@ -544,9 +545,18 @@ int sf_connection_manager_init_ex(SFConnectionManager *cm,
if (server_group->comm_type == fc_comm_type_sock) {
extra_params.ptr = NULL;
} else {
//TODO: fix me!!!
extra_params.holder.buffer_size = 256 * 1024;
extra_params.holder.pd = NULL;
FCServerInfo *first_server;
first_server = FC_SID_SERVERS(*server_cfg);
extra_params.holder.buffer_size = server_group->
buffer_size + padding_size;
extra_params.holder.pd = fc_alloc_rdma_pd(
G_RDMA_CONNECTION_CALLBACKS.alloc_pd,
&first_server->group_addrs[server_group_index].
address_array, &result);
if (result != 0) {
return result;
}
extra_params.ptr = &extra_params.holder;
}
if ((result=conn_pool_init_ex1(&cm->cpool, common_cfg->connect_timeout,

View File

@ -62,10 +62,11 @@ static inline void set_config_str_value(const char *value,
}
static int load_network_parameters(IniFullContext *ini_ctx,
const char *max_pkg_size_item_nm,
const char *max_pkg_size_item_nm, const int fixed_buff_size,
const int task_buffer_extra_size)
{
int result;
int padding_buff_size;
char *pMinBuffSize;
char *pMaxBuffSize;
@ -95,6 +96,14 @@ static int load_network_parameters(IniFullContext *ini_ctx,
return result;
}
if (fixed_buff_size > 0) {
padding_buff_size = fixed_buff_size + task_buffer_extra_size;
g_sf_global_vars.min_buff_size = padding_buff_size;
g_sf_global_vars.max_buff_size = padding_buff_size;
g_sf_global_vars.max_pkg_size = padding_buff_size;
return 0;
}
g_sf_global_vars.max_pkg_size = iniGetByteCorrectValueEx(ini_ctx,
max_pkg_size_item_nm, SF_DEF_MAX_PACKAGE_SIZE, 1, 8192,
SF_MAX_NETWORK_BUFF_SIZE, true);
@ -285,8 +294,8 @@ int sf_load_global_base_path(IniFullContext *ini_ctx)
int sf_load_global_config_ex(const char *server_name,
IniFullContext *ini_ctx, const bool load_network_params,
const char *max_pkg_size_item_nm, const int task_buffer_extra_size,
const bool need_set_run_by)
const char *max_pkg_size_item_nm, const int fixed_buff_size,
const int task_buffer_extra_size, const bool need_set_run_by)
{
int result;
const char *old_section_name;
@ -303,7 +312,7 @@ int sf_load_global_config_ex(const char *server_name,
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,
task_buffer_extra_size)) != 0)
fixed_buff_size, task_buffer_extra_size)) != 0)
{
return result;
}
@ -401,11 +410,12 @@ int sf_load_global_config_ex(const char *server_name,
}
int sf_load_config_ex(const char *server_name, SFContextIniConfig *config,
const int task_buffer_extra_size, const bool need_set_run_by)
const int fixed_buff_size, const int task_buffer_extra_size,
const bool need_set_run_by)
{
int result;
if ((result=sf_load_global_config_ex(server_name, &config->ini_ctx,
true, config->max_pkg_size_item_name,
true, config->max_pkg_size_item_name, fixed_buff_size,
task_buffer_extra_size, need_set_run_by)) != 0)
{
return result;
@ -609,28 +619,16 @@ int sf_alloc_rdma_pd(SFContext *sf_context,
FCAddressPtrArray *address_array)
{
SFNetworkHandler *handler;
char *ip_addrs[FC_MAX_SERVER_IP_COUNT];
char **ip_addr;
FCAddressInfo **addr;
FCAddressInfo **end;
int result;
handler = sf_context->handlers + SF_RDMACM_NETWORK_HANDLER_INDEX;
if (!handler->enabled) {
return 0;
}
end = address_array->addrs + address_array->count;
for (addr=address_array->addrs, ip_addr=ip_addrs; addr<end; addr++) {
*ip_addr = (*addr)->conn.ip_addr;
}
if ((handler->pd=handler->alloc_pd((const char **)ip_addrs,
address_array->count)) != NULL)
{
return 0;
} else {
return ENODEV;
}
handler->pd = fc_alloc_rdma_pd(handler->alloc_pd,
address_array, &result);
return result;
}
void sf_context_config_to_string(const SFContext *sf_context,

View File

@ -174,29 +174,33 @@ extern SFContext g_sf_context;
int sf_load_global_config_ex(const char *server_name,
IniFullContext *ini_ctx, const bool load_network_params,
const char *max_pkg_size_item_nm, const int task_buffer_extra_size,
const bool need_set_run_by);
const char *max_pkg_size_item_nm, const int fixed_buff_size,
const int task_buffer_extra_size, const bool need_set_run_by);
static inline int sf_load_global_config(const char *server_name,
IniFullContext *ini_ctx)
{
const bool load_network_params = true;
const char *max_pkg_size_item_nm = "max_pkg_size";
const int fixed_buff_size = 0;
const int task_buffer_extra_size = 0;
const bool need_set_run_by = true;
return sf_load_global_config_ex(server_name, ini_ctx, load_network_params,
max_pkg_size_item_nm, task_buffer_extra_size, need_set_run_by);
max_pkg_size_item_nm, fixed_buff_size, task_buffer_extra_size,
need_set_run_by);
}
int sf_load_config_ex(const char *server_name, SFContextIniConfig *config,
const int task_buffer_extra_size, const bool need_set_run_by);
const int fixed_buff_size, const int task_buffer_extra_size,
const bool need_set_run_by);
static inline int sf_load_config(const char *server_name,
const FCCommunicationType comm_type,
const char *filename, IniContext *pIniContext,
const char *section_name, const int default_inner_port,
const int default_outer_port, const int task_buffer_extra_size)
const int default_outer_port, const int fixed_buff_size,
const int task_buffer_extra_size)
{
const bool need_set_run_by = true;
SFContextIniConfig config;
@ -204,7 +208,7 @@ static inline int sf_load_config(const char *server_name,
SF_SET_CONTEXT_INI_CONFIG(config, comm_type, filename, pIniContext,
section_name, default_inner_port, default_outer_port,
DEFAULT_WORK_THREADS);
return sf_load_config_ex(server_name, &config,
return sf_load_config_ex(server_name, &config, fixed_buff_size,
task_buffer_extra_size, need_set_run_by);
}

View File

@ -65,8 +65,7 @@ struct sf_listener;
typedef int (*sf_get_connection_size_callback)();
typedef int (*sf_init_connection_callback)(
struct fast_task_info *task, void *arg);
typedef struct ibv_pd *(*sf_alloc_pd_callback)(
const char **ip_addrs, const int count);
#define sf_alloc_pd_callback fc_alloc_pd_callback
typedef int (*sf_create_server_callback)(struct sf_listener
*listener, int af, const char *bind_addr);