Re: [patch] voluntary-preempt-2.6.8-rc2-M5

Ingo Molnar
2004-07-30T07:41:59Z

* Lee Revell <rlrevell@joe-job.com> wrote:

> After running jackd with L2 all night, the only repeated XRUN was this
> one:
>
> ALSA /home/rlrevell/cvs/alsa/alsa-driver/alsa-kernel/core/pcm_lib.c:139: XRUN: pcmC0D2c
> [<c01066a7>] dump_stack+0x17/0x20
> [<de93d54b>] snd_pcm_period_elapsed+0x27b/0x3e0 [snd_pcm]
> [<de979211>] snd_emu10k1_interrupt+0xd1/0x3c0 [snd_emu10k1]
> [<c01078d7>] handle_IRQ_event+0x47/0x90
> [<c0107e93>] do_IRQ+0xe3/0x1b0
> [<c0106268>] common_interrupt+0x18/0x20
> [<c0146771>] add_to_swap+0x21/0xc0
> [<c0139446>] shrink_list+0x156/0x4b0
> [<c01398ed>] shrink_cache+0x14d/0x370
> [<c013a118>] shrink_zone+0xa8/0xf0
> [<c013a4ee>] balance_pgdat+0x1be/0x220
> [<c013a5f9>] kswapd+0xa9/0xb0
> [<c0104395>] kernel_thread_helper+0x5/0x10
>
> This produced a few ~2ms XRUNs. The shrink_zone -> shrink_cache ->
> shrink_list is a recurring motif.
>
> Is this addressed in M2?

not yet. I havent seen this latency yet, nor are there any immediately
clear clues in the xrun logs you sent. (it would still be nice to check
out -M2, to see whether with all those configurability changes it
matches the latencies of L2+your-irq.c-hack.)

shrink_list() itself is preemptable once every iteration so that
function alone shouldnt be able to generate a 2msec latency.

a strong suspect is add_to_swap(), it could be looping. Could you do a
'echo m > /proc/sysrq-trigger' and send me the results? In particular
are there any significant 'race' counts in the 'Swap cache:' stats?

the other possible suspect is get_swap_page() - it's called from
add_to_swap() and has the potential to introduce latencies (it does
bitmap scans, etc.) - but it never shows up in your xrun logs, which is
a bit weird.

(could you perhaps also try wli's latency printing patch? That prints
out latencies closer to where they really happen.)

plus it seems the latency is related to certain VM activities - you
still cannot name any particular reproducer workload - it just happens
occasionally, right?

Ingo