Skip to content
Calcrivo

Daemon Count Calculator

Compare running vs. enabled systemd daemons and estimate per-daemon resource overhead.

Inputs

Estimated Total Daemon RSS (MB)

684.0

Running as % of Enabled

84.4%

Enabled but Not Running

7

Note

7 enabled daemons aren't currently running (may be one-shot/oneshot-type units, conditionally-started, or failed) — check with `systemctl list-units --all --state=inactive`.

Step by step

  1. Values used

    Enabled Daemons/Services = 45; Currently Running Daemons/Services = 38; Average RSS per Daemon (MB) = 18

  2. Estimated total daemon memory

    total_rss = running_daemons × avg_rss_per_daemon

  3. Estimated Total Daemon RSS (MB)

    = 684.0

  4. Running as % of Enabled

    = 84.4

  5. Enabled but Not Running

    = 7

  6. Note

    = 7 enabled daemons aren't currently running (may be one-shot/oneshot-type units, conditionally-started, or failed) — check with `systemctl list-units --all --state=inactive`.

How it works

'Enabled' (systemctl is-enabled) means a unit is configured to start automatically at boot; 'running' (systemctl is-active) means it's actually active right now — the two lists commonly diverge because of oneshot-type units (which run once and exit successfully, e.g. one-time setup tasks), condition-gated units (After=/ConditionPathExists= etc. that only start under specific circumstances), or units that failed to start. Estimating aggregate RSS across running daemons (average per-daemon footprint × running count) gives a rough baseline memory cost of 'always-on background services' separate from application workload memory, useful for right-sizing minimal-footprint systems or containers.

Formula

Estimated total daemon memory

total_rss = running_daemons × avg_rss_per_daemon

n_{run}
currently running daemon count
"\\bar{r}"
average RSS per daemon

Frequently Asked Questions

Why would a service be 'enabled' but not currently 'active'?

Common reasons: it's a oneshot-type unit that runs once at boot and legitimately exits (RemainAfterExit=no), it's gated by a condition that isn't currently satisfied, it depends on a socket/timer and is only activated on demand (socket or timer activation), or it crashed/failed to start and hit its restart limit — `systemctl status <unit>` shows the specific reason.

How do I list all enabled services on a system?

`systemctl list-unit-files --state=enabled` lists every unit file configured to start at boot, while `systemctl list-units --type=service --state=running` shows what's actually active right now — comparing the two surfaces exactly which enabled services aren't currently running.

Is reducing the number of enabled daemons a good way to save resources?

It can help on memory-constrained systems or minimal container/VM images, but weigh it against functionality lost — disabling something like a logging daemon or security agent saves a modest amount of RAM at the cost of losing its function. Profile actual per-daemon RSS via `systemd-cgtop` or `ps` before deciding which are worth disabling.

You might also need