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 user rtkit.
  • 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.service tells D-Bus to start rtkit-daemon.service when 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 with LogLevelMax=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 by Demoting 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

  1. Show the service: systemctl status rtkit-daemon
  2. 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
  3. Read the result. On AlmaLinux 10, dnf repoquery lists only pipewire, which requires rtkit. On Debian 13 and Ubuntu 26.04, pipewire-bin and pulseaudio only recommend it. On our minimal AlmaLinux server, rpm -q --whatrequires rtkit answered no 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:

  1. Run sudo systemctl edit rtkit-daemon and add:
    [Service]
    LogLevelMax=info
    info drops the debug "Supervising" lines; notice also drops the "Successfully made thread" lines and keeps warnings such as the canary message.
  2. Restart it: sudo systemctl restart rtkit-daemon
  3. Check the setting: systemctl show rtkit-daemon -p LogLevelMax (LogLevelMax=5 means 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).

Ucartz services for this topic

Was this answer helpful? 9 Users Found This Useful (9 Votes)