Re: [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch

Lee Revell
2004-07-21T03:27:53Z

On Mon, 2004-07-19 at 06:29, Ingo Molnar wrote:
> * Andrew Morton <akpm@osdl.org> wrote:
>
> > > Should I try ext3?
> >
> > ext3 is certainly better than that, but still has a couple of
> > potential problem spots. ext2 is probably the best at this time.
>
> with the voluntary-preempt patch applied ext3 is below ~500 usecs for
> all things i tried on a 2GHz CPU. Without the patch i can trigger
> latencies up to milliseconds (even with CONFIG_PREEMPT) by triggering a
> bigger commit stream via some large file write or a cached du / causing
> a stream of atime updates. (I very much suspect that all other
> journalled filesystems have similar problems and they'll need
> measurements and fixing just like ext3 does.)
>
> another bigger problem area is the VM - see my patch for details.
> pagetable zapping and page reclaim are both problematic and need fixups
> even under CONFIG_PREEMPT. Doing a simple 'make -j' kernel build that
> hits swap triggers these easily. (after applying my patch the latencies
> go below 1msec even with a 'make -j' overload.)
>

I discovered I can reliably produce a large XRUN by toggling Caps Lock,
Scroll Lock, or Num Lock. This is with 2.6.8-rc1-mm1 + voluntary
preempt (I modified the patch by hand to apply on this kernel, as
2.6.8-rc2 disables my network card). Here is the XRUN trace.

ALSA /home/rlrevell/cvs/alsa-driver/alsa-kernel/core/pcm_lib.c:169: XRUN: pcmC0D0p
[<c01066f7>] dump_stack+0x17/0x20
[<de952477>] snd_pcm_period_elapsed+0x2c7/0x400 [snd_pcm]
[<de962477>] snd_emu10k1_interrupt+0x337/0x3c0 [snd_emu10k1]
[<c0107913>] handle_IRQ_event+0x33/0x60
[<c0107c55>] do_IRQ+0xa5/0x170
[<c01062b8>] common_interrupt+0x18/0x20
[<c01d3f7f>] __delay+0xf/0x20
[<c021881a>] atkbd_sendbyte+0x5a/0xa0
[<c0218a35>] atkbd_command+0x1d5/0x200
[<c0218bcb>] atkbd_event+0x16b/0x200
[<c0215a95>] input_event+0x115/0x3d0
[<c01ecaeb>] kbd_bh+0xbb/0x160
[<c011a554>] tasklet_action+0x44/0x70
[<c011a303>] __do_softirq+0x83/0x90
[<c011a345>] do_softirq+0x35/0x40
[<c0107cc5>] do_IRQ+0x115/0x170
[<c01062b8>] common_interrupt+0x18/0x20
[<c014b95e>] sys_read+0x2e/0x50
[<c0106097>] syscall_call+0x7/0xb

Lee