check sf_context->use_io_uring more

master
YuQing 2025-11-05 09:58:37 +08:00
parent c4af33a497
commit a52cc2d5d4
2 changed files with 33 additions and 24 deletions

View File

@ -770,7 +770,7 @@ int sf_load_context_from_config_ex(SFContext *sf_context,
#if IOEVENT_USE_URING #if IOEVENT_USE_URING
sf_context->use_io_uring = (config->comm_type == fc_comm_type_sock); sf_context->use_io_uring = (config->comm_type == fc_comm_type_sock);
sf_context->use_send_zc = use_send_zc; sf_context->use_send_zc = sf_context->use_io_uring ? use_send_zc : false;
#else #else
sf_context->use_io_uring = false; sf_context->use_io_uring = false;
#endif #endif

View File

@ -189,7 +189,15 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
max_entries = (sf_context->net_buffer_cfg.max_connections + max_entries = (sf_context->net_buffer_cfg.max_connections +
sf_context->work_threads - 1) / sf_context->work_threads; sf_context->work_threads - 1) / sf_context->work_threads;
if (strcmp(sf_context->name, "service") == 0) { if (strcmp(sf_context->name, "cluster") == 0 ||
strcmp(sf_context->name, "replica") == 0)
{
if (max_entries < 1024) {
max_entries += 8;
} else {
max_entries = 1024;
}
} else {
if (max_entries < 4 * 1024) { if (max_entries < 4 * 1024) {
max_entries = max_entries * 2; max_entries = max_entries * 2;
} else if (max_entries < 8 * 1024) { } else if (max_entries < 8 * 1024) {
@ -198,23 +206,19 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
max_entries = (max_entries * 5) / 4; max_entries = (max_entries * 5) / 4;
} else if (max_entries < 32 * 1024) { } else if (max_entries < 32 * 1024) {
max_entries = (max_entries * 6) / 5; max_entries = (max_entries * 6) / 5;
#if IOEVENT_USE_URING
if (max_entries > 32 * 1024) {
max_entries = 32 * 1024;
}
#else
} else if (max_entries < 64 * 1024) { } else if (max_entries < 64 * 1024) {
max_entries = (max_entries * 11) / 10; max_entries = (max_entries * 11) / 10;
} else if (max_entries < 128 * 1024) { } else if (max_entries < 128 * 1024) {
max_entries = (max_entries * 21) / 20; max_entries = (max_entries * 21) / 20;
}
#if IOEVENT_USE_URING
if (sf_context->use_io_uring) {
if (max_entries > 32 * 1024) {
max_entries = 32 * 1024;
}
}
#endif #endif
}
} else {
if (max_entries < 1024) {
max_entries += 8;
} else {
max_entries = 1024;
}
} }
g_current_time = time(NULL); g_current_time = time(NULL);
@ -247,18 +251,23 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
{ {
char prompt[256]; char prompt[256];
#if IOEVENT_USE_URING #if IOEVENT_USE_URING
if (result == EPERM) { if (sf_context->use_io_uring) {
strcpy(prompt, " make sure kernel.io_uring_disabled set to 0"); if (result == EPERM) {
} else if (result == EINVAL) { strcpy(prompt, " make sure kernel."
sprintf(prompt, " maybe max_connections: %d is too large" "io_uring_disabled set to 0");
" or [%s]'s work_threads: %d is too small", } else if (result == EINVAL) {
sf_context->net_buffer_cfg.max_connections, sprintf(prompt, " maybe max_connections: %d is too large"
sf_context->name, sf_context->work_threads); " or [%s]'s work_threads: %d is too small",
sf_context->net_buffer_cfg.max_connections,
sf_context->name, sf_context->work_threads);
} else {
*prompt = '\0';
}
} else { } else {
#endif
*prompt = '\0'; *prompt = '\0';
#if IOEVENT_USE_URING
} }
#else
*prompt = '\0';
#endif #endif
logError("file: "__FILE__", line: %d, " logError("file: "__FILE__", line: %d, "
@ -268,7 +277,7 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
} }
#if IOEVENT_USE_URING #if IOEVENT_USE_URING
if (send_done_callback != NULL) { if (sf_context->use_io_uring && send_done_callback != NULL) {
ioevent_set_send_zc_done_notify(&thread_data->ev_puller, true); ioevent_set_send_zc_done_notify(&thread_data->ev_puller, true);
} }
#endif #endif