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).

Related services

KVM VPS hosting

NVMe SSD and full root access, with Free Basic Managed Support.

Unmanaged dedicated servers

full root access and free IPMI KVM, with Free Basic Managed Support.

Linux server management

hardening, patching, monitoring and automation for Ubuntu, Debian, RHEL and AlmaLinux.

Was this answer helpful?

Still stuck? Open a ticket