Updated: 12 October 2026 · Applies to: rtkit 0.11 on AlmaLinux 10.2, rtkit 0.13 on Debian 13 and rtkit 0.14 on Ubuntu 26.04 (tested in containers); the commands are the same on Rocky Linux, RHEL and Ubuntu 24.04
rtkit (RealtimeKit, the rtkit-daemon service) is a small system service that lets normal user programs, mainly audio software such as PipeWire and PulseAudio, give some of their threads real-time or higher priority within safe limits. On a desktop it helps sound play smoothly. On a server without audio it has nothing to do: you can turn it off with sudo systemctl mask --now rtkit-daemon.service.
What rtkit does
- Programs ask rtkit over D-Bus (the name
org.freedesktop.RealtimeKit1) for real-time scheduling or a lower nice level for one of their threads. rtkit itself runs as the userrtkit. - It enforces limits. According to
rtkit-daemon --help, the defaults are a real-time priority of at most 20, a nice level of at least -15, 15 processes and 25 threads per user, and clients must cap their CPU time with RLIMIT_RTTIME (200000 microseconds). - A watchdog (the "canary") checks that real-time threads do not starve the system. If they do, rtkit takes their real-time priority away again.
- It starts on demand: the file
/usr/share/dbus-1/system-services/org.freedesktop.RealtimeKit1.servicetells D-Bus to startrtkit-daemon.servicewhen a program asks for it.
rtkit log messages
These message texts come from the rtkit program itself (shortened):
Supervising N threads of N processes of N users.: a status line, logged at debug level. It is harmless. The service file on Debian and Ubuntu does not filter it, so it can show up in the journal; the AlmaLinux 10 service file drops it withLogLevelMax=info.Successfully made thread ... RT at priority ...or... high priority at nice level ...: a program (usually PipeWire or PulseAudio) got what it asked for.The canary thread is apparently starving. Taking action.followed byDemoting known real-time threads.: a real-time thread used too much CPU, and rtkit demoted it.cap_set_proc() failed: Operation not permitted: rtkit lacks the privileges it needs. We saw this when we started it inside a container, where it cannot work; mask it there.
1. Check whether rtkit runs and what needs it
- Show the service:
systemctl status rtkit-daemon - Find what pulled it in:
rpm -q --whatrequires rtkit # AlmaLinux, Rocky Linux, RHEL (installed packages) dnf repoquery --whatrequires rtkit # all packages in the repositories apt-cache rdepends --installed rtkit # Ubuntu, Debian
- Read the result. On AlmaLinux 10,
dnf repoquerylists onlypipewire, which requires rtkit. On Debian 13 and Ubuntu 26.04,pipewire-binandpulseaudioonly recommend it. On our minimal AlmaLinux server,rpm -q --whatrequires rtkitansweredno package requires rtkit: nothing on that server uses it.
2. Disable rtkit on a server
Stopping or disabling the service is not enough, because the next program that asks for it over D-Bus starts it again. Mask it, which blocks every start:
$ sudo systemctl mask --now rtkit-daemon.service Created symlink '/etc/systemd/system/rtkit-daemon.service' → '/dev/null'.
After that, both a manual start and a D-Bus start fail (output from AlmaLinux 10):
$ sudo systemctl start rtkit-daemon Failed to start rtkit-daemon.service: Unit rtkit-daemon.service is masked. $ rtkitctl --start Failed to send StartServiceByName request: Could not activate remote peer 'org.freedesktop.RealtimeKit1': activation request failed: unit is masked
To undo it: sudo systemctl unmask rtkit-daemon.service.
You can also remove the package if nothing needs it:
- Debian and Ubuntu:
sudo apt remove rtkit. In our simulation (apt-get remove -s rtkit) only rtkit itself was removed, because PipeWire and PulseAudio just recommend it. - AlmaLinux, Rocky Linux, RHEL:
sudo dnf remove rtkit. pipewire requires rtkit, so if PipeWire is installed, dnf removes it too. Read the list before you confirm; on our server without PipeWire, a dry run (dnf remove --assumeno rtkit) would have removed rtkit and 4 unused dependencies.
3. On a desktop: keep rtkit and quiet the log
PipeWire and PulseAudio use rtkit to get real-time priority for their audio threads; without it they run them at normal priority. So on a desktop or audio workstation keep it, and filter the messages instead:
- Run
sudo systemctl edit rtkit-daemonand add:[Service] LogLevelMax=info
infodrops the debug "Supervising" lines;noticealso drops the "Successfully made thread" lines and keeps warnings such as the canary message. - Restart it:
sudo systemctl restart rtkit-daemon - Check the setting:
systemctl show rtkit-daemon -p LogLevelMax(LogLevelMax=5means notice, 6 means info).
We checked the filter with a test service on AlmaLinux 10: with LogLevelMax=info its debug line was gone from the journal, with notice its info line was gone too, and warnings stayed. Read rtkit's own lines with journalctl -u rtkit-daemon; more journal filters are in the journalctl cheat sheet.
If real-time threads misbehave on a desktop, sudo rtkitctl --reset-known resets the real-time status of the threads rtkit knows about, and --reset-all does it for all threads.
Official documentation: rtkit on GitHub and systemctl manual (mask).