Summary: | Jack modules showing real-time schedule warnings on load | ||
---|---|---|---|
Product: | PulseAudio | Reporter: | Sam P <dagofthedofg> |
Component: | modules | Assignee: | pulseaudio-bugs |
Status: | RESOLVED MOVED | QA Contact: | pulseaudio-bugs |
Severity: | normal | ||
Priority: | medium | CC: | lennart |
Version: | unspecified | ||
Hardware: | x86-64 (AMD64) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: |
pulseaudio --dump-conf
cat /proc/`pidof pulseaudio`/limits cat /proc/`pidof pulseaudio`/limits ~/.config/pulse/daemon.conf /etc/pulse/daemon.conf pulseaudio --dump-conf cat /proc/`pidof jackdbus`/limits cat /proc/`pidof pulseaudio`/limits |
Description
Sam P
2018-07-06 20:22:28 UTC
What do these two commands print? pulseaudio --dump-conf cat /proc/`pidof pulseaudio`/limits Please use the "Add an attachment" link rather than pasting long text to the comment field. It occurred to me that systemd might be restricting the rtprio limit, and indeed, it seems that when systemd is used, /etc/security/limits.conf doesn't have effect. I don't know how per-user and per-group limits are supposed to be configured with systemd - if you figure that out, please leave a comment here. I know it's possible to configure per-service limits in systemd, but that's not the same as per-user and per-group configuration. Created attachment 140830 [details]
pulseaudio --dump-conf
Created attachment 140831 [details]
cat /proc/`pidof pulseaudio`/limits
I stopped the systemd user service for pulseaudio using: $ systemctl --user stop pulse* and then ran pulseaudio manually via $ pulseaudio W: [pulseaudio] sink.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-sink.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-sink.c: JACK error >JackClient::AcquireSelfRealTime error< W: [pulseaudio] source.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-source.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-source.c: JACK error >JackClient::AcquireSelfRealTime error< I will attach a second output of the limits details of pulseaudio running outside of systemd. Created attachment 140832 [details]
cat /proc/`pidof pulseaudio`/limits
If you look you can see that regardless of whether it is being run from systemd, the max realtime priority still shows 9. I looked into this a bit more, and /etc/security/limits.conf shouldn't be completely ignored on most systems. The pam_limits PAM module should set the limits as appropriate when you log in. I would have expected that when your run pulseaudio from systemd, the limit would be set to 0 regardless, but apparently limits.conf is having effect also on user services started by systemd. PulseAudio will by default set the rtprio limit to 9, so you'll need to change that. If you put "rlimit-rtprio = 70" to ~/.config/pulse/daemon.conf, I believe the warnings will go away. Do you know why libjack is trying to set priority 15 for its thread? Is that what it does by default, or have you configured it yourself? Long time ago, PulseAudio's default rtprio limit was set so that it would work with jack, but if jack's default priority has been raised since then, then the default rtprio limit in PulseAudio should be raised as well. Created attachment 140833 [details]
~/.config/pulse/daemon.conf
Created attachment 140834 [details]
/etc/pulse/daemon.conf
I have had rlimit-rtprio = 15 in my /etc/pulse/daemon.conf for most of my testing. I updated to 70 and added a directive to .config/pulse/daemon.conf and tried starting pulse but the warnings still persist: $ pulseaudio W: [pulseaudio] sink.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-sink.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-sink.c: JACK error >JackClient::AcquireSelfRealTime error< W: [pulseaudio] source.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-source.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-source.c: JACK error >JackClient::AcquireSelfRealTime error< $ pulseaudio W: [pulseaudio] sink.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-sink.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-sink.c: JACK error >JackClient::AcquireSelfRealTime error< W: [pulseaudio] source.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-source.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-source.c: JACK error >JackClient::AcquireSelfRealTime error< I just run Jack with the default priority settings so I'm not sure if they've changed recently. Ah, I read the "pulseaudio --dump-conf" attachment sloppily. I didn't notice that the file was read from the very old configuration location, ~/.pulse, which is why editing ~/.config/pulse/daemon.conf didn't work. If ~/.pulse/daemon.conf exists, then neither ~/.config/pulse/daemon.conf nor /etc/pulse/daemon.conf are read. I recommend you to delete ~/.pulse. If there's something that should be saved, move those files to ~/.config/pulse. Then make sure that ~/.config/pulse/daemon.conf has high enough rlimit-rtprio. Created attachment 140836 [details]
pulseaudio --dump-conf
I have removed the .pulse directory and tried starting pulseaudio again outside of systemd but I'm getting the same error: $ pulseaudio W: [pulseaudio] sink.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-sink.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-sink.c: JACK error >JackClient::AcquireSelfRealTime error< W: [pulseaudio] source.c: Default and alternate sample rates are the same. W: [pulseaudio] module-jack-source.c: JACK error >Cannot use real-time scheduling (RR/15)(1: Operation not permitted)< W: [pulseaudio] module-jack-source.c: JACK error >JackClient::AcquireSelfRealTime error< Now the rlimit-rtprio option shouldn't any more be an issue. What does "cat /proc/`pidof pulseaudio`/limits" print now? Created attachment 140837 [details]
cat /proc/`pidof jackdbus`/limits
According to the attachment description you printed the jackdbus limits, but what does "cat /proc/`pidof pulseaudio`/limits" print? Created attachment 140854 [details]
cat /proc/`pidof pulseaudio`/limits
Thanks Tanu, here is the output but the issue still persists.
I'm out of ideas. According to the limits file the process has permission to use RT priority 15, so everything should be fine. -- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/292. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.