Re: Realtime Preemption, 2.6.12, Beginners Guide?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Alistair John Strachan <[email protected]> wrote:

> > I'm beginning to understand the issue, and I see why you think the proposed
> > patch fixes it. I'll compile and boot V0.7.51-05 now.
> 
> Indeed, this seems to have fixed it.
> 
> ( softirq-timer/0-3    |#0): new 8 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 9 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 10 us maximum-latency wakeup.
> ( softirq-timer/0-3    |#0): new 14 us maximum-latency wakeup.

great! Do the softlockup warnings still occur?

> Find attached another trace (only 33us this time).

the main latency comes from here:

>    <...>-3485  0Dnh2   13us : enqueue_task (__schedule)
>    <...>-3485  0Dnh2   14us+: trace_array (__schedule)
>    <...>-3485  0Dnh2   18us : trace_array <softirq--3> (69 6e)
>    <...>-3485  0Dnh2   18us : trace_array <<...>-3485> (76 78)
>    <...>-3485  0Dnh2   20us+: trace_array (__schedule)
> softirq--3     0Dnh2   28us+: __switch_to (__schedule)

trace_array() can be quite expensive (it generates a trace entry of 
every runnable task, with interrupts and preemption disabled). It is 
disabled if RT_DEADLOCK_DETECT is disabled. For pure wakeup latency 
tracing, the most optimal combination of options is:

 # CONFIG_DETECT_SOFTLOCKUP is not set
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_DEBUG_SLAB is not set
 # CONFIG_DEBUG_PREEMPT is not set
 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
 CONFIG_WAKEUP_TIMING=y
 # CONFIG_CRITICAL_PREEMPT_TIMING is not set
 # CONFIG_CRITICAL_IRQSOFF_TIMING is not set
 CONFIG_LATENCY_TIMING=y
 CONFIG_LATENCY_TRACE=y
 CONFIG_MCOUNT=y
 # CONFIG_RT_DEADLOCK_DETECT is not set
 # CONFIG_DEBUG_RT_LOCKING_MODE is not set
 # CONFIG_DEBUG_KOBJECT is not set
 CONFIG_DEBUG_BUGVERBOSE=y
 # CONFIG_DEBUG_INFO is not set
 # CONFIG_DEBUG_FS is not set
 CONFIG_FRAME_POINTER=y
 CONFIG_EARLY_PRINTK=y
 # CONFIG_DEBUG_STACKOVERFLOW is not set
 # CONFIG_KPROBES is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_PAGEALLOC is not set

such a kernel will still be able to generate /proc/latency_trace traces, 
but has much lower runtime overhead than your current kernel. (But you 
should probably keep all debugging enabled until all of the current 
problems have been resolved.)

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

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux