Understanding the Linux “D” (Uninterruptible Sleep) Process State
The article explains the meaning of a process being in the “D” state on Linux, describing it as an uninterruptible sleep caused by blocked I/O, how to identify it with tools like ps or top, why it cannot be killed, and common troubleshooting steps.
In Linux, the letter “D” in a process’s status indicates an uninterruptible sleep, originally called “Disk Sleep” because it described processes waiting for disk I/O. Over time the definition expanded to cover any I/O or resource wait that cannot be interrupted.
When a process is in this state it will not respond to signals such as SIGKILL; the kernel will only wake it once the pending I/O operation completes. Short‑lived D states are normal during file or network access, but a prolonged D state usually signals a problem with the underlying resource, such as a failing hard drive, a network outage, or a lock held by another process.
To check whether a process is in D state, use ps aux or top and look for a “D” in the STAT column. If you see a process stuck in D for an extended period, investigate the resource it is waiting on.
Typical troubleshooting tools include dstat for real‑time I/O and CPU monitoring, iotop to identify which process is consuming I/O, strace or lsof to see what files or sockets the process has opened, and kernel logs via dmesg or journalctl for hardware‑related errors.
Since a D‑state process cannot be killed, the usual remedies are to fix the underlying hardware or software issue (e.g., replace a faulty disk, restore network connectivity, release a lock) or, as a last resort, reboot the system.
Refining Core Development Skills
Fei has over 10 years of development experience at Tencent and Sogou. Through this account, he shares his deep insights on performance.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.