View previous topic :: View next topic |
Author |
Message |
iphitus Apprentice
Joined: 03 Aug 2005 Posts: 226
|
Posted: Fri Nov 11, 2005 11:36 pm Post subject: |
|
|
indianiec wrote: | Quote: | There are other patchsets which provide the same things that morph does, such as archck, acid and nicus. |
But i guess only morph-sources has realtime-preempt with "Complete Preemption" option that is very usefull for musicians for egzample. |
Last time I checked full pre-emption was an option in the vanilla kernel. And if you really need Ingos -rt patchset, nicus and other patchsets inclue it. |
|
Back to top |
|
|
indianiec Tux's lil' helper
Joined: 01 Feb 2005 Posts: 97 Location: Krakow
|
Posted: Mon Nov 14, 2005 9:45 am Post subject: |
|
|
I realy don't think vanilla-sources, gentoo-sources or any patchset i know have this options:
Code: | CONFIG_PREEMPT_RT=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_SOFTIRQS=y
CONFIG_PREEMPT_HARDIRQS=y
CONFIG_PREEMPT_BKL=y
CONFIG_PREEMPT_RCU=y |
I don't know if nicus has it. But i have no idea where can i find nicus-sources; google does not know it too.
I will try ck-sources with self applied ingo's rt patch. ingo patch allow me to start jack-server without xruns (sound dropouts) at latency about 10 ms. Morph has it all, but it looks like dead project indeed.
i'm sorry for my english |
|
Back to top |
|
|
iphitus Apprentice
Joined: 03 Aug 2005 Posts: 226
|
Posted: Mon Nov 14, 2005 9:40 pm Post subject: |
|
|
Give archck a shot.
It's got staircase, realtime-lsm for jackd, and should run fine with it. |
|
Back to top |
|
|
indianiec Tux's lil' helper
Joined: 01 Feb 2005 Posts: 97 Location: Krakow
|
Posted: Tue Nov 15, 2005 12:13 pm Post subject: |
|
|
Staircase is in ck too, realtime-lsm is not problem because it is in portage, but archck has no molnar's RT.
I tried to patch gentoo and ck-sourses with RT but no luck. I could expext that. I didn't try to patch vanilla-sources because i had problem with running jack as normal user on it even with realtime-lsm.
Is arckck your job? |
|
Back to top |
|
|
iphitus Apprentice
Joined: 03 Aug 2005 Posts: 226
|
Posted: Wed Nov 16, 2005 12:54 am Post subject: |
|
|
indianiec wrote: | Staircase is in ck too, realtime-lsm is not problem because it is in portage, but archck has no molnar's RT.
I tried to patch gentoo and ck-sourses with RT but no luck. I could expext that. I didn't try to patch vanilla-sources because i had problem with running jack as normal user on it even with realtime-lsm.
Is arckck your job? |
Archck is my job. Give it a shot. Afaik, ingo's patches apply to his scheduler, O, the vanilla one. CK's is different, Con's Staircase, which I know is more than capable for what you need. |
|
Back to top |
|
|
Dominique_71 Veteran
Joined: 17 Aug 2005 Posts: 1877 Location: Switzerland (Romandie)
|
Posted: Thu Nov 24, 2005 11:15 am Post subject: |
|
|
I have Agnula installed. http://demudi.agnula.org/ It is the best audio distributiion lying around. The kernell is a vanilla kernel with the Ingo's rt patch, the realtime-lsm modules and 2 nice scripts to define the realtime priorities at boot time. I can run jack with 128 frames, 2 periods at 48kHz with no audible xruns, latency 5.33 ms. (P4 1.8GHz and Audigy2)
I am in my way to try to adapt it to Gentoo. I have done a fresh stage 3 install, a stage 3 to stage 1 in order to get gcc 3.4.4 https://forums.gentoo.org/viewtopic-t-400576-highlight-rsync+make+conf.html . The kernel is a 2.6.14.2 with Ingo Molnar's patch. Xorg is working, and i am no in my way to install some fluxbox, some parts of gnome and sound applications to be abble to test it.
To be abble to run jack with realtime priorities, you must manage the irq. First the hardware irq in order to set the rtc with the higher irq in the system, followed by the sound card, followed by the other things, one by one. By doing this, you tell the system at the sound cannot be interrupted by another hardware process.
Second, you must instruct the system at the audio group have a higher priority as all the other groups, and you must be in the audio group. With this, you tell the system at your programs have a higher priority as the other and jack will run just fine will rt priority as user process.
To be abble to do that, you must have shedutils and use chrt. The 2 scripts in Agnula do the whole thing at boot time. But they are using the system 5 init process: Code: | /etc/init.d/rtirq <start-restart-stop> |
For now, i have just make a minor modification in one script and put 2 lines in /etc/conf.d/local.start and local.stop to start and stop those scripts. Is it some documentation telling how to adapt an init 5 process to gentoo? _________________ "Confirm You are a robot." - the singularity |
|
Back to top |
|
|
Dominique_71 Veteran
Joined: 17 Aug 2005 Posts: 1877 Location: Switzerland (Romandie)
|
Posted: Sat Nov 26, 2005 3:36 pm Post subject: |
|
|
It's rocks. Actually, I am abble to use jack with either 96kHz, 256 frames, 2 periods, latency 5,33 ms, and 48kHz or 444.1 kHz, 128 frames, 2 periods, latency 5,33 or 5,8 ms without audible xruns.
It append sometime when starting a programs at iI get a few xruns and audible scratches, but no xruns or scratches when i use the programs.
That was with gnome, i have not yet configured fluxbox. _________________ "Confirm You are a robot." - the singularity |
|
Back to top |
|
|
Gabrys Veteran
Joined: 05 Dec 2005 Posts: 1096 Location: Toruń [PL]
|
Posted: Wed Jan 25, 2006 10:08 am Post subject: |
|
|
Is the project life? The website is dead . _________________ Sabayon Professional 1.1 (czyli zdradziłem oryginalne Gentoo)
@ Dell Inspiron 8600 (nVidia, Realtek, Pentium M) |
|
Back to top |
|
|
iphitus Apprentice
Joined: 03 Aug 2005 Posts: 226
|
Posted: Wed Jan 25, 2006 3:12 pm Post subject: |
|
|
No release for months, its well and truly dead.
if you are lookin for a patchset, theres nitro for performance and instability, and archck for performance and stability.
iphitus |
|
Back to top |
|
|
Dominique_71 Veteran
Joined: 17 Aug 2005 Posts: 1877 Location: Switzerland (Romandie)
|
Posted: Wed Jan 25, 2006 6:14 pm Post subject: |
|
|
After reading /usr/src/linux/Documentation/sound/alsa/emu10k1-jack.txt and according my jack config as suggested, I am now able to run jack with a latency of 1.33msec at 48kHz and 0.667 msec at 96kHz. Its rock!
Here is some scripts I run at boot time:
/etc/init.d/realtime
Code: | #! /bin/sh
#
# This script loads and unloads the realtime kernel module
# Configuration can be put into /etc/default/realtime
#
# Author: Guenter Geiger <geiger@debian.org>
#
#
# Version: 0.1
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=realtime
DESC="Realtime Linux Security Module"
# Gracefully exit if the package has been removed.
if test ! -e "/lib/modules/`uname -r`/extra/realtime.ko"
then
echo Loading $DESC: not found
exit 0
fi
# Read config file if it is present.
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# The module has to be enabled
if test "$ENABLE" != "yes"
then
echo Loading $DESC: disabled
exit 0
fi
CAPLOADED=`lsmod | grep capability`
set -e
case "$1" in
start)
if [ "$CAPLOADED" != "" ]
then
echo Realtime Linux Security Module: Unloading capability LSM
rmmod capability
fi
echo -n "Loading $DESC: $NAME"
modprobe $NAME $PARAMETERS
echo "."
;;
stop)
echo -n "Unloading $DESC: $NAME "
modprobe -r $NAME
echo "."
;;
restart|force-reload)
echo -n "Restarting $DESC: $NAME"
modprobe -r $NAME
sleep 1
modprobe $NAME $PARAMETERS
echo "."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
|
/etc/init.d/rtirq
Code: | #!/bin/sh
#
# Copyright (c) 2004-2005 rncbc aka Rui Nuno Capela.
# All rights reserved.
#
# /etc/init.d/rtirq
#
# Startup script for realtime-preempt enabled kernels.
#
# chkconfig: 35 81 19
# description: Realtime IRQ thread tunning.
#
### BEGIN INIT INFO
# Provides: rtirq
# Required-Start: $syslog $local_fs
# Should-Start: $time alsa alsasound hotplug
# Required-Stop: $syslog $local_fs
# Should-Stop: $time alsa alsasound hotplug
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Realtime IRQ thread tunning.
# Description: Change the realtime scheduling policy
# and priority of relevant system driver IRQ handlers.
### END INIT INFO
#
# Won't work without those binaries.
for DIR in /sbin /usr/sbin /bin /usr/bin /usr/local/bin; do
[ -z "${RTIRQ_CHRT}" -a -x ${DIR}/chrt ] && RTIRQ_CHRT=${DIR}/chrt
[ -z "${RTIRQ_PIDOF}" -a -x ${DIR}/pidof ] && RTIRQ_PIDOF=${DIR}/pidof
done
# Check for missing binaries (stale symlinks should not happen)
[ -n "${RTIRQ_CHRT}" -a -x ${RTIRQ_CHRT} ] || {
echo "`basename $0`: chrt: not installed."
[ "$1" = "stop" ] && exit 0 || exit 5
}
[ -n "${RTIRQ_PIDOF}" -a -x ${RTIRQ_PIDOF} ] || {
echo "`basename $0`: pidof: not installed."
[ "$1" = "stop" ] && exit 0 || exit 5
}
# Check for existence of needed config file and read it.
RTIRQ_CONFIG=/etc/default/rtirq
[ -r ${RTIRQ_CONFIG} ] || {
echo "`basename $0`: ${RTIRQ_CONFIG}: not found."
[ "${RTIRQ_ACTION}" = "stop" ] && exit 0 || exit 6
}
# Read configuration.
. ${RTIRQ_CONFIG}
# Colon delimited trail list of already assigned IRQ numbers,
# preventind lower priority override due to shared IRQs.
RTIRQ_TRAIL=":"
#
# Reset policy of all IRQ threads out there.
#
function rtirq_reset ()
{
# PIDS=`ps -eo pid,class | egrep '(FF|RR)' | awk '{print $1}'`
PIDS=`ps -eo pid,comm | grep IRQ | awk '{print $1}'`
for PID in ${PIDS}
do
${RTIRQ_CHRT} --pid --other 0 ${PID}
done
}
#
# IRQ thread handler policy prioritizer by number.
#
function rtirq_exec_num ()
{
ACTION=$1
NAME=$2
PRI2=$3
IRQ=$4
PID=`${RTIRQ_PIDOF} "IRQ ${IRQ}"`
if [ $((${PID})) -gt 0 -a -z "`echo ${RTIRQ_TRAIL} | grep :${IRQ}:`" ]
then
PREPEND="Setting IRQ priorities: ${ACTION} [${NAME}] irq=${IRQ} pid=${PID}"
case ${ACTION} in
start)
PREPEND="${PREPEND} prio=${PRI2}"
if ${RTIRQ_CHRT} --pid --fifo ${PRI2} ${PID}
then
echo "${PREPEND}: OK."
else
echo "${PREPEND}: FAILED."
fi
;;
stop)
if ${RTIRQ_CHRT} --pid --other 0 ${PID}
then
echo "${PREPEND}: OK."
else
echo "${PREPEND}: FAILED."
fi
;;
status)
echo "${PREPEND}: " && ${RTIRQ_CHRT} --pid --verbose ${PID}
;;
*)
echo "${PREPEND}: ERROR."
;;
esac
RTIRQ_TRAIL=":${IRQ}${RTIRQ_TRAIL}"
fi
}
#
# IRQ thread handler policy prioritizer by name.
#
function rtirq_exec_name ()
{
ACTION=$1
NAME=$2
PRI1=$3
IRQS=`grep "${NAME}" /proc/interrupts | awk -F: '{print $1}'`
for IRQ in ${IRQS}
do
rtirq_exec_num ${ACTION} ${NAME} ${PRI1} ${IRQ}
PRI1=$((${PRI1} - 1))
done
}
#
# Main executive.
#
function rtirq_exec ()
{
ACTION=$1
# Check configured base priority.
PRI0=${RTIRQ_PRIO_HIGH}
[ $((${PRI0})) -gt 90 ] && PRI0=90
[ $((${PRI0})) -lt 10 ] && PRI0=10
# Check configured priority decrease step.
DECR=${RTIRQ_PRIO_DECR}
[ $((${DECR})) -gt 20 ] && DECR=20
[ $((${DECR})) -lt 1 ] && DECR=1
# Process all configured service names...
for NAME in ${RTIRQ_NAME_LIST}
do
case ${NAME} in
snd)
PRI1=${PRI0}
IRQS=`grep irq /proc/asound/cards | sed 's/.* irq \(.*\)/\1/'`
for IRQ in ${IRQS}
do
rtirq_exec_num ${ACTION} ${NAME} ${PRI1} ${IRQ}
PRI1=$((${PRI1} - 1))
done
;;
usb)
rtirq_exec_name ${ACTION} "ohci_hcd" ${PRI0}
rtirq_exec_name ${ACTION} "uhci_hcd" ${PRI0}
rtirq_exec_name ${ACTION} "ehci_hcd" ${PRI0}
;;
*)
rtirq_exec_name ${ACTION} ${NAME} ${PRI0}
;;
esac
[ ${PRI0} -gt ${DECR} ] && PRI0=$((${PRI0} - ${DECR}))
done
}
#
# Main procedure line.
#
case $1 in
*start)
if [ "${RTIRQ_RESET_ALL}" = "yes" -o "${RTIRQ_RESET_ALL}" = "1" ]
then
rtirq_reset
fi
rtirq_exec start
;;
stop)
if [ "${RTIRQ_RESET_ALL}" = "yes" -o "${RTIRQ_RESET_ALL}" = "1" ]
then
rtirq_reset
#else
# rtirq_exec stop
fi
;;
reset)
if [ "${RTIRQ_RESET_ALL}" = "yes" -o "${RTIRQ_RESET_ALL}" = "1" ]
then
rtirq_reset
else
rtirq_exec stop
fi
;;
status)
echo
#rtirq_exec status
ps -eo pid,class,rtprio,ni,pri,pcpu,stat,comm --sort -rtprio \
| egrep '(^[[:blank:]]*PID|IRQ)' \
| awk 'BEGIN {
while (getline IRQLine < "/proc/interrupts") {
split(IRQLine, IRQSplit, ":");
if (match(IRQSplit[1], "^[[:blank:]]+[0-9]+$")) {
gsub("^[[:blank:]|0-9]+|[/|0-9]+$" \
"|[^[:blank:]]+PIC[^[:blank:]]*[[:blank:]]+", \
"", IRQSplit[2]);
IRQTable[IRQSplit[1] + 0] = IRQSplit[2];
}
}
} { print $0"\t"IRQTable[$9]; }'
echo
;;
*)
echo
echo " Usage: $0 {[re]start|stop|reset|status}"
echo
exit 1
;;
esac
exit 0
|
/etc/default/realtime
Code: | # Configuration file for the realtime LSM module
# PARAMETERS can be one or more of:
#
# gid=xx (allow realtime capabilities for gid xx only)
# any=1|0 (allow any user and process to have realtime)
# mlock=1|0 (allow/disallow mlocking)
# allcaps=1|0 (allow setpcap functionality (dangerous!))
# enable loading of module at startup
ENABLE=yes
# parameter settings for module
PARAMETERS="gid=18"
|
/etc/default/rtirq
Code: | #!/bin/sh
#
# Copyright (c) 2004-2005 rncbc aka Rui Nuno Capela.
# All rights reserved.
#
# /etc/default/rtirq
#
# Configuration for IRQ thread tunning,
# for realtime-preempt enabled kernels,
#
# IRQ Thread service names
# (space separeted 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=10
# Whether to reset all IRQ threads to SCHED_OTHER.
RTIRQ_RESET_ALL=0
|
_________________ "Confirm You are a robot." - the singularity |
|
Back to top |
|
|
evermind Guru
Joined: 10 Jan 2004 Posts: 322
|
Posted: Thu Feb 16, 2006 7:57 pm Post subject: |
|
|
Dominique_71 wrote: |
/etc/init.d/rtirq
|
I added an ebuild to my pro_audio_music_portage_overlay for the rtirq-init-script
and adjusted it a bit to match the gentoo-init-style -- hope nothing broke
thx for the hint
original script was: mailinglist: PlanetCCRMA |
|
Back to top |
|
|
Dominique_71 Veteran
Joined: 17 Aug 2005 Posts: 1877 Location: Switzerland (Romandie)
|
Posted: Sat Feb 18, 2006 3:37 pm Post subject: |
|
|
You are welcome.
The kernel development is going very fast, and the realtime-lsm module is now obsolete.
The future will be a PAM realtime kernel with rt-limit, but I believe at it is best to wait until the rt-limit has proved at it is as reliable as the realtime-lsm.
alsa and PAM
Rlimits-Aware PAM _________________ "Confirm You are a robot." - the singularity |
|
Back to top |
|
|
josh Guru
Joined: 05 Feb 2003 Posts: 473 Location: Milky Way: Solar System: Earth: North America: USA: NY: Buffalo
|
Posted: Fri Mar 17, 2006 1:49 am Post subject: |
|
|
Just wanted to say that those init scripts are awesome!
I had to test it out of course. I did an 'emerge sync' and opened up firefox, openoffice, limewire and some other heavily hitters. The load went through the roof and the CPU usage for X went up to about 80 or 90 and the desktop became pretty unresponsive in general. But I could play a few songs and record in ardour without incident! And this is on my p3! I can't wait to see how many tracks I can stack on now. _________________ -Josh |
|
Back to top |
|
|
Dominique_71 Veteran
Joined: 17 Aug 2005 Posts: 1877 Location: Switzerland (Romandie)
|
Posted: Fri Apr 14, 2006 8:45 pm Post subject: |
|
|
The 2 files /etc/init.d/realtime and /etc/default/realtime are not needed on gentoo. It is enough to edit /etc/modules.autoload.d/kernel-2.6 <-- add realtime there
and /etc/modules.d/realtime Code: | options realtime gid=18 |
We get no boot message, but the result is the same.
You will get the last file when emerging realtime-lsm, but not if you are installing this module with the rt-sources on evermind's audio-pro overlay. It is of course my favorite gentoo overlay and I recommand to install it. _________________ "Confirm You are a robot." - the singularity |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|