Create a distinct wait event for POSIX DSM allocation.

Previously we displayed "DSMFillZeroWrite" while in posix_fallocate(),
because we shared the same wait event for "mmap" and "posix" DSM types.
Let's introduce a new wait event "DSMAllocate", to be more accurate.

Reported-by: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/20220711174518.yldckniicknsxgzl%40awork3.anarazel.de
This commit is contained in:
Thomas Munro 2022-07-14 22:52:13 +12:00
parent 712704d353
commit 7bae3bbf62
4 changed files with 10 additions and 1 deletions

View File

@ -1296,6 +1296,11 @@ postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres: ser
<entry><literal>CopyFileWrite</literal></entry>
<entry>Waiting for a write during a file copy operation.</entry>
</row>
<row>
<entry><literal>DSMAllocate</literal></entry>
<entry>Waiting for a dynamic shared memory segment to be
allocated.</entry>
</row>
<row>
<entry><literal>DSMFillZeroWrite</literal></entry>
<entry>Waiting to fill a dynamic shared memory backing file with

View File

@ -364,7 +364,7 @@ dsm_impl_posix_resize(int fd, off_t size)
*/
PG_SETMASK(&BlockSig);
pgstat_report_wait_start(WAIT_EVENT_DSM_FILL_ZERO_WRITE);
pgstat_report_wait_start(WAIT_EVENT_DSM_ALLOCATE);
#if defined(HAVE_POSIX_FALLOCATE) && defined(__linux__)
/*
* On Linux, a shm_open fd is backed by a tmpfs file. If we were to use

View File

@ -585,6 +585,9 @@ pgstat_get_wait_io(WaitEventIO w)
case WAIT_EVENT_DATA_FILE_WRITE:
event_name = "DataFileWrite";
break;
case WAIT_EVENT_DSM_ALLOCATE:
event_name = "DSMAllocate";
break;
case WAIT_EVENT_DSM_FILL_ZERO_WRITE:
event_name = "DSMFillZeroWrite";
break;

View File

@ -178,6 +178,7 @@ typedef enum
WAIT_EVENT_DATA_FILE_SYNC,
WAIT_EVENT_DATA_FILE_TRUNCATE,
WAIT_EVENT_DATA_FILE_WRITE,
WAIT_EVENT_DSM_ALLOCATE,
WAIT_EVENT_DSM_FILL_ZERO_WRITE,
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ,
WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC,