155 return backend_stats;
189 bktype_shstats->
counts[io_object][io_context][io_op] +=
190 pending_io.
counts[io_object][io_context][io_op];
191 bktype_shstats->
bytes[io_object][io_context][io_op] +=
192 pending_io.
bytes[io_object][io_context][io_op];
193 time = pending_io.
pending_times[io_object][io_context][io_op];
195 bktype_shstats->
times[io_object][io_context][io_op] +=
246#define WALSTAT_ACC(fld, var_to_add) \
247 (bktype_shstats->fld += var_to_add.fld)
270 bool has_pending_data =
false;
277 has_pending_data =
true;
282 has_pending_data =
true;
284 if (!has_pending_data)
344 memset(&shstatent->
stats, 0,
sizeof(shstatent->
stats));
PgBackendStatus * pgstat_get_beentry_by_proc_number(ProcNumber procNumber)
#define MemSet(start, val, len)
Assert(PointerIsAligned(start, uint64))
#define INSTR_TIME_ADD(x, y)
#define INSTR_TIME_GET_MICROSEC(t)
void WalUsageAccumDiff(WalUsage *dst, const WalUsage *add, const WalUsage *sub)
BackendType MyBackendType
void * pgstat_fetch_entry(PgStat_Kind kind, Oid dboid, uint64 objid)
#define IOCONTEXT_NUM_TYPES
#define IOOBJECT_NUM_TYPES
void pgstat_create_backend(ProcNumber procnum)
static void pgstat_flush_backend_entry_wal(PgStat_EntryRef *entry_ref)
static PgStat_BackendPending PendingBackendStats
bool pgstat_tracks_backend_bktype(BackendType bktype)
#define WALSTAT_ACC(fld, var_to_add)
static void pgstat_flush_backend_entry_io(PgStat_EntryRef *entry_ref)
void pgstat_count_backend_io_op(IOObject io_object, IOContext io_context, IOOp io_op, uint32 cnt, uint64 bytes)
static bool pgstat_backend_wal_have_pending(void)
static bool backend_has_iostats
bool pgstat_backend_have_pending_cb(void)
void pgstat_backend_reset_timestamp_cb(PgStatShared_Common *header, TimestampTz ts)
static WalUsage prevBackendWalUsage
PgStat_Backend * pgstat_fetch_stat_backend_by_pid(int pid, BackendType *bktype)
void pgstat_count_backend_io_op_time(IOObject io_object, IOContext io_context, IOOp io_op, instr_time io_time)
bool pgstat_flush_backend(bool nowait, bits32 flags)
bool pgstat_backend_flush_cb(bool nowait)
PgStat_Backend * pgstat_fetch_stat_backend(ProcNumber procNumber)
#define PGSTAT_BACKEND_FLUSH_ALL
#define PGSTAT_BACKEND_FLUSH_IO
#define PGSTAT_BACKEND_FLUSH_WAL
bool pgstat_tracks_io_op(BackendType bktype, IOObject io_object, IOContext io_context, IOOp io_op)
#define PGSTAT_KIND_BACKEND
void pgstat_unlock_entry(PgStat_EntryRef *entry_ref)
PgStat_EntryRef * pgstat_get_entry_ref_locked(PgStat_Kind kind, Oid dboid, uint64 objid, bool nowait)
#define GetNumberFromPGProc(proc)
PGPROC * BackendPidGetProc(int pid)
PGPROC * AuxiliaryPidGetProc(int pid)
BackendType st_backendType
PgStat_PendingIO pending_io
PgStat_WalCounters wal_counters
PgStat_Counter times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]
uint64 bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]
PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]
PgStatShared_Common * shared_stats
PgStat_Counter counts[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]
uint64 bytes[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]
instr_time pending_times[IOOBJECT_NUM_TYPES][IOCONTEXT_NUM_TYPES][IOOP_NUM_TYPES]