Ask Your Question

How to start jackd with realtime scheduling under Fedora 21?

asked 2015-01-02 21:15:44 -0600

larsks gravatar image

I amt trying to use Ardour (via the ardour3 package) under Fedora 21. Ardour relies on the Jack Audio Connection Kit (henceforth "jack"), but jack is unable to start with realtime scheduling. When started, jack logs the following:

Cannot use real-time scheduling (RR/20)(1: Operation not permitted)
AcquireSelfRealTime error

And Ardour refuses to create a new session.

I have read through /usr/share/doc/jack-audio-connection-kit/README.Fedora. My user is a member of the "jackuser" and "audio" groups:

$ groups
lars wheel audio mock virt jackuser docker

There are limits set in /etc/security/limits.d/95-jack.conf:

@jackuser - rtprio 99
@jackuser - memlock 4194304

And they are active:

$ ulimit -r
$ ulimit -l

SELinux is enabled, but is running in permissive mode:

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      29

I have come across posts from many other people who have experienced the same problem, but no solutions or suggestions other than those already mentioned here (e.g., "make sure your use us a member of the jackuser group"). I'm hoping someone here can shed more light on things.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-01-03 07:34:02 -0600

By default, systemd puts users into a CPU cgroup, which doesn't allow realtime scheduling. I suspect you'd need to put resource control into a systemd.slice configuration file for your user, such as something described in the first link, like ControlGroup=cpu:/.

edit flag offensive delete link more


(As we discussed on IRC) That's a good suggestion, but it turns out that the ControlGroup directive was removed in systemd 205, and Fedora 21 ships with systemd 216. The best solution I've found so far is to set JoinControllers= in /etc/systemd/system.conf, which is an awfully big hammer just to get one application to run.

larsks gravatar imagelarsks ( 2015-01-03 20:35:51 -0600 )edit

Same system situation, though i have selinux enforced (does it matter?) Also this second suggestion (JoinControllers=) is not working for me... (using fedora fc22, systemd 219)

noudio gravatar imagenoudio ( 2017-10-01 08:29:47 -0600 )edit

Question Tools



Asked: 2015-01-02 21:15:44 -0600

Seen: 1,972 times

Last updated: Jan 03 '15