Skip to content

Commit

Permalink
Start working on v2.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
rjuju committed Sep 16, 2024
1 parent 20ee7d7 commit ce6fe38
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 1 deletion.
9 changes: 9 additions & 0 deletions pg_stat_kcache--2.2.3--2.3.0.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-- This program is open source, licensed under the PostgreSQL License.
-- For license terms, see the LICENSE file.
--
-- Copyright (c) 2014-2017, Dalibo
-- Copyright (c) 2018-2024, The PoWA-team

-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "ALTER EXTENSION pg_stat_kcache" to load this file. \quit

127 changes: 127 additions & 0 deletions pg_stat_kcache--2.3.0.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
-- This program is open source, licensed under the PostgreSQL License.
-- For license terms, see the LICENSE file.
--
-- Copyright (c) 2014-2017, Dalibo
-- Copyright (c) 2018-2024, The PoWA-team

-- complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION pg_stat_kcache" to load this file. \quit

SET client_encoding = 'UTF8';

CREATE FUNCTION pg_stat_kcache(
OUT queryid bigint,
OUT top bool,
OUT userid oid,
OUT dbid oid,
/* planning time */
OUT plan_reads bigint, /* total reads, in bytes */
OUT plan_writes bigint, /* total writes, in bytes */
OUT plan_user_time double precision, /* total user CPU time used */
OUT plan_system_time double precision, /* total system CPU time used */
OUT plan_minflts bigint, /* total page reclaims (soft page faults) */
OUT plan_majflts bigint, /* total page faults (hard page faults) */
OUT plan_nswaps bigint, /* total swaps */
OUT plan_msgsnds bigint, /* total IPC messages sent */
OUT plan_msgrcvs bigint, /* total IPC messages received */
OUT plan_nsignals bigint, /* total signals received */
OUT plan_nvcsws bigint, /* total voluntary context switches */
OUT plan_nivcsws bigint, /* total involuntary context switches */
/* execution time */
OUT exec_reads bigint, /* total reads, in bytes */
OUT exec_writes bigint, /* total writes, in bytes */
OUT exec_user_time double precision, /* total user CPU time used */
OUT exec_system_time double precision, /* total system CPU time used */
OUT exec_minflts bigint, /* total page reclaims (soft page faults) */
OUT exec_majflts bigint, /* total page faults (hard page faults) */
OUT exec_nswaps bigint, /* total swaps */
OUT exec_msgsnds bigint, /* total IPC messages sent */
OUT exec_msgrcvs bigint, /* total IPC messages received */
OUT exec_nsignals bigint, /* total signals received */
OUT exec_nvcsws bigint, /* total voluntary context switches */
OUT exec_nivcsws bigint /* total involuntary context switches */
)
RETURNS SETOF record
LANGUAGE c COST 1000
AS '$libdir/pg_stat_kcache', 'pg_stat_kcache_2_2';
GRANT ALL ON FUNCTION pg_stat_kcache() TO public;

CREATE FUNCTION pg_stat_kcache_reset()
RETURNS void
LANGUAGE c COST 1000
AS '$libdir/pg_stat_kcache', 'pg_stat_kcache_reset';
REVOKE ALL ON FUNCTION pg_stat_kcache_reset() FROM public;

CREATE VIEW pg_stat_kcache_detail AS
SELECT s.query, k.top, d.datname, r.rolname,
k.plan_user_time,
k.plan_system_time,
k.plan_minflts,
k.plan_majflts,
k.plan_nswaps,
k.plan_reads AS plan_reads,
k.plan_reads/(current_setting('block_size')::integer) AS plan_reads_blks,
k.plan_writes AS plan_writes,
k.plan_writes/(current_setting('block_size')::integer) AS plan_writes_blks,
k.plan_msgsnds,
k.plan_msgrcvs,
k.plan_nsignals,
k.plan_nvcsws,
k.plan_nivcsws,
k.exec_user_time,
k.exec_system_time,
k.exec_minflts,
k.exec_majflts,
k.exec_nswaps,
k.exec_reads AS exec_reads,
k.exec_reads/(current_setting('block_size')::integer) AS exec_reads_blks,
k.exec_writes AS exec_writes,
k.exec_writes/(current_setting('block_size')::integer) AS exec_writes_blks,
k.exec_msgsnds,
k.exec_msgrcvs,
k.exec_nsignals,
k.exec_nvcsws,
k.exec_nivcsws
FROM pg_stat_kcache() k
JOIN pg_stat_statements s
ON k.queryid = s.queryid AND k.dbid = s.dbid AND k.userid = s.userid
JOIN pg_database d
ON d.oid = s.dbid
JOIN pg_roles r
ON r.oid = s.userid;
GRANT SELECT ON pg_stat_kcache_detail TO public;

CREATE VIEW pg_stat_kcache AS
SELECT datname,
SUM(plan_user_time) AS plan_user_time,
SUM(plan_system_time) AS plan_system_time,
SUM(plan_minflts) AS plan_minflts,
SUM(plan_majflts) AS plan_majflts,
SUM(plan_nswaps) AS plan_nswaps,
SUM(plan_reads) AS plan_reads,
SUM(plan_reads_blks) AS plan_reads_blks,
SUM(plan_writes) AS plan_writes,
SUM(plan_writes_blks) AS plan_writes_blks,
SUM(plan_msgsnds) AS plan_msgsnds,
SUM(plan_msgrcvs) AS plan_msgrcvs,
SUM(plan_nsignals) AS plan_nsignals,
SUM(plan_nvcsws) AS plan_nvcsws,
SUM(plan_nivcsws) AS plan_nivcsws,
SUM(exec_user_time) AS exec_user_time,
SUM(exec_system_time) AS exec_system_time,
SUM(exec_minflts) AS exec_minflts,
SUM(exec_majflts) AS exec_majflts,
SUM(exec_nswaps) AS exec_nswaps,
SUM(exec_reads) AS exec_reads,
SUM(exec_reads_blks) AS exec_reads_blks,
SUM(exec_writes) AS exec_writes,
SUM(exec_writes_blks) AS exec_writes_blks,
SUM(exec_msgsnds) AS exec_msgsnds,
SUM(exec_msgrcvs) AS exec_msgrcvs,
SUM(exec_nsignals) AS exec_nsignals,
SUM(exec_nvcsws) AS exec_nvcsws,
SUM(exec_nivcsws) AS exec_nivcsws
FROM pg_stat_kcache_detail
WHERE top IS TRUE
GROUP BY datname;
GRANT SELECT ON pg_stat_kcache TO public;
2 changes: 1 addition & 1 deletion pg_stat_kcache.control
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# pg_stat_kcache extension
comment = 'Kernel statistics gathering'
default_version = '2.2.3'
default_version = '2.3.0'
requires = 'pg_stat_statements'
module_pathname = '$libdir/pg_stat_kcache'
relocatable = true

0 comments on commit ce6fe38

Please sign in to comment.