Re: Add connection active, idle time to pg_stat_activity - Mailing list pgsql-hackers
| From | Drouvot, Bertrand |
|---|---|
| Subject | Re: Add connection active, idle time to pg_stat_activity |
| Date | |
| Msg-id | d449de03-fa88-0638-c279-65335b995f13@amazon.com Whole thread Raw |
| In response to | Re: Add connection active, idle time to pg_stat_activity (Sergey Dudoladov <sergey.dudoladov@gmail.com>) |
| Responses |
Re: Add connection active, idle time to pg_stat_activity
|
| List | pgsql-hackers |
Hi,
On 6/13/22 4:51 PM, Sergey Dudoladov wrote:
> Hello,
>
> I've updated the patch in preparation for the upcoming commitfest.
I really like the idea of adding additional information like the ones in
this patch, so +1 for the patch.
As far the patch:
@@ -864,7 +864,9 @@ CREATE VIEW pg_stat_activity AS
s.backend_xmin,
S.query_id,
S.query,
- S.backend_type
+ S.backend_type,
+ S.active_time,
+ S.idle_in_transaction_time
what about using total_active_time and total_idle_in_transaction_time?
I think that would avoid any confusion and "total_" is also already used
in other pg_stat_* views when appropriate.
@@ -468,6 +468,13 @@ pgstat_beshutdown_hook(int code, Datum arg)
beentry->st_procpid = 0; /* mark invalid */
+ /*
+ * Reset per-backend counters so that accumulated values for the
current
+ * backend are not used for future backends.
+ */
+ beentry->st_total_active_time = 0;
+ beentry->st_total_transaction_idle_time = 0;
shouldn't that be in pgstat_bestart() instead? (and just let
pgstat_beshutdown_hook() set st_procpid to 0)
/* so that functions can check if backend_status.c is up via
MyBEEntry */
@@ -524,6 +531,8 @@ pgstat_report_activity(BackendState state, const
char *cmd_str)
TimestampTz start_timestamp;
TimestampTz current_timestamp;
int len = 0;
+ int64 active_time_diff = 0;
+ int64 transaction_idle_time_diff = 0;
I think here we can use only a single variable say "state_time_diff" for
example, as later only one of those two is incremented anyway.
+++ b/src/backend/utils/adt/pgstatfuncs.c
@@ -539,7 +539,7 @@ pg_stat_get_progress_info(PG_FUNCTION_ARGS)
Datum
pg_stat_get_activity(PG_FUNCTION_ARGS)
{
-#define PG_STAT_GET_ACTIVITY_COLS 30
+#define PG_STAT_GET_ACTIVITY_COLS 32
int num_backends =
pgstat_fetch_stat_numbackends();
int curr_backend;
int pid = PG_ARGISNULL(0) ? -1 :
PG_GETARG_INT32(0);
@@ -621,6 +621,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
{
SockAddr zero_clientaddr;
char *clipped_activity;
+ int64 time_to_report;
what about total_time_to_report instead?
Also, maybe not for this patch but I think that would be also useful to
get the total time waited (so that we would get more inside of what the
"active" time was made of).
Regards,
--
Bertrand Drouvot
Amazon Web Services:https://aws.amazon.com
pgsql-hackers by date: