(Republishing, or using this info in a commercial product/website, is prohibited without permission. All other uses are permitted. If in doubt, please ask.)
This wait type is when a thread is waiting while helping a background lazy writer thread and the system is under memory pressure with a heavy read and write workload. When a thread allocates memory, it comes from the buffer pool, and if the free list looks low, the thread will call a routine to help replenish the free list by writing dirty pages to disk or dropping clean pages from memory. If there are already a lot of outstanding writes, instead of issuing more writes, the thread instead waits and then loops.
(Books Online description: “Internal use only.”)
Questions/comments on this wait type? Click here to send Paul an email, especially if you have any information to add to this topic.
Added in SQL Server version:
Removed in SQL Server version:
Extended Events wait_type value:
The map_key value in sys.dm_xe_map_values is 1099 in 2016 RTM. After 2016 RTM, you must check the DMV to get the latest value as some map_key values have changed in later builds.
This is a normal wait type to see for threads in a system with memory pressure and heavy read and write workload. If this is a normal workload for your server, and it is already tuned for the best performance, I would filter this wait type out.
Known occurrences in SQL Server (list number matches call stack list):
- Helping the lazywriter, in this case while allocating memory for a new transaction object
- Helping the lazywriter, in this case while allocating memory for a new entry in the dirty page table after updating a record in a table
- Helping the lazywriter, in this case while allocating memory for space in the log pool while rolling back a transaction
And many other similar call stacks.
Abbreviated call stacks (list number matches known occurrences list):