Did you ever figure out what was going on? I think I'm have the same problem.
I'm using lttng on a Freescale iMX53, also an ARM Cortex-A8 processor. The
kernel version is 2.6.31, which is the newest kernel supported for the
processor. I seem to having the same problem. There aren't any bogus softirq
ids, but the trace would seem to indicate the processor is spending 99% of the
time running in soft irq mode. I've set the kernel to 1000 Hz and the timer
softirq takes almost 1 ms, i.e. virtually all the time until the next timer
interrupt. I bet you are using a 100 Hz kernel and thus see 10 ms between
interrupts.
kernel.irq_entry: 0.084002929 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, IRQ { ip = 2147650048, handler = 0x80036dd4, irq_id = 39,
kernel_mode = 1 }
kernel.timer_update_time: 0.084003051 (/home/user/traces/trace1/kernel_0), 0,
0, swapper, , 0, 0x0, IRQ { jiffies = 4299386742, xtime_sec = 4719, xtime_nsec
= 74001440, walltomonotonic_sec = 0, walltomonotonic_nsec = 0 }
kernel.softirq_raise: 0.084003173 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, IRQ { softirq_id = 1 [run_timer_softirq+0x0/0x218] }
kernel.irq_exit: 0.084003295 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, SYSCALL { handled = 1 }
kernel.softirq_entry: 0.084003417 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, SOFTIRQ { softirq_id = 1 [run_timer_softirq+0x0/0x218] }
** almost 1 ms passes **
kernel.timer_set: 0.085000122 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, SOFTIRQ { expires = 4419447, function = 0x8007c028, data = 0
}
kernel.timer_set: 0.085000244 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, SOFTIRQ { expires = 4419447, function = 0x801843e0, data = 0
}
kernel.softirq_exit: 0.085000366 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, SYSCALL { softirq_id = 1 [run_timer_softirq+0x0/0x218] }
Supposedly there are 122 ns between the end of the softirq and the next timer
interrupt, which is about 97 clock cycles at 800 MHz. That seems unlikely.
kernel.irq_entry: 0.085000488 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, IRQ { ip = 2147650048, handler = 0x80036dd4, irq_id = 39,
kernel_mode = 1 }
kernel.timer_update_time: 0.085000610 (/home/user/traces/trace1/kernel_0), 0,
0, swapper, , 0, 0x0, IRQ { jiffies = 4299386743, xtime_sec = 4719, xtime_nsec
= 74001443, walltomonotonic_sec = 0, walltomonotonic_nsec = 0 }
kernel.softirq_raise: 0.085000732 (/home/user/traces/trace1/kernel_0), 0, 0,
swapper, , 0, 0x0, IRQ { softirq_id = 1 [run_timer_softirq+0x0/0x218] }
Basically every timer irq is like this. It seems like it must be something
with the trace clock being off. Like the clock is incrementing in 1 ms ticks
during the timer soft irq and the sub-ms granularity in the timer is wrong.
The events between irq_entry and softirq_entry should be moved forward almost 1
ms, so that the time between softirq_entry and timer_set is something in the
microsecond range.
****************************************************************************************
Note: If the reader of this message is not the intended recipient, or an
employee or agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination, distribution or
copying of this communication is strictly prohibited. If you have received this
communication in error, please notify us immediately by replying to the message
and deleting it from your computer. Thank you.
****************************************************************************************
_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev