mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +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:
@@ -463,7 +463,9 @@ SendTimeLineHistory(TimeLineHistoryCmd *cmd)
|
||||
char rbuf[BLCKSZ];
|
||||
int nread;
|
||||
|
||||
pgstat_report_wait_start(WAIT_EVENT_WALSENDER_TIMELINE_HISTORY_READ);
|
||||
nread = read(fd, rbuf, sizeof(rbuf));
|
||||
pgstat_report_wait_end();
|
||||
if (nread <= 0)
|
||||
ereport(ERROR,
|
||||
(errcode_for_file_access(),
|
||||
@@ -2126,7 +2128,9 @@ retry:
|
||||
else
|
||||
segbytes = nbytes;
|
||||
|
||||
pgstat_report_wait_start(WAIT_EVENT_WAL_READ);
|
||||
readbytes = read(sendFile, p, segbytes);
|
||||
pgstat_report_wait_end();
|
||||
if (readbytes <= 0)
|
||||
{
|
||||
ereport(ERROR,
|
||||
|
Reference in New Issue
Block a user