diff options
| author | yangwei <[email protected]> | 2023-08-22 00:00:44 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-08-22 00:21:58 +0800 |
| commit | 5364913818e8ad02b863d34102442202fb56c7b5 (patch) | |
| tree | 65cbdd6926c236187eff7f3497afcf96930c31fb /src/sapp_dev | |
| parent | dfe35c09413a0ada869d68f839b63e1eccf04d4e (diff) | |
✨ feat(signal handle): SIGUSR1触发jemallc的arena.purge
Diffstat (limited to 'src/sapp_dev')
| -rw-r--r-- | src/sapp_dev/sapp_plug.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/sapp_dev/sapp_plug.c b/src/sapp_dev/sapp_plug.c index 6c00779..54a738a 100644 --- a/src/sapp_dev/sapp_plug.c +++ b/src/sapp_dev/sapp_plug.c @@ -50,10 +50,34 @@ static void signal_term_handler(int signo) sapp_global_val->individual_volatile->recv_signal_SIGTERM = 1; } + +static void signal_usr1_handler(int signo) +{ + printf("signal_term_handler, SIGUSR1 recviced!\n"); +#if defined(USE_JEMALLOC) + #include "jemalloc/jemalloc.h" + char tmp[32]; + unsigned narenas = 0; + size_t sz = sizeof(unsigned); + /*��ȡarenas�ĸ�����Ȼ�����jemalloc�Ľӿڽ������� */ + if (!mallctl("arenas.narenas", &narenas, &sz, NULL, 0)) + { + sprintf(tmp, "arena.%u.purge", narenas); + if (!mallctl(tmp, NULL, 0, NULL, 0)) + { + printf("jemalloc purge arena %u success\n", narenas); + return; + } + } + printf( "Error purging dirty pages\n"); +#endif +} + static void signal_take_over(void) { signal(SIGHUP, signal_hup_handler); signal(SIGTERM, signal_term_handler); + signal(SIGUSR1, signal_usr1_handler); } |
