Zombie Process Ratio
Calculate the ratio of zombie processes to total processes on a running system.
About Zombie Process Ratio
A zombie (state Z, shown as 'defunct' in some tools) is a process that has already exited but whose exit status hasn't yet been collected by its parent via wait()/waitpid() — it consumes a PID slot and a minimal task_struct, but no CPU or real memory. A brief zombie during normal fork/exit cycles is harmless and expected; a persistently high zombie ratio (this calculator flags above 5%) almost always indicates a parent process (often a custom daemon or script) that spawns children but never reaps them, which can eventually contribute to PID exhaustion even though each individual zombie is cheap.
Formula
Zombie ratio
zombie% = zombie_count / total_process_count × 100
- N_z
- zombie process count
- N_{total}
- total process count
Worked example
With the default values below, Zombie Process Ratio returns Zombie Process % of 3.64%. Change any input above and every figure here is recalculated in your browser.
Inputs used
- Zombie Process Count (state Z)minimum 0
- 8
- Total Process Countminimum 1
- 220
Results
- Zombie Process %
- 3.64%
- Status
- Watch — some zombies present; usually transient, but monitor if the ratio keeps climbing.
- Zombie Count
- 8
- Exceeds 5% Threshold?
- false
Step by step
- 1Values used
- 2Zombie ratio
- 3Zombie Process %= 3.64
- 4Status= Watch — some zombies present; usually transient, but monitor if the ratio keeps climbing.
- 5Zombie Count= 8
- 6Exceeds 5% Threshold?= No
Assumptions and limits
- The result is derived only from the 2 inputs listed above. Anything not among them is not part of the calculation.
- In particular, this calculator does not take inflation, tax, fees or charges or compounding frequency into account.
- Figures are rounded for display to 2 decimal places, so totals built from several rounded parts can differ slightly from the unrounded arithmetic.
How these calculators are built and tested is described on the Methodology page. If a figure looks wrong, please report it.
Frequently Asked Questions
Can I kill a zombie process directly?
No — SIGKILL has no effect on a zombie since it's already terminated and has no running code to signal; the only way to clear it is for its parent to call wait()/waitpid() (directly or indirectly, e.g. via the parent exiting, which causes init/PID 1 to adopt and reap it), or by killing the parent itself if it's the one failing to reap.
How do I find which parent process is creating zombies?
`ps -eo pid,ppid,stat,comm | grep ' Z'` (or similar) lists zombie PIDs along with their PPID (parent PID) — cross-reference that PPID against `ps -p <ppid>` to identify the offending parent process and investigate its child-handling/signal-handling code (commonly a missing or ignored SIGCHLD handler, or missing wait() calls).
Do zombie processes consume CPU or memory?
No meaningful amount — a zombie retains only its process table entry (PID, exit status, resource usage statistics for the parent to eventually collect) and consumes essentially no CPU and negligible memory. The real risk from an unbounded, growing zombie count is PID exhaustion, not resource consumption from the zombies themselves.
