Re: [PATCH] Instrumenting high latency

From: Andrew Morton
Date: Mon Jul 12 2004 - 02:38:05 EST


Con Kolivas <kernel@xxxxxxxxxxx> wrote:
>
> He hacked
> together this simple patch which times periods according to the preempt
> count.

OK, small problem. We have code which does, effectively,

if (need_resched()) {
drop_the_lock();
schedule();
grab_the_lock();
}

so if need_resched() stays false then this will hold the lock for a long
time and bogus reports are generated:

46ms non-preemptible critical section violated 1 ms preempt threshold starting at exit_mmap+0x26/0x188 and ending at exit_mmap+0x154/0x188

To fix that you need to generate high scheduling pressure so that
need_resched() is frequently true. On all CPUs. Modify realfeel to pin
itself to each CPU, or something like that.

This rather decreases the patch's usefulness.

The way I normally do this stuff is with

http://www.zip.com.au/~akpm/linux/patches/stuff/rtc-debug.patch

and `amlat', from http://www.zip.com.au/~akpm/linux/amlat.tar.gz


It _might_ be sufficient to redefine need_resched() to just return 1 all
the time. If that causes the kernel to livelock then we need to fix that
up anyway.
-
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/