Re: [patch] voluntary-preempt-2.6.9-rc1-bk12-R6

From: Ingo Molnar
Date: Thu Sep 09 2004 - 14:39:36 EST



* Lee Revell <rlrevell@xxxxxxxxxxx> wrote:

> I get these latencies when I cause the machine to swap by compiling a
> kernel with make -j32. They get bigger as the machine gets further
> into swap.
>
> Every 2.0s: head -60 /proc/latency_trace Wed Sep 8 02:51:40 2004
>
> preemption latency trace v1.0.6 on 2.6.9-rc1-bk12-VP-R6
> --------------------------------------------------
> latency: 605 us, entries: 5 (5) [VP:1 KP:1 SP:1 HP:1 #CPUS:1]
> -----------------
> | task: kswapd0/35, uid:0 nice:0 policy:0 rt_prio:0
> -----------------
> => started at: get_swap_page+0x23/0x490
> => ended at: get_swap_page+0x13f/0x490
> =======>
> 00000001 0.000ms (+0.606ms): get_swap_page (add_to_swap)
> 00000001 0.606ms (+0.000ms): sub_preempt_count (get_swap_page)
> 00000001 0.606ms (+0.000ms): update_max_trace (check_preempt_timing)
> 00000001 0.606ms (+0.000ms): _mmx_memcpy (update_max_trace)
> 00000001 0.607ms (+0.000ms): kernel_fpu_begin (_mmx_memcpy)

yep, the get_swap_page() latency. I can easily trigger 10+ msec
latencies on a box with alot of swap by just letting stuff swap out. I
had a quick look but there was no obvious way to break the lock. Maybe
Andrew has better ideas? get_swap_page() is pretty stupid, it does a
near linear search for a free slot in the swap bitmap - this not only is
a latency issue but also an overhead thing as we do it for every other
page that touches swap.

rationale: this is pretty much the only latency that we still having
during heavy VM load and it would Just Be Cool if we fixed this final
one. audio daemons and apps like jackd use mlockall() so they are not
affected by swapping.

Ingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/