From: John S. <lin...@fr...> - 2007-07-11 16:51:01
|
William Cohen wrote: > John Sigler wrote: > >> I'm working on an "embedded" system (it's really just an x86 platform >> with a 128MB SSD and 256MB RAM). I've observed unusual latencies >> periodically on some PCI DMA operations. I thought OProfile might help >> to understand where the unusual latencies come from. > > You might also look at the latency tracing patches like Ingo Molnar has. > > http://people.redhat.com/mingo/latency-tracing-patches/ I think that patch made it into 2.6.20 (?) The following options are set in my .config: CONFIG_TRACE_IRQFLAGS_SUPPORT=y # CONFIG_PRINTK_TIME is not set # CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_UNUSED_SYMBOLS is not set # CONFIG_DEBUG_FS is not set # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_KERNEL is not set CONFIG_LOG_BUF_SHIFT=14 CONFIG_STACKTRACE=y CONFIG_EVENT_TRACE=y CONFIG_FUNCTION_TRACE=y CONFIG_WAKEUP_TIMING=y CONFIG_LATENCY_TRACE=y # CONFIG_CRITICAL_PREEMPT_TIMING is not set # CONFIG_CRITICAL_IRQSOFF_TIMING is not set CONFIG_WAKEUP_LATENCY_HIST=y CONFIG_LATENCY_TIMING=y CONFIG_LATENCY_HIST=y CONFIG_MCOUNT=y CONFIG_DEBUG_BUGVERBOSE=y CONFIG_FRAME_POINTER=y CONFIG_UNWIND_INFO=y CONFIG_STACK_UNWIND=y CONFIG_EARLY_PRINTK=y CONFIG_X86_FIND_SMP_CONFIG=y CONFIG_X86_MPPARSE=y CONFIG_DOUBLEFAULT=y But the tools are not obvious. # ./check_dektec_input0 4140064638 0 1316 80 RATE: 38.019115 Mbit/s PERIOD: 276913 ns 632.311669128 386137 ns 642.150123090 376096 ns 642.150299889 164604 ns 652.180122882 376978 ns 652.180298594 165521 ns 700.120871360 449977 ns 700.120975781 88911 ns 718.230122602 373120 ns 718.230302861 170038 ns # cat /proc/latency_trace preemption latency trace v1.1.5 on 2.6.20.7-rt8 -------------------------------------------------------------------- latency: 26 us, #2/2, CPU#0 | (M:rt VP:0, KP:0, SP:1 HP:1) ----------------- | task: softirq-timer/0-4 (uid:0 nice:0 policy:1 rt_prio:50) ----------------- _------=> CPU# / _-----=> irqs-off | / _----=> need-resched || / _---=> hardirq/softirq ||| / _--=> preempt-depth |||| / ||||| delay cmd pid ||||| time | caller \ / ||||| \ | / <...>-4 0D..1 26us : trace_stop_sched_switched (__sched_text_start) vim:ft=help I'll give the CONFIG_PREEMPT_RT mailing list a try. Regards. |