Add jit_deform_{count|time} metrics
parent
14e61c36e4
commit
6d741b84f8
|
@ -86,8 +86,10 @@ CREATE FUNCTION pg_stat_monitor_internal(
|
|||
OUT jit_optimization_time float8,
|
||||
OUT jit_emission_count int8,
|
||||
OUT jit_emission_time float8,
|
||||
OUT jit_deform_count int8,
|
||||
OUT jit_deform_time float8,
|
||||
|
||||
OUT toplevel BOOLEAN, --64
|
||||
OUT toplevel BOOLEAN, --66
|
||||
OUT bucket_done BOOLEAN
|
||||
)
|
||||
RETURNS SETOF record
|
||||
|
@ -435,7 +437,9 @@ CREATE VIEW pg_stat_monitor AS SELECT
|
|||
jit_optimization_count,
|
||||
jit_optimization_time,
|
||||
jit_emission_count,
|
||||
jit_emission_time
|
||||
jit_emission_time,
|
||||
jit_deform_count,
|
||||
jit_deform_time
|
||||
|
||||
FROM pg_stat_monitor_internal(TRUE)
|
||||
ORDER BY bucket_start_time;
|
||||
|
|
|
@ -42,7 +42,7 @@ PG_MODULE_MAGIC;
|
|||
/* Number of output arguments (columns) for various API versions */
|
||||
#define PG_STAT_MONITOR_COLS_V1_0 52
|
||||
#define PG_STAT_MONITOR_COLS_V2_0 64
|
||||
#define PG_STAT_MONITOR_COLS_V2_1 66 //TODO !!!!!!!
|
||||
#define PG_STAT_MONITOR_COLS_V2_1 68 //TODO !!!!!!!
|
||||
#define PG_STAT_MONITOR_COLS PG_STAT_MONITOR_COLS_V2_0 /* maximum of above */
|
||||
|
||||
#define PGSM_TEXT_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "pg_stat_monitor_query"
|
||||
|
@ -1584,6 +1584,10 @@ pgsm_update_entry(pgsmEntry * entry,
|
|||
e->counters.jitinfo.jit_emission_count++;
|
||||
e->counters.jitinfo.jit_emission_time += INSTR_TIME_GET_MILLISEC(jitusage->emission_counter);
|
||||
|
||||
if (INSTR_TIME_GET_MILLISEC(jitusage->deform_counter))
|
||||
e->counters.jitinfo.jit_deform_count++;
|
||||
e->counters.jitinfo.jit_deform_time += INSTR_TIME_GET_MILLISEC(jitusage->deform_counter);
|
||||
|
||||
/* Only do this for local storage scenarios */
|
||||
if (kind != PGSM_STORE)
|
||||
{
|
||||
|
@ -1591,6 +1595,7 @@ pgsm_update_entry(pgsmEntry * entry,
|
|||
memcpy((void *) &e->counters.jitinfo.instr_inlining_counter, &jitusage->inlining_counter, sizeof(instr_time));
|
||||
memcpy((void *) &e->counters.jitinfo.instr_optimization_counter, &jitusage->optimization_counter, sizeof(instr_time));
|
||||
memcpy((void *) &e->counters.jitinfo.instr_emission_counter, &jitusage->emission_counter, sizeof(instr_time));
|
||||
memcpy((void *) &e->counters.jitinfo.instr_deform_counter, &jitusage->deform_counter, sizeof(instr_time));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1848,6 +1853,7 @@ pgsm_store(pgsmEntry * entry)
|
|||
memcpy(&jitusage.inlining_counter, &entry->counters.jitinfo.instr_inlining_counter, sizeof(instr_time));
|
||||
memcpy(&jitusage.optimization_counter, &entry->counters.jitinfo.instr_optimization_counter, sizeof(instr_time));
|
||||
memcpy(&jitusage.emission_counter, &entry->counters.jitinfo.instr_emission_counter, sizeof(instr_time));
|
||||
memcpy(&jitusage.deform_counter, &entry->counters.jitinfo.instr_deform_counter, sizeof(instr_time));
|
||||
|
||||
/*
|
||||
* Acquire a share lock to start with. We'd have to acquire exclusive if
|
||||
|
@ -2458,6 +2464,8 @@ pg_stat_monitor_internal(FunctionCallInfo fcinfo,
|
|||
values[i++] = Float8GetDatumFast(tmp.jitinfo.jit_optimization_time);
|
||||
values[i++] = Int64GetDatumFast(tmp.jitinfo.jit_emission_count);
|
||||
values[i++] = Float8GetDatumFast(tmp.jitinfo.jit_emission_time);
|
||||
values[i++] = Int64GetDatumFast(tmp.jitinfo.jit_deform_count);
|
||||
values[i++] = Float8GetDatumFast(tmp.jitinfo.jit_deform_time);
|
||||
}
|
||||
/* toplevel at column number 64 */
|
||||
values[i++] = BoolGetDatum(toplevel);
|
||||
|
|
|
@ -309,6 +309,9 @@ typedef struct JitInfo
|
|||
double jit_generation_time; /* total time to generate jit code */
|
||||
int64 jit_inlining_count; /* number of times inlining time has been
|
||||
* > 0 */
|
||||
double jit_deform_time; /* total time to deform tuples in jit code */
|
||||
int64 jit_deform_count; /* number of times deform time has been >
|
||||
* 0 */
|
||||
double jit_inlining_time; /* total time to inline jit code */
|
||||
int64 jit_optimization_count; /* number of times optimization time
|
||||
* has been > 0 */
|
||||
|
@ -323,6 +326,7 @@ typedef struct JitInfo
|
|||
*/
|
||||
instr_time instr_generation_counter; /* generation counter */
|
||||
instr_time instr_inlining_counter; /* inlining counter */
|
||||
instr_time instr_deform_counter; /* deform counter */
|
||||
instr_time instr_optimization_counter; /* optimization counter */
|
||||
instr_time instr_emission_counter; /* emission counter */
|
||||
} JitInfo;
|
||||
|
|
|
@ -25,9 +25,9 @@ close $conf;
|
|||
my %pg_versions_pgsm_columns = ( 17 => "application_name,".
|
||||
"bucket,bucket_done,bucket_start_time,calls," .
|
||||
"client_ip,cmd_type,cmd_type_text,comments,cpu_sys_time,cpu_user_time," .
|
||||
"datname,dbid,elevel,jit_emission_count,jit_emission_time,jit_functions," .
|
||||
"jit_generation_time,jit_inlining_count,jit_inlining_time," .
|
||||
"jit_optimization_count,jit_optimization_time," .
|
||||
"datname,dbid,elevel,jit_deform_count,jit_deform_time," .
|
||||
"jit_emission_count,jit_emission_time,jit_functions,jit_generation_time," .
|
||||
"jit_inlining_count,jit_inlining_time,jit_optimization_count,jit_optimization_time," .
|
||||
"local_blk_read_time,local_blk_write_time,local_blks_dirtied,local_blks_hit,".
|
||||
"local_blks_read,local_blks_written,max_exec_time,max_plan_time,mean_exec_time," .
|
||||
"mean_plan_time,message,min_exec_time,min_plan_time,pgsm_query_id,planid," .
|
||||
|
|
Loading…
Reference in New Issue