On Fri, Jul 13, 2018 at 04:57:59PM -0500, Robert Haas wrote: > On Mon, Jul 9, 2018 at 4:41 PM, Michael Paquier <mich...@paquier.xyz> 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