Package Details: rtapp 0.9-1

Git Clone URL: https://aur.archlinux.org/rtapp.git (read-only, click to copy)
Package Base: rtapp
Description: Realtime application thread priority tuning
Upstream URL: https://www.audio-linux.com
Keywords: audio realtime
Licenses: custom
Submitter: blackhole
Maintainer: blackhole
Last Packager: blackhole
Votes: 4
Popularity: 0.000000
First Submitted: 2015-01-24 15:45
Last Updated: 2019-11-16 15:59

Dependencies (5)

Required by (0)

Sources (1)

Pinned Comments

blackhole commented on 2018-09-02 10:57

Before running rtapp for the first time or after an upgrade, take a look at the config file located at /etc/rtapp/rtapp.conf and make sure the defaults are OK.

The old configuration file is saved automatically after an upgrade to /etc/rtapp/rtapp.conf.pacsave

To start rtapp or rtjail, you must first start the systemctl timer: systemctl start rtapp.timer systemctl start rtjail.timer

Then you can enable the service at boot: systemctl enable rtapp.timer systemctl enable rtail.timer

rtapp.timer will call rtapp.service in /usr/lib/systemd/system rtjail.timer will call rtjail.service in /usr/lib/systemd/system

rtapp will check the priority of audio applications every 60 seconds. rtjail will check the cpu assignemnt of audio applications every 60 seconds. If you wanto to change this please edit OnUnitActiveSec in /usr/lib/systemd/system/rtapp.timer or /usr/lib/systemd/system/rtjail.timer

RTAPP Rtapp will monitor every minute applications defined in APPLICATIONS and will give FIFO priority defined in MAX_PRIORITY It can be configured in 3 modes: manual: the applications priority will have the value set in MAX_PRIORITY manualdec: same as manual but the priority will decrease by one step from the first to the last application auto: the value will be a step (RTIRQ_PRIO_DECR) under the minimum value of priority set by rtirq (this value depends on the number of items in RTIRQ_NAME_LIST and the number of audio hardware connected to the same USB bus) autodec: same as auto but the priority will decrease by one step from the first to the last application

Example:


Here you can list the applications that you want to give realtime priority

APPLICATIONS="jackd mpd hqplayer hqplayerd RoonAppliance RoonBridge sox mediacenter24 networkaudiod deadbeef a2jmidid ardour-5.12.0 rosegarden audacity"

Maximum value MAX_PRIORITY for application priority

MAX_PRIORITY="90"

MODE="autodec"


For the variables RTIRQ_PRIO_DECR, RTIRQ_PRIO_HIGH, RTIRQ_PRIO_DECR, RTIRQ_NAME_LIST see rtirq documentatio and rtirq configuration file /etc/rtirq.conf

RTAPP is designed for working with rtirq enabled: systemctl enable rtirq

RTJAIL Rtjail will divide existing CPUs in 2 sets: one for system process, another for audio applications listed in the variable APPLICATIONS of /etc/rtapp/rtapp.conf

Your kernel line must have isolcpus parameter. Example for a 8 cores processor: isolcpus=2-7 (all cores isolated excluding 0 and 1) isolcpus=4 (only core number 4 isolated)

RTSTATUS rtstatus will show the status of irq and applications realtime priorities.

RTCARDS It is very useful for checking if your audio card is sharing IRQ with another device since it is showing the Vendor and Product names (cat /proc/interrupts instead would be useless because it will not show cards names)

RTTEST rttest will show the latency of your system using first only cyclictest (STANDARD TEST) and after both hackbench and cyclictest (STRESS TEST). The package rt-tests is a dependency. If the results of STANDARD TEST are much higher than the results of STRESS TEST and you have an Intel processor you could add a line like one of those reported below (load will incread from option 1 to 3):

1) intel_idle.max_cstate=0 2) intel_idle.max_cstate=0 processor.max_cstate=1 3) intel_idle.max_cstate=0 processor.max_cstate=1 idle=poll

to your kernel boot line Beware that in this case the CPU temperature will increase.

Latest Comments

« First ‹ Previous 1 2 3 Next › Last »

blackhole commented on 2016-09-28 06:19

Version 0.6.6 is out, with rtcheck fixed
Inside rtcheck there is a little stress test (it is not very stressing...). The simple code is

echo "
STANDARD TEST"
cyclictest -l $loop -n -m -Sp98 -i100 -d0

echo "
STRESS TEST"
hackbench -l $loop &
cyclictest -l $loop -n -m -Sp98 -i100 -d0

You can interpret the results like this:
1) STRESS TEST more or less equal to STANDARD TEST --> your system is fine.
2) STRESS TEST give much higher numbers than STANDARD TEST --> your processor is inadequate
3) STRESS TEST give much lower numbers than STANDARD TEST --> your processor latency is not good in normal use, you can fix this adding for example intel_idle.max_cstate=0 to the Grub or Syslinux kernel line etc.

This has been conceived for testing using at the same time some "extreme" audio applications (see hqplayer) with real time upsampling from PCM to DSD (up to DSD512)


jrdnjhntn commented on 2016-09-27 23:44

I just thought that I would point out the your rtcheck program doesn't detect the presence of PREEMPT_RT properly;

--> Is your kernel realtime?

kernel name: 4.6.7-rt13-3-rt_plus
*** This is not a realtime kernel

$ uname -a
Linux nine7x 4.6.7-rt13-3-rt_plus #1 SMP PREEMPT RT Tue Sep 27 15:39:23 EDT 2016 x86_64 GNU/Linux
(...and kernel .config = CONFIG_PREEMPT_RT_FULL=y)

realtimeconfigquickscan (standard tool for checking a linux system for realtime audio)
perl ./realTimeConfigQuickScan.pl, result;
...
Kernel with Real-Time Preemption... found - good
...
I didn't even look at what your code does to detect a realtime kernel, but it doesn't seem to work correctly.. 0_o
---
***EDIT: I see/looked at your script. It just searches to see if it ends in rt.

if [[ $kernel_name == *rt ]]; then
echo "This is a realtime kernel"

...ya, i think that is a pretty bad/lazy check. the realtimeconfigquickscan script actually checks the kernel config for PREEMPT_RT_FULL=y ... which, imho, is the proper way to check.
---
I'm also curious about the 'stress test' of rttest; hackbench aside, I'm not really sure how effective it is as a legit 'stress-test', unless I am missing something here. could you explain? ...

I think that while you DO need some cpu load, you also probably need to simulate some actual (potential) interruptions in order to see how they affect your max: latency numbers - to be meaningful. (maybe your script also shouldn't exit either, until it prints the final results).

blackhole commented on 2015-06-17 20:35

License changed to custom

blackhole commented on 2015-02-24 12:54

0.6.2
rtstatus: corrected bug showing error when no internal audio cards
rtmonitorirq: usage has changed, now you can simply call rtmonitorirq without parameter.

blackhole commented on 2015-02-24 12:52

0.6.2
rtstatus: corrected bug showing error when no internal audio cards

blackhole commented on 2015-02-23 16:13

0.6.2
added for convenience some .desktop files for launching the scripts

blackhole commented on 2015-02-17 10:08

0.6.1
RTMONITORIRQ
Now supports whatever number of processor cores
RTAPP
added manualdec option
manualdec: same as manual but the priority will decrease by one step from the first to the last application

blackhole commented on 2015-02-15 21:37

0.6
Now rtstatus is more complete.
Added rtcheck, rttest, rtmonitorirq

RTMONITORIRQ

For checking the realtime utilization you can start rtmonitorirq.
Usage: rtmonitorirq <irq>
Example: rtmonitorirq 23
This will show the name of devices connected to the specified irq and the IRQs/Second parameter.
If the same irq of an audio device is used by another device you will see that IRQs/Second will be > 0 also when the audio card is disconnected.

RTTEST

rttest will show the latency of your system using first only with cyclictest (STANDARD TEST) and after with both hackbench and cyclictest (STRESS TEST). The package rt-tests is a dependency.
If the results of STANDARD TEST are much higher than the results of STRESS TEST and you have an Intel processor you could add a line like
intel_idle.max_cstate=0
to your Grub or Syslinux kernel line in configuration file.

RTCHECK

rtcheck will show some important information about your system:
1) Type of kernel (realtime or not)
2) rtc0 and hpet max user frequency
3) CPU scaling status
4) System latency
5) Audio group members
6) pam-limits
7) Realtime max priority and max memory allocation

blackhole commented on 2015-02-07 14:20

0.5.2
Added rtmonitoriq (you must install itop or itop-git)
Now rtstatus should show audio cards addresses and names when there are multiple internal or firewire cards installed.
Little improvements on bash code.

blackhole commented on 2015-02-06 12:43

0.5.1
Little improvments on bash code.