snd_emu10k1 tremendous interrupt load?

Yuriy Tsibizov Yuriy.Tsibizov at gfk.ru
Sat Feb 10 19:21:42 UTC 2007


> Hi people,
>
> Over the last few days, my CURRENT box has started to slow down to a
> crawl. top(1) reports most CPU load is spent on interrupts, and a quick
> vmstat -i to support this completely:
>
> interrupt                          total       rate
> irq1: atkbd0                        1631          0
> irq15: ata1                        14197          2
> irq16: pcm0                   1056243398     160109
Rate for emu10k1 cards should be arount 48 interrupts/s. Do you record or 
play sound?

Can you see any changes in interrupt rate when you change 
hw.snd.latency_profile?

You can also try to go back to dev/sound/pcm before 2007-02-01 09:30.

> Does anyone have any ideas why this is happening? Quick inspection of
> /sys/dev/sound/pci/emu10k1.c:emu_intr() seems to hint that the
> emu_rd(sc, IPR, 4) value takes a long time to clear, anyone have more
> hints on this annoying behaviour?

It may take some time because usual read rate should be around 48-96 
reads/second and HW can't survive high register I/O rate.

Other possibility is very low HW timer settings (like "interrupt after 
each 16 bytes", that is very unusual too) that will re-set this register 
after very small delay, comparable with duration of sound buffer 
callbacks. This will keep driver in interrupt loop and slow down 
everything. snd_emu10kx may work better in this situation (it uses 
different timer interrupt settings).

Yuriy.



More information about the freebsd-current mailing list