summaryrefslogtreecommitdiff
path: root/src/sapp_dev
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-08-22 00:00:44 +0800
committeryangwei <[email protected]>2023-08-22 00:21:58 +0800
commit5364913818e8ad02b863d34102442202fb56c7b5 (patch)
tree65cbdd6926c236187eff7f3497afcf96930c31fb /src/sapp_dev
parentdfe35c09413a0ada869d68f839b63e1eccf04d4e (diff)
✨ feat(signal handle): SIGUSR1触发jemallc的arena.purge
Diffstat (limited to 'src/sapp_dev')
-rw-r--r--src/sapp_dev/sapp_plug.c24
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);
}