mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Create and use wait events for read, write, and fsync operations.
Previous commits, notably53be0b1add
and6f3bd98ebf
, made it possible to see from pg_stat_activity when a backend was stuck waiting for another backend, but it's also fairly common for a backend to be stuck waiting for an I/O. Add wait events for those operations, too. Rushabh Lathia, with further hacking by me. Reviewed and tested by Michael Paquier, Amit Kapila, Rajkumar Raghuwanshi, and Rahila Syed. Discussion: http://postgr.es/m/CAGPqQf0LsYHXREPAZqYGVkDqHSyjf=KsD=k0GTVPAuzyThh-VQ@mail.gmail.com
This commit is contained in:
@ -723,6 +723,7 @@ typedef enum BackendState
|
||||
#define PG_WAIT_EXTENSION 0x07000000U
|
||||
#define PG_WAIT_IPC 0x08000000U
|
||||
#define PG_WAIT_TIMEOUT 0x09000000U
|
||||
#define PG_WAIT_IO 0x0A000000U
|
||||
|
||||
/* ----------
|
||||
* Wait Events - Activity
|
||||
@ -805,6 +806,83 @@ typedef enum
|
||||
WAIT_EVENT_RECOVERY_APPLY_DELAY
|
||||
} WaitEventTimeout;
|
||||
|
||||
/* ----------
|
||||
* Wait Events - IO
|
||||
*
|
||||
* Use this category when a process is waiting for a IO.
|
||||
* ----------
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
WAIT_EVENT_BUFFILE_READ,
|
||||
WAIT_EVENT_BUFFILE_WRITE,
|
||||
WAIT_EVENT_CONTROL_FILE_READ,
|
||||
WAIT_EVENT_CONTROL_FILE_SYNC,
|
||||
WAIT_EVENT_CONTROL_FILE_SYNC_UPDATE,
|
||||
WAIT_EVENT_CONTROL_FILE_WRITE,
|
||||
WAIT_EVENT_CONTROL_FILE_WRITE_UPDATE,
|
||||
WAIT_EVENT_COPY_FILE_READ,
|
||||
WAIT_EVENT_COPY_FILE_WRITE,
|
||||
WAIT_EVENT_DATA_FILE_EXTEND,
|
||||
WAIT_EVENT_DATA_FILE_FLUSH,
|
||||
WAIT_EVENT_DATA_FILE_IMMEDIATE_SYNC,
|
||||
WAIT_EVENT_DATA_FILE_PREFETCH,
|
||||
WAIT_EVENT_DATA_FILE_READ = PG_WAIT_IO,
|
||||
WAIT_EVENT_DATA_FILE_SYNC,
|
||||
WAIT_EVENT_DATA_FILE_TRUNCATE,
|
||||
WAIT_EVENT_DATA_FILE_WRITE,
|
||||
WAIT_EVENT_DSM_FILL_ZERO_WRITE,
|
||||
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ,
|
||||
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC,
|
||||
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE,
|
||||
WAIT_EVENT_LOCK_FILE_CREATE_READ,
|
||||
WAIT_EVENT_LOCK_FILE_CREATE_SYNC,
|
||||
WAIT_EVENT_LOCK_FILE_CREATE_WRITE,
|
||||
WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ,
|
||||
WAIT_EVENT_LOGICAL_REWRITE_CHECKPOINT_SYNC,
|
||||
WAIT_EVENT_LOGICAL_REWRITE_MAPPING_SYNC,
|
||||
WAIT_EVENT_LOGICAL_REWRITE_MAPPING_WRITE,
|
||||
WAIT_EVENT_LOGICAL_REWRITE_SYNC,
|
||||
WAIT_EVENT_LOGICAL_REWRITE_TRUNCATE,
|
||||
WAIT_EVENT_LOGICAL_REWRITE_WRITE,
|
||||
WAIT_EVENT_RELATION_MAP_READ,
|
||||
WAIT_EVENT_RELATION_MAP_SYNC,
|
||||
WAIT_EVENT_RELATION_MAP_WRITE,
|
||||
WAIT_EVENT_REORDER_BUFFER_READ,
|
||||
WAIT_EVENT_REORDER_BUFFER_WRITE,
|
||||
WAIT_EVENT_REORDER_LOGICAL_MAPPING_READ,
|
||||
WAIT_EVENT_REPLICATION_SLOT_READ,
|
||||
WAIT_EVENT_REPLICATION_SLOT_RESTORE_SYNC,
|
||||
WAIT_EVENT_REPLICATION_SLOT_SYNC,
|
||||
WAIT_EVENT_REPLICATION_SLOT_WRITE,
|
||||
WAIT_EVENT_SLRU_FLUSH_SYNC,
|
||||
WAIT_EVENT_SLRU_READ,
|
||||
WAIT_EVENT_SLRU_SYNC,
|
||||
WAIT_EVENT_SLRU_WRITE,
|
||||
WAIT_EVENT_SNAPBUILD_READ,
|
||||
WAIT_EVENT_SNAPBUILD_SYNC,
|
||||
WAIT_EVENT_SNAPBUILD_WRITE,
|
||||
WAIT_EVENT_TIMELINE_HISTORY_FILE_SYNC,
|
||||
WAIT_EVENT_TIMELINE_HISTORY_FILE_WRITE,
|
||||
WAIT_EVENT_TIMELINE_HISTORY_READ,
|
||||
WAIT_EVENT_TIMELINE_HISTORY_SYNC,
|
||||
WAIT_EVENT_TIMELINE_HISTORY_WRITE,
|
||||
WAIT_EVENT_TWOPHASE_FILE_READ,
|
||||
WAIT_EVENT_TWOPHASE_FILE_SYNC,
|
||||
WAIT_EVENT_TWOPHASE_FILE_WRITE,
|
||||
WAIT_EVENT_WALSENDER_TIMELINE_HISTORY_READ,
|
||||
WAIT_EVENT_WAL_BOOTSTRAP_SYNC,
|
||||
WAIT_EVENT_WAL_BOOTSTRAP_WRITE,
|
||||
WAIT_EVENT_WAL_COPY_READ,
|
||||
WAIT_EVENT_WAL_COPY_SYNC,
|
||||
WAIT_EVENT_WAL_COPY_WRITE,
|
||||
WAIT_EVENT_WAL_INIT_SYNC,
|
||||
WAIT_EVENT_WAL_INIT_WRITE,
|
||||
WAIT_EVENT_WAL_READ,
|
||||
WAIT_EVENT_WAL_SYNC_METHOD_ASSIGN,
|
||||
WAIT_EVENT_WAL_WRITE
|
||||
} WaitEventIO;
|
||||
|
||||
/* ----------
|
||||
* Command type for progress reporting purposes
|
||||
* ----------
|
||||
|
Reference in New Issue
Block a user