On Fri, Jul 13, 2018 at 04:57:59PM -0500, Robert Haas wrote: > On Mon, Jul 9, 2018 at 4:41 PM, Michael Paquier <[email protected]> wrote: >> Another idea that I have here, is to rework the page for monitoring >> stats so as we create one sub-section for each system view, and also one >> for the table of wait events. For the wait events, we could then >> completely remove the first category column which has morerows and >> divide the section into on table per event category. > > +1 from me. I think I proposed that before.
Attached is a proof of concept of that. I have divided the "Viewing Statistics" section into a subset for each catalog, and each wait event type gains its sub-section as well. There is a bit more to do with the indentation and some xreflabels, but I think that this is enough to begin a discussion. Thoughts? -- Michael
diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml
index 0484cfa77a..ebb5ee3ba3 100644
--- a/doc/src/sgml/monitoring.sgml
+++ b/doc/src/sgml/monitoring.sgml
@@ -549,8 +549,9 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
into the kernel's handling of I/O.
</para>
-
- <table id="pg-stat-activity-view" xreflabel="pg_stat_activity">
+ <sect3 id="pg-stat-activity-view" xreflabel="pg_stat_activity">
+ <title>pg_stat_activity</title>
+ <table id="pg-stat-activity-table">
<title><structname>pg_stat_activity</structname> View</title>
<tgroup cols="3">
@@ -731,7 +732,7 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry><structfield>wait_event</structfield></entry>
<entry><type>text</type></entry>
<entry>Wait event name if backend is currently waiting, otherwise NULL.
- See <xref linkend="wait-event-table"/> for details.
+ See the set of wait events below for details.
</entry>
</row>
<row>
@@ -831,13 +832,14 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
</para>
</note>
- <table id="wait-event-table">
- <title><structname>wait_event</structname> Description</title>
+ <sect4 id="wait-event-lwlock" xreflabel="wait-event-lwlock">
+ <title>LWLock wait events</title>
+ <table id="wait-event-lwlock-table">
+ <title>LWLock <structname>wait_event</structname> Description</title>
- <tgroup cols="3">
+ <tgroup cols="2">
<thead>
<row>
- <entry>Wait Event Type</entry>
<entry>Wait Event Name</entry>
<entry>Description</entry>
</row>
@@ -845,7 +847,6 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<tbody>
<row>
- <entry morerows="64"><literal>LWLock</literal></entry>
<entry><literal>ShmemIndexLock</literal></entry>
<entry>Waiting to find or allocate space in shared memory.</entry>
</row>
@@ -1126,8 +1127,26 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry>Waiting to allocate or exchange a chunk of memory or update
counters during Parallel Hash plan execution.</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect4>
+
+ <sect4 id="wait-event-lock" xreflabel="wait-event-lock">
+ <title>Lock wait events</title>
+ <table id="wait-event-lock-table">
+ <title>Lock <structname>wait_event</structname> Description</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Wait Event Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
<row>
- <entry morerows="9"><literal>Lock</literal></entry>
<entry><literal>relation</literal></entry>
<entry>Waiting to acquire a lock on a relation.</entry>
</row>
@@ -1168,12 +1187,29 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry>Waiting to acquire an advisory user lock.</entry>
</row>
<row>
- <entry><literal>BufferPin</literal></entry>
<entry><literal>BufferPin</literal></entry>
<entry>Waiting to acquire a pin on a buffer.</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect4>
+
+ <sect4 id="wait-event-activity" xreflabel="wait-event-activity">
+ <title>Activity wait events</title>
+ <table id="wait-event-activity-table">
+ <title>Activity <structname>wait_event</structname> Description</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Wait Event Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
<row>
- <entry morerows="13"><literal>Activity</literal></entry>
<entry><literal>ArchiverMain</literal></entry>
<entry>Waiting in main loop of the archiver process.</entry>
</row>
@@ -1229,8 +1265,26 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry><literal>WalWriterMain</literal></entry>
<entry>Waiting in main loop of WAL writer process.</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect4>
+
+ <sect4 id="wait-event-client" xreflabel="wait-event-client">
+ <title>Client wait events</title>
+ <table id="wait-event-client-table">
+ <title>Client <structname>wait_event</structname> Description</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Wait Event Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
<row>
- <entry morerows="7"><literal>Client</literal></entry>
<entry><literal>ClientRead</literal></entry>
<entry>Waiting to read data from the client.</entry>
</row>
@@ -1263,12 +1317,29 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry>Waiting for any activity when processing replies from WAL receiver in WAL sender process.</entry>
</row>
<row>
- <entry><literal>Extension</literal></entry>
<entry><literal>Extension</literal></entry>
<entry>Waiting in an extension.</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect4>
+
+ <sect4 id="wait-event-ipc" xreflabel="wait-event-ipc">
+ <title>IPC wait events</title>
+ <table id="wait-event-ipc-table">
+ <title>IPC <structname>wait_event</structname> Description</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Wait Event Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
<row>
- <entry morerows="33"><literal>IPC</literal></entry>
<entry><literal>BgWorkerShutdown</literal></entry>
<entry>Waiting for background worker to shut down.</entry>
</row>
@@ -1404,8 +1475,25 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry><literal>SyncRep</literal></entry>
<entry>Waiting for confirmation from remote server during synchronous replication.</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect4>
+
+ <sect4 id="wait-event-timeout" xreflabel="wait-event-timeout">
+ <title>Timeout wait events</title>
+ <table id="wait-event-timeout-table">
+ <title>Timeout <structname>wait_event</structname> Description</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Wait Event Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
<row>
- <entry morerows="2"><literal>Timeout</literal></entry>
<entry><literal>BaseBackupThrottle</literal></entry>
<entry>Waiting during base backup when throttling activity.</entry>
</row>
@@ -1417,8 +1505,25 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry><literal>RecoveryApplyDelay</literal></entry>
<entry>Waiting to apply WAL at recovery because it is delayed.</entry>
</row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect4>
+
+ <sect4 id="wait-event-io" xreflabel="wait-event-io">
+ <title>IO wait events</title>
+ <table id="wait-event-io-table">
+ <title>IO <structname>wait_event</structname> Description</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Wait Event Name</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
<row>
- <entry morerows="66"><literal>IO</literal></entry>
<entry><literal>BufFileRead</literal></entry>
<entry>Waiting for a read from a buffered file.</entry>
</row>
@@ -1713,8 +1818,12 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
(2 rows)
</programlisting>
</para>
+ </sect4>
+ </sect3>
- <table id="pg-stat-replication-view" xreflabel="pg_stat_replication">
+ <sect3 id="pg-stat-replication-view" xreflabel="pg_stat_replication">
+ <title>pg_stat_replication</title>
+ <table id="pg-stat-replication-table">
<title><structname>pg_stat_replication</structname> View</title>
<tgroup cols="3">
<thead>
@@ -1961,8 +2070,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
as missing data, zero or continue to display the last known value.
</para>
</note>
+ </sect3>
- <table id="pg-stat-wal-receiver-view" xreflabel="pg_stat_wal_receiver">
+ <sect3 id="pg-stat-wal-receiver-view" xreflabel="pg_stat_wal_receiver">
+ <title>pg_stat_wal_receiver</title>
+ <table id="pg-stat-wal-receiver-table">
<title><structname>pg_stat_wal_receiver</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2071,8 +2183,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
one row, showing statistics about the WAL receiver from that receiver's
connected server.
</para>
+ </sect3>
- <table id="pg-stat-subscription" xreflabel="pg_stat_subscription">
+ <sect3 id="pg-stat-subscription" xreflabel="pg_stat_subscription">
+ <title>pg_stat_subcription</title>
+ <table id="pg-stat-subscription-table">
<title><structname>pg_stat_subscription</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2144,8 +2259,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
not running), and additional rows for workers handling the initial data
copy of the subscribed tables.
</para>
+ </sect3>
- <table id="pg-stat-ssl-view" xreflabel="pg_stat_ssl">
+ <sect3 id="pg-stat-ssl-view" xreflabel="pg_stat_ssl">
+ <title>pg_stat_ssl</title>
+ <table id="pg-stat-ssl-table">
<title><structname>pg_stat_ssl</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2213,9 +2331,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
<structfield>pid</structfield> column to get more details about the
connection.
</para>
+ </sect3>
-
- <table id="pg-stat-archiver-view" xreflabel="pg_stat_archiver">
+ <sect3 id="pg-stat-archiver-view" xreflabel="pg_stat_archiver">
+ <title>pg_stat_archiver</title>
+ <table id="pg-stat-archiver-table">
<title><structname>pg_stat_archiver</structname> View</title>
<tgroup cols="3">
@@ -2271,8 +2391,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
The <structname>pg_stat_archiver</structname> view will always have a
single row, containing data about the archiver process of the cluster.
</para>
-
- <table id="pg-stat-bgwriter-view" xreflabel="pg_stat_bgwriter">
+ </sect3>
+
+ <sect3 id="pg-stat-bgwriter-view" xreflabel="pg_stat_bgwriter">
+ <title>pg_stat_bgwriter</title>
+ <table id="pg-stat-bgwriter-table">
<title><structname>pg_stat_bgwriter</structname> View</title>
<tgroup cols="3">
@@ -2358,8 +2481,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
The <structname>pg_stat_bgwriter</structname> view will always have a
single row, containing global data for the cluster.
</para>
+ </sect3>
- <table id="pg-stat-database-view" xreflabel="pg_stat_database">
+ <sect3 id="pg-stat-database-view" xreflabel="pg_stat_database">
+ <title>pg_stat_database</title>
+ <table id="pg-stat-database-table">
<title><structname>pg_stat_database</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2495,8 +2621,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
The <structname>pg_stat_database</structname> view will contain one row
for each database in the cluster, showing database-wide statistics.
</para>
+ </sect3>
- <table id="pg-stat-database-conflicts-view" xreflabel="pg_stat_database_conflicts">
+ <sect3 id="pg-stat-database-conflicts-view" xreflabel="pg_stat_database_conflicts">
+ <title>pg_stat_database_conflicts</title>
+ <table id="pg-stat-database-conflicts-table">
<title><structname>pg_stat_database_conflicts</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2559,8 +2688,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
This view will only contain information on standby servers, since
conflicts do not occur on master servers.
</para>
+ </sect3>
- <table id="pg-stat-all-tables-view" xreflabel="pg_stat_all_tables">
+ <sect3 id="pg-stat-all-tables-view" xreflabel="pg_stat_all_tables">
+ <title>pg_stat_all_tables</title>
+ <table id="pg-stat-all-tables-table">
<title><structname>pg_stat_all_tables</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2702,8 +2834,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
contain the same information,
but filtered to only show user and system tables respectively.
</para>
+ </sect3>
- <table id="pg-stat-all-indexes-view" xreflabel="pg_stat_all_indexes">
+ <sect3 id="pg-stat-all-indexes-view" xreflabel="pg_stat_all_indexes">
+ <title>pg_stat_all_indexes</title>
+ <table id="pg-stat-all-indexes-table">
<title><structname>pg_stat_all_indexes</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2798,8 +2933,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
heap fetches are avoided by means of an index-only scan.
</para>
</note>
+ </sect3>
- <table id="pg-statio-all-tables-view" xreflabel="pg_statio_all_tables">
+ <sect3 id="pg-statio-all-tables-view" xreflabel="pg_statio_all_tables">
+ <title>pg_statio_all_tables</title>
+ <table id="pg-statio-all-tables-table">
<title><structname>pg_statio_all_tables</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2879,8 +3017,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
contain the same information,
but filtered to only show user and system tables respectively.
</para>
+ </sect3>
- <table id="pg-statio-all-indexes-view" xreflabel="pg_statio_all_indexes">
+ <sect3 id="pg-statio-all-indexes-view" xreflabel="pg_statio_all_indexes">
+ <title>pg_statio_all_indexes</title>
+ <table id="pg-statio-all-indexes-table">
<title><structname>pg_statio_all_indexes</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2940,8 +3081,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
contain the same information,
but filtered to only show user and system indexes respectively.
</para>
+ </sect3>
- <table id="pg-statio-all-sequences-view" xreflabel="pg_statio_all_sequences">
+ <sect3 id="pg-statio-all-sequences-view" xreflabel="pg_statio_all_sequences">
+ <title>pg_statio_all_sequences</title>
+ <table id="pg-statio-all-sequences-table">
<title><structname>pg_statio_all_sequences</structname> View</title>
<tgroup cols="3">
<thead>
@@ -2987,8 +3131,11 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
one row for each sequence in the current database,
showing statistics about I/O on that specific sequence.
</para>
+ </sect3>
- <table id="pg-stat-user-functions-view" xreflabel="pg_stat_user_functions">
+ <sect3 id="pg-stat-user-functions-view" xreflabel="pg_stat_user_functions">
+ <title>pg_stat_user_functions</title>
+ <table id="pg-stat-user-functions-table">
<title><structname>pg_stat_user_functions</structname> View</title>
<tgroup cols="3">
<thead>
@@ -3042,6 +3189,7 @@ SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event i
that function. The <xref linkend="guc-track-functions"/> parameter
controls exactly which functions are tracked.
</para>
+ </sect3>
</sect2>
@@ -3259,7 +3407,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
<entry><literal><function>pg_stat_get_backend_wait_event_type(integer)</function></literal></entry>
<entry><type>text</type></entry>
<entry>Wait event type name if backend is currently waiting, otherwise NULL.
- See <xref linkend="wait-event-table"/> for details.
+ See <xref linkend="wait-event-lwlock-table"/> for details.
</entry>
</row>
@@ -3267,7 +3415,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
<entry><literal><function>pg_stat_get_backend_wait_event(integer)</function></literal></entry>
<entry><type>text</type></entry>
<entry>Wait event name if backend is currently waiting, otherwise NULL.
- See <xref linkend="wait-event-table"/> for details.
+ See <xref linkend="wait-event-lwlock-table"/> for details.
</entry>
</row>
signature.asc
Description: PGP signature
