Re: [Jack+Debian RT] Cannot create RT messagebuffer thread: Operation not permitted

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I solved my main problems, it was related to my X Session Manager (slim).

The problem was running, from an X Terminal:
chrt 70 echo foo
... gave some "failed to set pid 0's policy: Opération non permise" error.

The same command ran from a VT console (CTRL+ALT+F1) didn't show this error message.
I hence installed lightdm instead of slim and it solved the issue.

Other optimizations were made with:

/etc/sysctl.d/realtime.conf

dev.hpet.max-user-freq = 3072
fs.inotify.max_user_watches = 524288
kernel.hung_task_timeout_secs = 0
kernel.shmmax = 0x7fffffff
vm.swappiness = 10

And:

/etc/udev/rules.d/10-realtime.rules

KERNEL=="hpet", MODE="0660", GROUP="audio"
KERNEL=="rtc0", MODE="0660", GROUP="audio"

Now the result of the perl script looks much nicer:

./realTimeConfigQuickScan.pl
== GUI-enabled checks ==
Checking if you are root... no - good
Checking filesystem 'noatime' parameter... not found - warning
/boot does not have the 'noatime' parameter set
For more information, see http://wiki.linuxaudio.org/wiki/system_configuration#filesystems
Checking CPU Governors... CPU 0: 'performance' CPU 1: 'performance' - good
Checking swappiness... 10 - good
Checking for resource-intensive background processes... none found - good
Checking checking sysctl inotify max_user_watches... >= 524288 - good
Checking access to the high precision event timer... readable - good
Checking access to the real-time clock... readable - good
Checking whether you're in the 'audio' group... yes - good
Checking for multiple 'audio' groups... no - good
Checking the ability to prioritize processes with chrt... yes - good
Checking kernel support for high resolution timers... found - good
Kernel with Real-Time Preemption... found - good
Checking if kernel system timer is set to 1000 hz... not found - not good
Try setting CONFIG_HZ to 1000

Checking kernel support for tickless timer... not found - not good
Try enabling tickless timer support (CONFIG_NO_HZ)

== Other checks ==
Checking filesystem types... ok.
not found.
** Warning: no tmpfs partition mounted on /tmp
   For more information, see:
   - http://wiki.linuxaudio.org/wiki/system_configuration#tmpfs
   - http://lowlatency.linuxaudio.org
** Set $SOUND_CARD_IRQ to the IRQ of your soundcard to enable more checks.
   Find your sound card's IRQ by looking at '/proc/interrupts' and lspci.


I'm still experiencing Xruns however, and may have to dig further.

Regards,

01


Le 04/04/2014 15:32, 0 1 a écrit :
Hello,

I've been using a realtime kernel some time ago. I hadn't a very intensive use of it so I didn't even notice if its configuration was very right or wrong, it seemed fine, but I ended up uninstalling it and doing fine without.

As of now I'm running Debian Jessie, and lately I've been trying the latest kernel Debian from their repos (currently, from wheezy-backports).

However, JACK can't seem to get to work with realtime. Here is part of the log:



14:11:39.082 JACK démarre...
14:11:39.083 /usr/bin/jackd -r -dalsa -r44100 -p512 -n2 -D -Chw:Pro,0 -Phw:Pro,0
Cannot connect to server socket err = Aucun fichier ou dossier de ce type
Cannot connect to server request channel
jack server is not running or cannot be started
14:11:39.110 JACK a été démarrer avec le PID=3903.
Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
no message buffer overruns
Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
no message buffer overruns
Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property `GtkRange::activate-slider' of type `gboolean' from rc file value "((GString*) 0x1cb8c40)" of type `GString'
Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
no message buffer overruns
jackdmp 1.9.10




Here is the content of /etc/security/limits.d/audio.conf

# Provided by the jackd package.
#
# Changes to this file will be preserved.
#
# If you want to enable/disable realtime permissions, run
#
#    dpkg-reconfigure -p high jackd

@audio   -  rtprio     95
@audio   -  memlock    unlimited
#@audio   -  nice      -19

Note: the dpkg-reconfigure is "wrong" since in my case I use "jackd2".



Content of /etc/default/rtirq:
(...)
# IRQ thread service names
# (space separated list, from higher to lower priority).
RTIRQ_NAME_LIST="rtc snd usb i8042"

# Highest priority.
RTIRQ_PRIO_HIGH=90

# Priority decrease step.
RTIRQ_PRIO_DECR=5

# Lowest priority.
RTIRQ_PRIO_LOW=51

# Whether to reset all IRQ threads to SCHED_OTHER.
RTIRQ_RESET_ALL=0

# On kernel configurations that support it,
# which services should be NOT threaded
# (space separated list).
RTIRQ_NON_THREADED="rtc snd"

# Process names which will be forced to the
# highest realtime priority range (99-91)
# (space separated list, from highest to lower priority).
# RTIRQ_HIGH_LIST="timer"



Results of a few commands,

$ uname -a
Linux cacacomp 3.12-1-rt-amd64 #1 SMP PREEMPT RT Debian 3.12.9-1+rt1 (2014-02-20) x86_64 GNU/Linux


$ cat /boot/config-3.12-1-rt-amd64 | grep PREEMPT
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_RT_BASE=y
CONFIG_HAVE_PREEMPT_LAZY=y
CONFIG_PREEMPT_LAZY=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT__LL is not set
# CONFIG_PREEMPT_RTB is not set
CONFIG_PREEMPT_RT_FULL=y
CONFIG_PREEMPT_COUNT=y
CONFIG_DEBUG_PREEMPT=y
# CONFIG_PREEMPT_TRACER is not set



$ cat /boot/config-3.12-1-rt-amd64 | grep _RT_
CONFIG_RT_MUTEXES=y
CONFIG_PREEMPT_RT_BASE=y
CONFIG_PREEMPT_RT_FULL=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set



# lsusb
Bus 002 Device 003: ID 5986:0315 Acer, Inc
Bus 002 Device 004: ID 0763:2012 Midiman M-Audio Fast Track Pro
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

=> I have a M-Audio Fast Track Pro USB card.



# grep CONFIG_RT_GROUP_SCHED /boot/config-3.12-1-rt-amd64
#
(empty, this string isn't in my kernel config file)



I realize I didn't tick "realtime" in qjackctl, so I start it again but JACK log is the same:

15:12:46.782 JACK démarre...
15:12:46.783 /usr/bin/jackd -v -dalsa -r44100 -p512 -n2 -D -Chw:Pro,0 -Phw:Pro,0
Cannot connect to server socket err = Aucun fichier ou dossier de ce type
Cannot connect to server request channel
jack server is not running or cannot be started
15:12:46.797 JACK a été démarrer avec le PID=7290.
Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
no message buffer overruns
Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
no message buffer overruns
Cannot create RT messagebuffer thread: Operation not permitted (1)
Retrying messagebuffer thread without RT scheduling
Messagebuffer not realtime; consider enabling RT scheduling for user
no message buffer overruns
jackdmp 1.9.10
...

There are very few references of this specific error message I found on the web, but none seem to be related with my case.



# service rtirq status

  PID CLS RTPRIO  NI PRI %CPU STAT COMMAND
   45 FF      90   - 130  0.0 S    irq/8-rtc0
  556 FF      85   - 125  0.0 S    irq/43-snd_hda_
  429 FF      80   - 120  0.0 S    irq/16-ehci_hcd
  430 FF      79   - 119  5.3 S    irq/23-ehci_hcd
   44 FF      75   - 115  0.0 S    irq/1-i8042
   43 FF      74   - 114  0.6 S    irq/12-i8042
   30 FF      50   -  90  0.0 S    irq/9-acpi
  128 FF      50   -  90  0.0 S    irq/40-ahci
  424 FF      50   -  90  0.0 S    irq/41-mei_me
  431 FF      50   -  90  0.0 S    irq/16-mmc0
  456 FF      50   -  90  0.6 S    irq/18-rtl_pci
  499 FF      50   -  90  0.0 S    irq/16-jmb38x_m
  522 FF      50   -  90  0.0 S    irq/42-i915
 2675 FF      50   -  90  0.0 S    irq/44-eth0
    3 FF       1   -  41  0.0 S    ksoftirqd/0
   19 FF       1   -  41  0.0 S    ksoftirqd/1

$ ./realTimeConfigQuickScan.pl
== GUI-enabled checks ==
Checking if you are root... no - good
Checking filesystem 'noatime' parameter... not found - warning
/boot does not have the 'noatime' parameter set
For more information, see http://wiki.linuxaudio.org/wiki/system_configuration#filesystems Checking CPU Governors... CPU 0: 'powersave' CPU 1: 'powersave' - not good Set CPU Governors to 'performance' with 'cpufreq-set -c <cpunr> -g performance'
See also: http://linuxmusicians.com/viewtopic.php?f=27&t=844
Checking swappiness... 60 - not good
** vm.swappiness is larger than 10
set it with '/sbin/sysctl -w vm.swappiness=10'
See also: http://linuxmusicians.com/viewtopic.php?f=27&t=452&start=30#p8916
Checking for resource-intensive background processes... none found - good
Checking checking sysctl inotify max_user_watches... < 524288 - not good
increase max_user_watches by adding 'fs.inotify.max_user_watches = 524288' to /etc/sysctl.conf and rebooting For more information, see http://wiki.linuxaudio.org/wiki/system_configuration#sysctlconf
Checking access to the high precision event timer... readable - good
Checking access to the real-time clock... readable - good
Checking whether you're in the 'audio' group... yes - good
Checking for multiple 'audio' groups... no - good
chrt: failed to set pid 0's policy: Opération non permise
Checking the ability to prioritize processes with chrt... no - not good
Could not assign a 80 rtprio value. Set up limits.conf.
For more information, see http://wiki.linuxaudio.org/wiki/system_configuration#limitsconfaudioconf
Checking kernel support for high resolution timers... found - good
Kernel with Real-Time Preemption... found - good
Checking if kernel system timer is set to 1000 hz... not found - not good
Try setting CONFIG_HZ to 1000

Checking kernel support for tickless timer... not found - not good
Try enabling tickless timer support (CONFIG_NO_HZ)

== Other checks ==
Checking filesystem types... ok.
not found.
** Warning: no tmpfs partition mounted on /tmp
   For more information, see:
   - http://wiki.linuxaudio.org/wiki/system_configuration#tmpfs
   - http://lowlatency.linuxaudio.org
** Set $SOUND_CARD_IRQ to the IRQ of your soundcard to enable more checks.
   Find your sound card's IRQ by looking at '/proc/interrupts' and lspci.





So, I'd like to know what prevents Jack from getting RT priorities.
And that's about all. I'm stuck. Hope you guys see where is the problem more than I do and can point my to some direction.

Regards,

01

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@xxxxxxxxxxxxxxxxxxxx
http://lists.linuxaudio.org/listinfo/linux-audio-user





[Index of Archives]     [Linux Sound]     [ALSA Users]     [Pulse Audio]     [ALSA Devel]     [Sox Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux