From c039ba0716383ccaf88c9be1a7f0803a77823de1 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Fri, 1 Sep 2017 15:36:33 -0400 Subject: [PATCH] Add memory info to getrusage output Add the maxrss field to the getrusage output (log_*_stats). This was previously omitted because of portability concerns, but we feel this might not be a concern anymore. based on patch by Justin Pryzby --- src/backend/tcop/postgres.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index b8d860ebdb..8d3fecf6d6 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -4421,11 +4421,8 @@ ShowUsage(const char *title) } /* - * the only stats we don't show here are for memory usage -- i can't - * figure out how to interpret the relevant fields in the rusage struct, - * and they change names across o/s platforms, anyway. if you can figure - * out what the entries mean, you can somehow extract resident set size, - * shared text size, and unshared data and stack sizes. + * The only stats we don't show here are ixrss, idrss, isrss. It takes + * some work to interpret them, and most platforms don't fill them in. */ initStringInfo(&str); @@ -4445,6 +4442,16 @@ ShowUsage(const char *title) (long) sys.tv_sec, (long) sys.tv_usec); #if defined(HAVE_GETRUSAGE) + appendStringInfo(&str, + "!\t%ld kB max resident size\n", +#if defined(__darwin__) + /* in bytes on macOS */ + r.ru_maxrss/1024 +#else + /* in kilobytes on most other platforms */ + r.ru_maxrss +#endif + ); appendStringInfo(&str, "!\t%ld/%ld [%ld/%ld] filesystem blocks in/out\n", r.ru_inblock - Save_r.ru_inblock,