PG-586: pg_stat_monitor: CPU and user timing should be captured
for utility statements as well Setting user and sys time to 0 in case there is a problem getting rusage details.pull/367/head
parent
ee18c16149
commit
9327c864d3
|
@ -711,11 +711,16 @@ pgss_ExecutorEnd(QueryDesc *queryDesc)
|
|||
*/
|
||||
InstrEndLoop(queryDesc->totaltime);
|
||||
|
||||
sys_info.utime = 0;
|
||||
sys_info.stime = 0;
|
||||
|
||||
if (getrusage(RUSAGE_SELF, &rusage_end) != 0)
|
||||
elog(DEBUG1, "pg_stat_monitor: failed to execute getrusage");
|
||||
|
||||
else
|
||||
{
|
||||
sys_info.utime = time_diff(rusage_end.ru_utime, rusage_start.ru_utime);
|
||||
sys_info.stime = time_diff(rusage_end.ru_stime, rusage_start.ru_stime);
|
||||
}
|
||||
|
||||
pgss_store(queryId, /* query id */
|
||||
queryDesc->sourceText, /* query text */
|
||||
|
@ -1030,13 +1035,18 @@ pgss_ProcessUtility(PlannedStmt *pstmt, const char *queryString,
|
|||
PG_RE_THROW();
|
||||
}
|
||||
|
||||
sys_info.utime = 0;
|
||||
sys_info.stime = 0;
|
||||
|
||||
PG_END_TRY();
|
||||
|
||||
if (getrusage(RUSAGE_SELF, &rusage_end) != 0)
|
||||
elog(DEBUG1, "pg_stat_monitor: failed to execute getrusage");
|
||||
|
||||
else
|
||||
{
|
||||
sys_info.utime = time_diff(rusage_end.ru_utime, rusage_start.ru_utime);
|
||||
sys_info.stime = time_diff(rusage_end.ru_stime, rusage_start.ru_stime);
|
||||
}
|
||||
|
||||
INSTR_TIME_SET_CURRENT(duration);
|
||||
INSTR_TIME_SUBTRACT(duration, start);
|
||||
|
|
Loading…
Reference in New Issue