From e8799d2880dc62da034983f78aff0ff0509e888a Mon Sep 17 00:00:00 2001 From: Valentine Krasnobaeva Date: Sun, 14 Jul 2024 16:58:02 +0200 Subject: [PATCH] MINOR: debug: keep runtime limits in postmortem It's usefull to keep runtime limits (fd and RAM) in postmortem and show them in debug_parse_cli_show_dev(). Runtime limits are fed in feed_post_mortem_late(), as we are sure that at this moment that all configuration was parsed and all applied limits were alredy adjusted. --- src/debug.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/debug.c b/src/debug.c index 683f36e27..b24344fc8 100644 --- a/src/debug.c +++ b/src/debug.c @@ -131,6 +131,8 @@ struct post_mortem { #endif struct rlimit boot_lim_fd; // RLIMIT_NOFILE at startup struct rlimit boot_lim_ram; // RLIMIT_DATA at startup + struct rlimit run_lim_fd; // RLIMIT_NOFILE just before enter in polling loop + struct rlimit run_lim_ram; // RLIMIT_DATA just before enter in polling loop char **argv; #if defined(USE_THREAD) @@ -616,6 +618,16 @@ static int debug_parse_cli_show_dev(char **args, char *payload, struct appctx *a chunk_appendf(&trash, " \tram limit (hard): %s\n", LIM2A(normalize_rlim((ulong)post_mortem.process.boot_lim_ram.rlim_max), "unlimited")); + chunk_appendf(&trash, " runtime limits:\n"); + chunk_appendf(&trash, " \tfd limit (soft): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.run_lim_fd.rlim_cur), "unlimited")); + chunk_appendf(&trash, " \tfd limit (hard): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.run_lim_fd.rlim_max), "unlimited")); + chunk_appendf(&trash, " \tram limit (soft): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.run_lim_ram.rlim_cur), "unlimited")); + chunk_appendf(&trash, " \tram limit (hard): %s\n", + LIM2A(normalize_rlim((ulong)post_mortem.process.run_lim_ram.rlim_max), "unlimited")); + return cli_msg(appctx, LOG_INFO, trash.area); } @@ -2444,6 +2456,8 @@ static int feed_post_mortem_late() post_mortem.process.caps.err_run = errno; } #endif + getrlimit(RLIMIT_NOFILE, &post_mortem.process.run_lim_fd); + getrlimit(RLIMIT_DATA, &post_mortem.process.run_lim_ram); return 1; }