mirror of
https://github.com/postgres/postgres.git
synced 2025-06-17 17:02:08 +03:00
Add more temporary code to record stack usage at server process exit.
After a look at preliminary results from commit 88cf37d2a8
,
I realized it'd be a good idea to spew out the maximum depth measurement
seen by check_stack_depth. So add some quick-n-dirty code to do that.
Like the previous commit, this will be reverted once we've gathered
a set of buildfarm runs with it.
This commit is contained in:
@ -35,6 +35,9 @@
|
|||||||
#include "storage/ipc.h"
|
#include "storage/ipc.h"
|
||||||
#include "tcop/tcopprot.h"
|
#include "tcop/tcopprot.h"
|
||||||
|
|
||||||
|
extern long max_measured_stack_depth;
|
||||||
|
extern long max_measured_register_stack_depth;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This flag is set during proc_exit() to change ereport()'s behavior,
|
* This flag is set during proc_exit() to change ereport()'s behavior,
|
||||||
@ -121,6 +124,15 @@ report_stack_size(void)
|
|||||||
(int) getpid());
|
(int) getpid());
|
||||||
(void) system(sysbuf);
|
(void) system(sysbuf);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__ia64__) || defined(__ia64)
|
||||||
|
fprintf(stderr, "max measured stack depths %ldkB, %ldkB\n",
|
||||||
|
(max_measured_stack_depth + 1023) / 1024,
|
||||||
|
(max_measured_register_stack_depth + 1023) / 1024);
|
||||||
|
#else
|
||||||
|
fprintf(stderr, "max measured stack depth %ldkB\n",
|
||||||
|
(max_measured_stack_depth + 1023) / 1024);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,6 +96,9 @@ int max_stack_depth = 100;
|
|||||||
/* wait N seconds to allow attach from a debugger */
|
/* wait N seconds to allow attach from a debugger */
|
||||||
int PostAuthDelay = 0;
|
int PostAuthDelay = 0;
|
||||||
|
|
||||||
|
/* Exported for use by proc_exit */
|
||||||
|
long max_measured_stack_depth = 0;
|
||||||
|
long max_measured_register_stack_depth = 0;
|
||||||
|
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
@ -3137,6 +3140,11 @@ stack_is_too_deep(void)
|
|||||||
if (stack_depth < 0)
|
if (stack_depth < 0)
|
||||||
stack_depth = -stack_depth;
|
stack_depth = -stack_depth;
|
||||||
|
|
||||||
|
/* Track max measured depth for reporting by proc_exit */
|
||||||
|
if (stack_depth > max_measured_stack_depth &&
|
||||||
|
stack_base_ptr != NULL)
|
||||||
|
max_measured_stack_depth = stack_depth;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Trouble?
|
* Trouble?
|
||||||
*
|
*
|
||||||
@ -3160,6 +3168,10 @@ stack_is_too_deep(void)
|
|||||||
#if defined(__ia64__) || defined(__ia64)
|
#if defined(__ia64__) || defined(__ia64)
|
||||||
stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr);
|
stack_depth = (long) (ia64_get_bsp() - register_stack_base_ptr);
|
||||||
|
|
||||||
|
if (stack_depth > max_measured_register_stack_depth &&
|
||||||
|
register_stack_base_ptr != NULL)
|
||||||
|
max_measured_register_stack_depth = stack_depth;
|
||||||
|
|
||||||
if (stack_depth > max_stack_depth_bytes &&
|
if (stack_depth > max_stack_depth_bytes &&
|
||||||
register_stack_base_ptr != NULL)
|
register_stack_base_ptr != NULL)
|
||||||
return true;
|
return true;
|
||||||
|
Reference in New Issue
Block a user