mirror of
https://github.com/postgres/postgres.git
synced 2025-07-26 01:22:12 +03:00
pgstat: split reporting/fetching of bgwriter and checkpointer stats.
These have been unrelated since bgwriter and checkpointer were split into two
processes in 806a2aee37
. As there several pending patches (shared memory
stats, extending the set of tracked IO / buffer statistics) that are made a
bit more awkward by the grouping, split them. Done separately to make
reviewing easier.
This does *not* change the contents of pg_stat_bgwriter or move fields out of
bgwriter/checkpointer stats that arguably do not belong in either. However
pgstat_fetch_global() was renamed and split into
pgstat_fetch_stat_checkpointer() and pgstat_fetch_stat_bgwriter().
Author: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/20210405092914.mmxqe7j56lsjfsej@alap3.anarazel.de
This commit is contained in:
@ -36,9 +36,6 @@
|
||||
|
||||
#define HAS_PGSTAT_PERMISSIONS(role) (is_member_of_role(GetUserId(), ROLE_PG_READ_ALL_STATS) || has_privs_of_role(GetUserId(), role))
|
||||
|
||||
/* Global bgwriter statistics, from bgwriter.c */
|
||||
extern PgStat_MsgBgWriter bgwriterStats;
|
||||
|
||||
Datum
|
||||
pg_stat_get_numscans(PG_FUNCTION_ARGS)
|
||||
{
|
||||
@ -1732,69 +1729,71 @@ pg_stat_get_db_sessions_killed(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->timed_checkpoints);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->timed_checkpoints);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->requested_checkpoints);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->requested_checkpoints);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_bgwriter_buf_written_checkpoints(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->buf_written_checkpoints);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->buf_written_checkpoints);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_bgwriter_buf_written_clean(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->buf_written_clean);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_bgwriter()->buf_written_clean);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_bgwriter_maxwritten_clean(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->maxwritten_clean);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_bgwriter()->maxwritten_clean);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_checkpoint_write_time(PG_FUNCTION_ARGS)
|
||||
{
|
||||
/* time is already in msec, just convert to double for presentation */
|
||||
PG_RETURN_FLOAT8((double) pgstat_fetch_global()->checkpoint_write_time);
|
||||
PG_RETURN_FLOAT8((double)
|
||||
pgstat_fetch_stat_checkpointer()->checkpoint_write_time);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_checkpoint_sync_time(PG_FUNCTION_ARGS)
|
||||
{
|
||||
/* time is already in msec, just convert to double for presentation */
|
||||
PG_RETURN_FLOAT8((double) pgstat_fetch_global()->checkpoint_sync_time);
|
||||
PG_RETURN_FLOAT8((double)
|
||||
pgstat_fetch_stat_checkpointer()->checkpoint_sync_time);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_bgwriter_stat_reset_time(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_TIMESTAMPTZ(pgstat_fetch_global()->stat_reset_timestamp);
|
||||
PG_RETURN_TIMESTAMPTZ(pgstat_fetch_stat_bgwriter()->stat_reset_timestamp);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_buf_written_backend(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->buf_written_backend);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->buf_written_backend);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_buf_fsync_backend(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->buf_fsync_backend);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_checkpointer()->buf_fsync_backend);
|
||||
}
|
||||
|
||||
Datum
|
||||
pg_stat_get_buf_alloc(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_INT64(pgstat_fetch_global()->buf_alloc);
|
||||
PG_RETURN_INT64(pgstat_fetch_stat_bgwriter()->buf_alloc);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user