Package: rtkit (0.13-5.1 and others) describes trkit-daemon as:
RealtimeKit is a D-Bus system service that changes the scheduling policy of user processes/threads to SCHED_RR (i.e. realtime scheduling mode) on request. It is intended to be used as a secure mechanism to allow real-time scheduling to be used by normal user processes.
The control file is located at /usr/lib/systemd/system/rtkit-daemon.service. Additional configurations can be supplied via .conf files in /usr/lib/systemd/system/rtkit-daemon.service.d.
In Debian, logging for rtkit-daemon has not been specifically specified.
Based upon notes at Stop rtkit-daemon from spamming logs with "Supervising X threads of Y processes of Z users", the solution is simply to set the logging level.
mkdir /usr/lib/systemd/system/rtkit-daemon.service.d
cat > /usr/lib/systemd/system/rtkit-daemon.service.d/log.conf << EOF
[Service]
LogLevelMax=info
EOF
systemctl daemon-reload
systemctl restart rtkit-daemon.service
Since the message is of level debuginfo, logging level info should eliminate most of the spam.
Logging level is a numeric value based upon the following list:
- 0 or emergency, (highest priority messages)
- 1 or alert,
- 2 or critical,
- 3 or error,
- 4 or warning,
- 5 or notice,
- 6 or info
- 7 or debuginfo (lowest priority messages)
Note: if no loglevel is specified in whatever systemd service .conf file, the loglevel of the daemon defaults to 7, in other words allowing the highest level of verbosity (which confirms my earlier statement). More details can be founrd in systemd.exec — Execution environment configuration.
There is an outstanding bug in Debian.
The following output shows the log file as part of the startup:
# systemctl status rtkit-daemon
● rtkit-daemon.service - RealtimeKit Scheduling Policy Service
Loaded: loaded (/usr/lib/systemd/system/rtkit-daemon.service; disabled; preset: enabled)
Drop-In: /usr/lib/systemd/system/rtkit-daemon.service.d
└─log.conf
Active: active (running) since Sun 2025-06-08 09:57:04 MDT; 1min 57s ago
Invocation: 77ed25f00a764beaa4306d2c7b4051a7
Main PID: 150550 (rtkit-daemon)
Tasks: 3 (limit: 75845)
Memory: 516K (peak: 2.1M)
CPU: 10ms
CGroup: /system.slice/rtkit-daemon.service
└─150550 /usr/libexec/rtkit-daemon
rtkit: list threads it is "supervising"? suggests running the following script to check the service:
#!/bin/bash
# Get the list of processes managed by rtkit
processes=$(dbus-send \
--system \
--dest=org.freedesktop.RealtimeKit1 \
--print-reply /org/freedesktop/RealtimeKit1 org.freedesktop.RealtimeKit1.GetManagedProcesses \
| awk '/array/ {flag=1; next} flag')
# Loop through each process and extract the process ID and thread count
while read -r line; do
if [[ $line =~ uint32\ ([0-9]+) ]]; then
pid="${BASH_REMATCH[1]}"
elif [[ $line =~ uint32\ ([0-9]+) ]]; then
threads="${BASH_REMATCH[1]}"
echo "Process ID: $pid, Supervised Threads: $threads"
fi
done <<< "$processes"
This generates an uninformative:
root@here:~/scripts# sh rtkit_demo.sh
Error org.freedesktop.DBus.Error.UnknownMethod: Method "GetManagedProcesses" with signature "" on interface "org.freedesktop.RealtimeKit1" doesn't exist
rtkit_demo.sh: 8: Syntax error: "(" unexpected (expecting "then")
To unravel this, will need to follow the tutorial at A trip into dbus-send.