I've had success with the latest gentoo-sources w/low latency turned
on. I've never bothered with ext3 / reiser. In theory, one day xfs will
be the right filesystem for multimedia, until then i'll stick with ext2
as it's stabler.
The current jack from cvs seems flakier with apps other than ardour.
If you watch in top does any process regularly spike? It's all i can
think of, unless the SB just can't take it...
j.
On Thursday, April 17, 2003, at 08:28 PM, rob fell wrote:
Hello all
I'm trying to get a gentoo based audio box (primarily Ardour) off the
ground. Despite my best efforts,
I can't eliminate xruns to a level I could live with (10ms+ xruns
every 2 minutes on average seems
excessive - esp. with stereo @ 44k1). There's some captured data at
the very end of this mail.
My observations are made using;
jackd -v -R -d... -r 44100 -p 128 2>&1 | tee jacklog (i.e. stereo SB16
@44k1)
and ardour, session open but not actively playing
I'll present my questions before wandering off into a tedious list
(apologies for length) of stuff I've
already done. Would anyone care to offer an opinion on these questions;
1. Am I expecting too much? Either from my hardware, or the current
state of Linux.
2. Is there a vital piece of config that I've totally overlooked?
3. Is there a better way to measure this to home in on the source of
the problem?
4. Are the xruns incidental to the disk activity - is this all a
symptom of something else?
5. Insert any other question I should be asking here.
Thanks in advance for any help/advice offered, I've run out of ideas.
Ta
R
The (abridged) story so far...
Google
Patched 2.4.20 with everything I found on Andrew Mortons page
Read
http://myweb.cableone.net/eviltwin69/Arcana.html
Read LAU resource links
Fixed snd-card IRQ to 9
PCI latency timers set up
Killed cron/syslog
Switched to reiserfs (in desperation)
Tried hdparm incantations to no effect
Run bonnie (if I understand this, I'm getting 25Mb/s sustained block
bandwidth)
-------Sequential Output-------- ---Sequential Input--
--Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block---
--Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU
/sec %CPU
2000 7467 73.6 25491 24.5 12476 8.3 10739 75.3 25217 10.8
90.8 1.2
Checked /var/log/messages for signs of IDE bus failures
Upgraded to alsa-driver 0.9.2
Re-emerged jack from CVS
Monkeyed with vm settings to try to smooth out the disk activity
The hardware:
Duron 1300MHz, Abit KT7A
512M PC133
primary IDE: Seagate ST360021A, QUANTUM FIREBALLP AS40.0 (80 way
ribbon)
secondary IDE: CD/CDRW
AGP graphics card
SB16/128 PCI (i know - it's junk)
3Com PCI 3c905
0: 674864 XT-PIC timer
1: 7927 XT-PIC keyboard
2: 0 XT-PIC cascade
8: 2 XT-PIC rtc
9: 1166 XT-PIC Ensoniq AudioPCI
11: 21381 XT-PIC eth0
12: 94912 XT-PIC PS/2 Mouse
14: 13585 XT-PIC ide0
15: 9 XT-PIC ide1
NMI: 0
LOC: 674826
ERR: 114
MIS: 0
lspci -vv
00:00.0 Host bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133]
(rev 03)
Subsystem: ABIT Computer Corp. KT7/KT7-RAID/KT7A/KT7A-RAID
Mainboard
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort+ >SERR-
<PERR-
Latency: 8
Region 0: Memory at e0000000 (32-bit, prefetchable) [size=64M]
Capabilities: [a0] AGP version 2.0
Status: RQ=31 SBA+ 64bit- FW+ Rate=x1,x2,x4
Command: RQ=0 SBA- AGP- 64bit- FW- Rate=<none>
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:01.0 PCI bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133
AGP] (prog-i
f 00 [Normal decode])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort+ >SERR-
<PERR-
Latency: 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Memory behind bridge: e6000000-e7ffffff
Prefetchable memory behind bridge: e4000000-e5ffffff
BridgeCtl: Parity- SERR- NoISA+ VGA+ MAbort- >Reset- FastB2B-
Capabilities: [80] Power Management version 2
Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super
South] (rev 40
)
Subsystem: ABIT Computer Corp.: Unknown device 0000
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping+ SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort- >SERR-
<PERR-
Latency: 0
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC
Bus Master
IDE (rev 06) (prog-if 8a [Master SecP PriP])
Subsystem: VIA Technologies, Inc. VT8235 Bus Master
ATA133/100/66/33 IDE
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort- >SERR-
<PERR-
Latency: 32
Region 4: I/O ports at d000 [size=16]
Capabilities: [c0] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:07.4 Bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
(rev 40)
Subsystem: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI]
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort- >SERR-
<PERR-
Interrupt: pin ? routed to IRQ 11
Capabilities: [68] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
00:09.0 Ethernet controller: 3Com Corporation 3c905 100BaseTX
[Boomerang]
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort- >SERR-
<PERR-
Latency: 32 (750ns min, 2000ns max)
Interrupt: pin A routed to IRQ 11
Region 0: I/O ports at dc00 [size=64]
Expansion ROM at <unassigned> [disabled] [size=64K]
00:0d.0 Multimedia audio controller: Ensoniq 5880 AudioPCI (rev 02)
Subsystem: Ensoniq Creative Sound Blaster AudioPCI128
Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort-
<TAbort-
<MAbort- >SERR- <PERR-
Latency: 248 (3000ns min, 32000ns max)
Interrupt: pin A routed to IRQ 9
Region 0: I/O ports at e000 [size=64]
Capabilities: [dc] Power Management version 1
Flags: PMEClk- DSI+ D1- D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
01:00.0 VGA compatible controller: nVidia Corporation NV5M64 [RIVA
TNT2 Model 64
/Model 64 Pro] (rev 15) (prog-if 00 [VGA])
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Step
ping- SERR- FastB2B-
Status: Cap+ 66Mhz+ UDF- FastB2B+ ParErr- DEVSEL=medium
TAbort- <TAbort
- <MAbort- >SERR-
<PERR-
Latency: 32 (1250ns min, 250ns max)
Interrupt: pin A routed to IRQ 10
Region 0: Memory at e6000000 (32-bit, non-prefetchable)
[size=16M]
Region 1: Memory at e4000000 (32-bit, prefetchable) [size=32M]
Expansion ROM at <unassigned> [disabled] [size=64K]
Capabilities: [60] Power Management version 1
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot
-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [44] AGP version 2.0
Status: RQ=31 SBA- 64bit- FW- Rate=x1,x2,x4
Command: RQ=0 SBA- AGP- 64bit- FW- Rate=<none>
ps ax
PID TTY STAT TIME COMMAND
1 ? S 0:04 init
2 ? SW 0:00 [keventd]
3 ? SWN 0:00 [ksoftirqd_CPU0]
4 ? SW 0:00 [kswapd]
5 ? SW 0:00 [bdflush]
6 ? SW 0:00 [kupdated]
7 ? SW 0:00 [kreiserfsd]
31 ? S 0:00 /sbin/devfsd /dev
1198 vc/1 S 0:00 login -- root
1199 vc/2 S 0:00 /sbin/agetty 38400 tty2 linux
1200 vc/3 S 0:00 /sbin/agetty 38400 tty3 linux
1201 vc/4 S 0:00 /sbin/agetty 38400 tty4 linux
1202 vc/5 S 0:00 /sbin/agetty 38400 tty5 linux
1203 vc/6 S 0:00 /sbin/agetty 38400 tty6 linux
1204 vc/1 S 0:00 -bash
1209 vc/1 S 0:00 /bin/sh /usr/X11R6/bin/startx
1220 vc/1 S 0:00 xinit /root/.xinitrc --
1221 ? S< 0:33 X :0
1234 vc/1 S 0:00 fvwm2
1236 vc/1 S 0:01 xterm -geometry 120x70+0+0
1239 pts/0 S 0:00 bash
1284 vc/1 S 0:00 xterm
1285 pts/1 S 0:00 bash
1288 vc/1 S 0:00 xterm
1289 pts/2 S 0:00 bash
1313 vc/1 S 0:00 xterm
1314 pts/3 S 0:00 bash
1325 pts/3 S 0:00 alsamixer
1387 vc/1 S 0:00 xterm
1388 pts/4 S 0:00 bash
1398 vc/1 S 0:00 xterm
1399 pts/5 S 0:00 bash
1580 pts/0 S 0:00 jackd -v -R -d alsa -d card0 -r 44100 -p 128
1581 pts/0 S 0:00 tee jacklog
1582 pts/0 SL 0:11 jackd -v -R -d alsa -d card0 -r 44100 -p 128
1589 pts/2 SL 0:26 /usr/lib/ardour/ardourx
1616 pts/1 S 0:00 emacs jacklog.awk
1631 pts/1 R 0:00 ps ax
I used this (jacklog.awk) to parse the output from jackd:
>>>
$0 ~/load/ {
count++;
seconds++;
}
$0 ~/xrun/ {
cost = ($7 * 1000)/count;
print count "\t" $7 * 1000 "\t" cost;
count = 0;
xruns++;
}
END {
minutes = int(seconds / 60);
seconds = seconds - (minutes * 60);
time = (minutes * 60) + seconds;
print xruns " xruns in " minutes":"seconds " (" time
" seconds)
average " time/xruns;
}
<<<<
which gave me this (cost function is extremely crude);
108 675 6.25
207 690 3.33333
196 1400 7.14286
34 10608 312
69 2658 38.5217
44 14553 330.75
117 465 3.97436
39 913 23.4103
206 1724 8.36893
108 8710 80.6481
176 12596 71.5682
58 1237 21.3276
182 15688 86.1978
53 4315 81.4151
233 1100 4.72103
95 8932 94.0211
5 1917 383.4
83 6378 76.8434
44 226 5.13636
10 7923 792.3
10 825 82.5
44 6949 157.932
44 1094 24.8636
15 455 30.3333
88 1220 13.8636
25 xruns in 39:30 (2370 seconds) average 94.8