LAZYWRITER_SLEEP Wait Type in SQL Server

LAZYWRITER_SLEEP is recorded by the lazy writer thread while it sleeps between checks of the buffer pool free list. Roughly once a second it wakes, checks whether memory pressure requires freeing buffers, does whatever little work exists, and goes back to sleep. Each sleeping second lands in this wait, per lazy writer thread (large NUMA machines run one per node).

Books Online itself says not to consider this wait when looking for user stalls, and that advice has aged well.

Is It a Problem?

No. It is the canonical benign wait, cited in every “waits to filter out” list for good reason: it measures a background thread’s scheduled naps, accumulating at close to one second per second per thread. Its size carries no signal about memory health in either direction.

Actual buffer pool pressure is measured elsewhere: page life expectancy trends, free list stalls, and how hard the lazy writer is working (Lazy writes/sec in the Buffer Manager counters) when it is awake.

Common Causes

  • The instance being up; the lazy writer always exists and mostly sleeps.
  • Multiple NUMA nodes multiplying the sleeping threads.

What To Do

  1. Filter it out; our Get-WaitStatistics script excludes it by default.
  2. For memory pressure questions, use Lazy writes/sec, page life expectancy, and free list stalls; the sleep time between checks is irrelevant.
  3. Change nothing on the basis of this wait.

How To See It

Rank waits with Get-WaitStatistics; it is filtered as noise. In raw DMV output it sits near the top of every long-running instance, meaning nothing.


Part of the SQL Server Wait Types Library.
Related deep dive: PAGEIOLATCH_SH Wait Type.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *