PG-316: Convert blocks timings to average per buckets.

pull/162/head
Ibrar Ahmed 2022-01-05 19:49:47 +00:00
parent 63908af3f3
commit eaa9c08e24
1 changed files with 37 additions and 26 deletions

View File

@ -35,6 +35,9 @@ PG_MODULE_MAGIC;
#define PGUNSIXBIT(val) (((val) & 0x3F) + '0')
#define _memset(_dst,_val,_size)\
memset((void*)_dst, _val, _size);
#define _snprintf(_str_dst, _str_src, _len, _max_len)\
memcpy((void *)_str_dst, _str_src, _len < _max_len ? _len : _max_len)
@ -1344,33 +1347,41 @@ pgss_update_entry(pgssEntry *entry,
_snprintf(e->counters.error.message, error_info->message, message_len, ERROR_MESSAGE_LEN);
}
e->counters.calls.rows += rows;
if (bufusage)
{
e->counters.blocks.shared_blks_hit += bufusage->shared_blks_hit;
e->counters.blocks.shared_blks_read += bufusage->shared_blks_read;
e->counters.blocks.shared_blks_dirtied += bufusage->shared_blks_dirtied;
e->counters.blocks.shared_blks_written += bufusage->shared_blks_written;
e->counters.blocks.local_blks_hit += bufusage->local_blks_hit;
e->counters.blocks.local_blks_read += bufusage->local_blks_read;
e->counters.blocks.local_blks_dirtied += bufusage->local_blks_dirtied;
e->counters.blocks.local_blks_written += bufusage->local_blks_written;
e->counters.blocks.temp_blks_read += bufusage->temp_blks_read;
e->counters.blocks.temp_blks_written += bufusage->temp_blks_written;
e->counters.blocks.blk_read_time += INSTR_TIME_GET_MILLISEC(bufusage->blk_read_time);
e->counters.blocks.blk_write_time += INSTR_TIME_GET_MILLISEC(bufusage->blk_write_time);
}
if (e->counters.calls.calls == 0)
{
_memset(&e->counters.walusage, 0, sizeof(e->counters.walusage));
}
if (e->counters.calls.calls > 0)
{
if (bufusage)
{
e->counters.blocks.shared_blks_hit += (int64)(bufusage->shared_blks_hit - e->counters.blocks.shared_blks_hit)/e->counters.calls.calls;
e->counters.blocks.shared_blks_read += (int64)(bufusage->shared_blks_read - e->counters.blocks.shared_blks_read)/e->counters.calls.calls;
e->counters.blocks.shared_blks_dirtied += (int64)(bufusage->shared_blks_dirtied - e->counters.blocks.shared_blks_dirtied)/e->counters.calls.calls;
e->counters.blocks.shared_blks_written += (int64)(bufusage->shared_blks_written - e->counters.blocks.shared_blks_written)/e->counters.calls.calls;
e->counters.blocks.local_blks_hit += (int64)(bufusage->local_blks_hit - e->counters.blocks.local_blks_hit)/e->counters.calls.calls;
e->counters.blocks.local_blks_read += (int64)(bufusage->local_blks_read - e->counters.blocks.local_blks_read)/e->counters.calls.calls;
e->counters.blocks.local_blks_dirtied += (int64)(bufusage->local_blks_dirtied - e->counters.blocks.local_blks_dirtied)/e->counters.calls.calls;
e->counters.blocks.local_blks_written += (int64)(bufusage->local_blks_written - e->counters.blocks.local_blks_written)/e->counters.calls.calls;
e->counters.blocks.temp_blks_read += (int64)(bufusage->temp_blks_read - e->counters.blocks.temp_blks_read)/e->counters.calls.calls;
e->counters.blocks.temp_blks_written += (int64)(bufusage->temp_blks_written - e->counters.blocks.temp_blks_written)/e->counters.calls.calls;
e->counters.blocks.blk_read_time += (int64)(INSTR_TIME_GET_MILLISEC(bufusage->blk_read_time) - e->counters.blocks.blk_read_time)/e->counters.calls.calls;
e->counters.blocks.blk_write_time += (int64)(INSTR_TIME_GET_MILLISEC(bufusage->blk_write_time) - e->counters.blocks.blk_write_time)/e->counters.calls.calls;
}
if (sys_info)
{
e->counters.sysinfo.utime = (int64)(sys_info->utime - e->counters.sysinfo.utime)/e->counters.calls.calls;
e->counters.sysinfo.stime = (int64)(sys_info->stime - e->counters.sysinfo.stime)/e->counters.calls.calls;
}
if (walusage)
{
e->counters.walusage.wal_records +=(int64) (walusage->wal_records - e->counters.walusage.wal_records)/e->counters.calls.calls;
e->counters.walusage.wal_fpi +=(int64) (walusage->wal_fpi - e->counters.walusage.wal_fpi)/e->counters.calls.calls;
e->counters.walusage.wal_bytes += (int64)( walusage->wal_bytes - e->counters.walusage.wal_bytes)/e->counters.calls.calls;
}
}
e->counters.calls.usage += USAGE_EXEC(total_time);
if (sys_info)
{
e->counters.sysinfo.utime += sys_info->utime;
e->counters.sysinfo.stime += sys_info->stime;
}
if (walusage)
{
e->counters.walusage.wal_records += walusage->wal_records;
e->counters.walusage.wal_fpi += walusage->wal_fpi;
e->counters.walusage.wal_bytes += walusage->wal_bytes;
}
SpinLockRelease(&e->mutex);
}
}