set thread name as necessary

iovec_array
YuQing 2021-04-29 21:33:05 +08:00
parent 03b6d7b20a
commit eea7adde7c
8 changed files with 57 additions and 17 deletions

View File

@ -480,7 +480,7 @@ static int do_init()
} }
memset(receipt_thread_contexts, 0, bytes); memset(receipt_thread_contexts, 0, bytes);
return sf_service_init_ex2(&g_sf_context, return sf_service_init_ex2(&g_sf_context, "idemp-receipt",
receipt_alloc_thread_extra_data, receipt_thread_loop_callback, receipt_alloc_thread_extra_data, receipt_thread_loop_callback,
NULL, sf_proto_set_body_length, receipt_deal_task, NULL, sf_proto_set_body_length, receipt_deal_task,
receipt_task_finish_cleanup, receipt_recv_timeout_callback, receipt_task_finish_cleanup, receipt_recv_timeout_callback,

View File

@ -535,6 +535,16 @@ static void *binlog_writer_func(void *arg)
SFBinlogWriterBuffer *wb_head; SFBinlogWriterBuffer *wb_head;
thread = (SFBinlogWriterThread *)arg; thread = (SFBinlogWriterThread *)arg;
#ifdef OS_LINUX
{
char thread_name[64];
snprintf(thread_name, sizeof(thread_name),
"writer-%s", thread->name);
prctl(PR_SET_NAME, thread_name);
}
#endif
thread->running = true; thread->running = true;
while (SF_G_CONTINUE_FLAG) { while (SF_G_CONTINUE_FLAG) {
wb_head = (SFBinlogWriterBuffer *)fc_queue_pop_all(&thread->queue); wb_head = (SFBinlogWriterBuffer *)fc_queue_pop_all(&thread->queue);
@ -641,7 +651,7 @@ int sf_binlog_writer_init_by_version(SFBinlogWriterInfo *writer,
} }
int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread, int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,
SFBinlogWriterInfo *writer, const short order_mode, const char *name, SFBinlogWriterInfo *writer, const short order_mode,
const short order_by, const int max_record_size, const short order_by, const int max_record_size,
const int writer_count, const bool use_fixed_buffer_size) const int writer_count, const bool use_fixed_buffer_size)
{ {
@ -650,6 +660,7 @@ int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,
pthread_t tid; pthread_t tid;
int result; int result;
snprintf(thread->name, sizeof(thread->name), "%s", name);
thread->order_mode = order_mode; thread->order_mode = order_mode;
thread->order_by = order_by; thread->order_by = order_by;
thread->use_fixed_buffer_size = use_fixed_buffer_size; thread->use_fixed_buffer_size = use_fixed_buffer_size;

View File

@ -67,6 +67,7 @@ typedef struct sf_binlog_writer_buffer_ring {
typedef struct binlog_writer_thread { typedef struct binlog_writer_thread {
struct fast_mblock_man mblock; struct fast_mblock_man mblock;
struct fc_queue queue; struct fc_queue queue;
char name[64];
bool running; bool running;
bool use_fixed_buffer_size; bool use_fixed_buffer_size;
short order_mode; short order_mode;
@ -127,13 +128,13 @@ int sf_binlog_writer_init_by_version(SFBinlogWriterInfo *writer,
const int buffer_size, const int ring_size); const int buffer_size, const int ring_size);
int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread, int sf_binlog_writer_init_thread_ex(SFBinlogWriterThread *thread,
SFBinlogWriterInfo *writer, const short order_mode, const char *name, SFBinlogWriterInfo *writer, const short order_mode,
const short order_by, const int max_record_size, const short order_by, const int max_record_size,
const int writer_count, const bool use_fixed_buffer_size); const int writer_count, const bool use_fixed_buffer_size);
#define sf_binlog_writer_init_thread(thread, \ #define sf_binlog_writer_init_thread(thread, name, \
writer, order_by, max_record_size) \ writer, order_by, max_record_size) \
sf_binlog_writer_init_thread_ex(thread, writer, \ sf_binlog_writer_init_thread_ex(thread, name, writer, \
SF_BINLOG_THREAD_ORDER_MODE_FIXED, \ SF_BINLOG_THREAD_ORDER_MODE_FIXED, \
order_by, max_record_size, 1, true) order_by, max_record_size, 1, true)
@ -148,8 +149,9 @@ static inline int sf_binlog_writer_init(SFBinlogWriterContext *context,
return result; return result;
} }
return sf_binlog_writer_init_thread(&context->thread, &context->writer, return sf_binlog_writer_init_thread(&context->thread, subdir_name,
SF_BINLOG_THREAD_TYPE_ORDER_BY_NONE, max_record_size); &context->writer, SF_BINLOG_THREAD_TYPE_ORDER_BY_NONE,
max_record_size);
} }
int sf_binlog_writer_change_order_by(SFBinlogWriterInfo *writer, int sf_binlog_writer_change_order_by(SFBinlogWriterInfo *writer,

View File

@ -817,6 +817,10 @@ static void *connection_manager_thread_func(void *arg)
SFConnectionManager *cm; SFConnectionManager *cm;
struct common_blocked_node *head; struct common_blocked_node *head;
#ifdef OS_LINUX
prctl(PR_SET_NAME, "cm-alive-detect");
#endif
cm = (SFConnectionManager *)arg; cm = (SFConnectionManager *)arg;
logInfo("file: "__FILE__", line: %d, " logInfo("file: "__FILE__", line: %d, "
"[%s] connection manager thread start", "[%s] connection manager thread start",

View File

@ -41,7 +41,7 @@ SFGlobalVariables g_sf_global_vars = {
}; };
SFContext g_sf_context = { SFContext g_sf_context = {
NULL, 0, -1, -1, 0, 0, 1, DEFAULT_WORK_THREADS, {'\0'}, NULL, 0, -1, -1, 0, 0, 1, DEFAULT_WORK_THREADS,
{'\0'}, {'\0'}, 0, true, true, NULL, NULL, NULL, {'\0'}, {'\0'}, 0, true, true, NULL, NULL, NULL,
sf_task_finish_clean_up, NULL sf_task_finish_clean_up, NULL
}; };

View File

@ -115,7 +115,7 @@ static int sf_init_free_queues(const int task_arg_size,
return 0; return 0;
} }
int sf_service_init_ex2(SFContext *sf_context, int sf_service_init_ex2(SFContext *sf_context, const char *name,
sf_alloc_thread_extra_data_callback sf_alloc_thread_extra_data_callback
alloc_thread_extra_data_callback, alloc_thread_extra_data_callback,
ThreadLoopCallback thread_loop_callback, ThreadLoopCallback thread_loop_callback,
@ -135,6 +135,7 @@ int sf_service_init_ex2(SFContext *sf_context,
pthread_t tid; pthread_t tid;
pthread_attr_t thread_attr; pthread_attr_t thread_attr;
snprintf(sf_context->name, sizeof(sf_context->name), "%s", name);
sf_context->realloc_task_buffer = g_sf_global_vars. sf_context->realloc_task_buffer = g_sf_global_vars.
min_buff_size < g_sf_global_vars.max_buff_size; min_buff_size < g_sf_global_vars.max_buff_size;
sf_context->accept_done_func = accept_done_callback; sf_context->accept_done_func = accept_done_callback;
@ -234,7 +235,7 @@ int sf_service_init_ex2(SFContext *sf_context,
thread_ctx->sf_context = sf_context; thread_ctx->sf_context = sf_context;
thread_ctx->thread_data = thread_data; thread_ctx->thread_data = thread_data;
if ((result=pthread_create(&tid, &thread_attr, if ((result=pthread_create(&tid, &thread_attr,
worker_thread_entrance, thread_ctx)) != 0) worker_thread_entrance, thread_ctx)) != 0)
{ {
logError("file: "__FILE__", line: %d, " logError("file: "__FILE__", line: %d, "
"create thread failed, startup threads: %d, " "create thread failed, startup threads: %d, "
@ -284,6 +285,17 @@ static void *worker_thread_entrance(void *arg)
int thread_count; int thread_count;
thread_ctx = (struct worker_thread_context *)arg; thread_ctx = (struct worker_thread_context *)arg;
#ifdef OS_LINUX
{
char thread_name[32];
snprintf(thread_name, sizeof(thread_name), "%s-net[%d]",
thread_ctx->sf_context->name, (int)(thread_ctx->
thread_data - thread_ctx->sf_context->thread_data));
prctl(PR_SET_NAME, thread_name);
}
#endif
thread_count = __sync_add_and_fetch(&thread_ctx-> thread_count = __sync_add_and_fetch(&thread_ctx->
sf_context->thread_count, 1); sf_context->thread_count, 1);
@ -375,6 +387,16 @@ static void *accept_thread_entrance(void *arg)
struct fast_task_info *task; struct fast_task_info *task;
accept_context = (struct accept_thread_context *)arg; accept_context = (struct accept_thread_context *)arg;
#ifdef OS_LINUX
{
char thread_name[32];
snprintf(thread_name, sizeof(thread_name), "%s-listen",
accept_context->sf_context->name);
prctl(PR_SET_NAME, thread_name);
}
#endif
while (g_sf_global_vars.continue_flag) { while (g_sf_global_vars.continue_flag) {
sockaddr_len = sizeof(inaddr); sockaddr_len = sizeof(inaddr);
incomesock = accept(accept_context->server_sock, incomesock = accept(accept_context->server_sock,

View File

@ -33,7 +33,7 @@ typedef void (*sf_sig_quit_handler)(int sig);
extern "C" { extern "C" {
#endif #endif
int sf_service_init_ex2(SFContext *sf_context, int sf_service_init_ex2(SFContext *sf_context, const char *name,
sf_alloc_thread_extra_data_callback sf_alloc_thread_extra_data_callback
alloc_thread_extra_data_callback, alloc_thread_extra_data_callback,
ThreadLoopCallback thread_loop_callback, ThreadLoopCallback thread_loop_callback,
@ -44,20 +44,20 @@ int sf_service_init_ex2(SFContext *sf_context,
const int proto_header_size, const int task_arg_size, const int proto_header_size, const int task_arg_size,
TaskInitCallback init_callback); TaskInitCallback init_callback);
#define sf_service_init_ex(sf_context, alloc_thread_extra_data_callback, \ #define sf_service_init_ex(sf_context, name, alloc_thread_extra_data_callback,\
thread_loop_callback, accept_done_callback, set_body_length_func, \ thread_loop_callback, accept_done_callback, set_body_length_func, \
deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \ deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \
proto_header_size, task_arg_size) \ proto_header_size, task_arg_size) \
sf_service_init_ex2(sf_context, alloc_thread_extra_data_callback, \ sf_service_init_ex2(sf_context, name, alloc_thread_extra_data_callback, \
thread_loop_callback, accept_done_callback, set_body_length_func, \ thread_loop_callback, accept_done_callback, set_body_length_func, \
deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \ deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \
proto_header_size, task_arg_size, NULL) proto_header_size, task_arg_size, NULL)
#define sf_service_init(alloc_thread_extra_data_callback, \ #define sf_service_init(name, alloc_thread_extra_data_callback, \
thread_loop_callback, accept_done_callback, set_body_length_func, \ thread_loop_callback, accept_done_callback, set_body_length_func, \
deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \ deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \
proto_header_size, task_arg_size) \ proto_header_size, task_arg_size) \
sf_service_init_ex2(&g_sf_context, alloc_thread_extra_data_callback, \ sf_service_init_ex2(&g_sf_context, name, alloc_thread_extra_data_callback, \
thread_loop_callback, accept_done_callback, set_body_length_func, \ thread_loop_callback, accept_done_callback, set_body_length_func, \
deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \ deal_func, task_cleanup_func, timeout_callback, net_timeout_ms, \
proto_header_size, task_arg_size, NULL) proto_header_size, task_arg_size, NULL)

View File

@ -41,6 +41,7 @@ typedef int (*sf_deal_task_func)(struct fast_task_info *task, const int stage);
typedef int (*sf_recv_timeout_callback)(struct fast_task_info *task); typedef int (*sf_recv_timeout_callback)(struct fast_task_info *task);
typedef struct sf_context { typedef struct sf_context {
char name[64];
struct nio_thread_data *thread_data; struct nio_thread_data *thread_data;
volatile int thread_count; volatile int thread_count;
int outer_sock; int outer_sock;