Part of the SQL Server Wait Types Library.
Related deep dive: PAGEIOLATCH_SH Wait Type.
PAGEIOLATCH_UP is a wait for an update-mode latch on a page that is currently in an I/O request, usually a thread reading a non-table page (typically an allocation bitmap like PFS, GAM, or SGAM) from disk so it can modify the page structure once it arrives in memory. It can also cover the synchronous write of certain special pages, redo on a mirror, and checkpoint retry paths.
The split matters: PAGELATCH_UP is fighting over a page already in memory; PAGEIOLATCH_UP includes a disk trip. The IO in the name always means storage is involved.
Is It a Problem?
Judge it like the other PAGEIOLATCH_* waits: by average wait time. Averages in line with your storage latency (a few milliseconds on decent disks) just mean allocation pages occasionally get read from disk, which is normal after a restart or when the buffer pool is under pressure. Long averages mean the I/O subsystem is slow, and every wait in the PAGEIOLATCH family will be saying the same thing.
It is usually a small number next to PAGEIOLATCH_SH; allocation bitmaps are few and stay resident on busy systems.
Common Causes
- Cold cache after a restart or failover, pulling allocation pages in from disk.
- Buffer pool pressure evicting infrequently touched allocation pages between uses.
- Slow or overloaded storage stretching every page read, this wait included.
- Allocation-heavy bursts (bulk loads, restores) touching bitmaps across many files.
What To Do
- Check storage latency first:
sys.dm_io_virtual_file_statsread stalls per read, per file. If reads average tens of milliseconds, this is a storage problem, not an allocation problem. - Look at buffer pool health: page life expectancy trends and max server memory, since eviction pressure sends more reads to disk.
- If it clusters in tempdb alongside
PAGELATCH_UP, treat it as part of the tempdb allocation story and apply the multi-file guidance. - No query-level fix exists for this wait alone; it improves as storage and memory pressure improve.
How To See It
Rank it against everything else with Get-WaitStatistics, paying attention to avg_wait_ms, and read it together with the rest of the PAGEIOLATCH family.
Leave a Reply