Frederic Weisbecker
5b058bcde9
tracing/function-graph-tracer: trace the idle tasks
When the function graph tracer is activated, it iterates over the task_list
to allocate a stack to store the return addresses.
But the per cpu idle tasks are not iterated by using
do_each_thread / while_each_thread.
So we have to iterate on them manually.
This fixes somes weirdness in the traces and many losses of traces.
Examples on two cpus:
0) Xorg-4287 | 2.906 us | }
0) Xorg-4287 | 3.965 us | }
0) Xorg-4287 | 5.302 us | }
------------------------------------------
0) Xorg-4287 => <idle>-0
------------------------------------------
0) <idle>-0 | 2.861 us | }
0) <idle>-0 | 0.526 us | set_normalized_timespec();
0) <idle>-0 | 7.201 us | }
0) <idle>-0 | 8.214 us | }
0) <idle>-0 | | clockevents_program_event() {
0) <idle>-0 | | lapic_next_event() {
0) <idle>-0 | 0.510 us | native_apic_mem_write();
0) <idle>-0 | 1.546 us | }
0) <idle>-0 | 2.583 us | }
0) <idle>-0 | + 12.435 us | }
0) <idle>-0 | + 13.470 us | }
0) <idle>-0 | 0.608 us | _spin_unlock_irqrestore();
0) <idle>-0 | + 23.270 us | }
0) <idle>-0 | + 24.336 us | }
0) <idle>-0 | + 25.417 us | }
0) <idle>-0 | 0.593 us | _spin_unlock();
0) <idle>-0 | + 41.869 us | }
0) <idle>-0 | + 42.906 us | }
0) <idle>-0 | + 95.035 us | }
0) <idle>-0 | 0.540 us | menu_reflect();
0) <idle>-0 | ! 100.404 us | }
0) <idle>-0 | 0.564 us | mce_idle_callback();
0) <idle>-0 | | enter_idle() {
0) <idle>-0 | 0.526 us | mce_idle_callback();
0) <idle>-0 | 1.757 us | }
0) <idle>-0 | | cpuidle_idle_call() {
0) <idle>-0 | | menu_select() {
0) <idle>-0 | 0.525 us | pm_qos_requirement();
0) <idle>-0 | 0.518 us | tick_nohz_get_sleep_length();
0) <idle>-0 | 2.621 us | }
[...]
1) <idle>-0 | 0.518 us | touch_softlockup_watchdog();
1) <idle>-0 | + 14.355 us | }
1) <idle>-0 | + 22.840 us | }
1) <idle>-0 | + 25.949 us | }
1) <idle>-0 | | handle_irq() {
1) <idle>-0 | 0.511 us | irq_to_desc();
1) <idle>-0 | | handle_edge_irq() {
1) <idle>-0 | 0.638 us | _spin_lock();
1) <idle>-0 | | ack_apic_edge() {
1) <idle>-0 | 0.510 us | irq_to_desc();
1) <idle>-0 | | move_native_irq() {
1) <idle>-0 | 0.510 us | irq_to_desc();
1) <idle>-0 | 1.532 us | }
1) <idle>-0 | 0.511 us | native_apic_mem_write();
------------------------------------------
1) <idle>-0 => cat-5073
------------------------------------------
1) cat-5073 | 3.731 us | }
1) cat-5073 | | run_local_timers() {
1) cat-5073 | 0.533 us | hrtimer_run_queues();
1) cat-5073 | | raise_softirq() {
1) cat-5073 | | __raise_softirq_irqoff() {
1) cat-5073 | | /* nr: 1 */
1) cat-5073 | 2.718 us | }
1) cat-5073 | 3.814 us | }
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-02-17 19:20:17 +01:00
..
2009-02-04 14:54:56 +01:00
2009-02-07 01:34:56 -05:00
2009-01-30 22:35:29 +01:00
2009-02-17 19:20:17 +01:00
2009-01-14 14:15:19 +01:00
2009-02-08 10:00:26 -08:00
2009-01-04 15:14:42 -05:00
2008-12-09 02:27:41 -05:00
2009-01-04 15:14:41 -05:00
2009-01-04 15:14:42 -05:00
2009-01-04 15:14:42 -05:00
2008-06-27 18:09:16 +02:00
2009-01-14 14:15:19 +01:00
2008-10-20 08:52:38 -07:00
2008-11-12 17:17:16 -08:00
2009-02-11 14:25:36 -08:00
2009-01-06 15:59:13 -08:00
2008-10-20 08:52:34 -07:00
2009-01-07 11:36:14 -08:00
2009-01-19 02:44:00 +01:00
2008-11-14 10:39:23 +11:00
2009-01-09 13:59:25 -08:00
2008-12-18 13:54:01 +01:00
2009-01-21 18:51:53 +09:00
2008-10-16 11:21:30 -07:00
2009-01-14 14:15:19 +01:00
2009-02-05 13:04:33 +01:00
2008-12-30 16:10:19 -08:00
2009-02-11 08:24:32 -08:00
2008-10-30 11:38:45 -07:00
2008-11-14 10:39:19 +11:00
2009-01-14 14:15:31 +01:00
2009-01-30 22:35:34 +01:00
2009-02-05 13:04:33 +01:00
2009-01-14 21:38:20 +01:00
2008-10-20 08:52:34 -07:00
2008-07-28 14:37:38 +02:00
2008-12-25 09:31:28 +01:00
2009-01-14 14:15:20 +01:00
2008-10-06 13:50:59 -05:00
2009-01-06 15:59:27 -08:00
2009-01-16 14:32:17 -05:00
2009-01-06 10:44:31 -08:00
2008-11-16 09:01:36 +01:00
2008-12-10 08:01:54 -08:00
2008-08-13 12:55:10 +02:00
2008-10-20 15:43:10 +02:00
2008-12-30 16:10:19 -08:00
2009-01-14 09:42:11 -08:00
2008-11-16 09:52:03 +01:00
2009-02-02 19:17:55 -08:00
2008-11-24 10:00:28 +01:00
2008-11-26 08:22:50 +01:00
2009-01-08 08:31:02 -08:00
2008-11-24 18:57:41 -05:00
2009-01-06 15:59:12 -08:00
2008-10-23 12:09:00 -07:00
2008-09-02 19:21:38 -07:00
2009-01-08 08:31:12 -08:00
2008-09-02 19:21:40 -07:00
2009-02-11 14:04:21 +01:00
2009-01-14 14:15:20 +01:00
2009-01-14 14:15:29 +01:00
2009-02-10 00:50:37 +01:00
2009-01-14 14:15:29 +01:00
2009-01-14 11:26:40 +01:00
2009-01-05 10:18:08 +01:00
2008-12-18 21:56:04 +01:00
2009-01-05 10:18:08 +01:00
2009-01-07 23:36:25 +01:00
2008-12-18 21:56:04 +01:00
2009-01-14 11:26:40 +01:00
2009-01-18 20:29:35 +01:00
2009-01-08 08:31:05 -08:00
2009-01-15 16:39:38 -08:00
2008-07-21 21:55:02 -07:00
2008-09-05 21:35:13 -07:00
2008-12-31 09:53:21 +01:00
2009-01-06 11:07:15 +01:00
2008-11-24 17:52:22 +01:00
2009-01-11 02:40:32 +01:00
2009-02-11 14:43:35 +01:00
2008-11-05 10:30:14 +01:00
2008-10-22 10:01:52 +02:00
2009-02-01 10:49:52 +01:00
2009-02-05 13:04:33 +01:00
2009-02-11 08:25:06 -08:00
2008-08-05 14:33:47 -07:00
2009-02-05 13:04:33 +01:00
2009-01-30 18:31:08 +01:00
2009-01-03 12:04:39 -08:00
2009-01-14 11:48:07 +01:00
2008-08-13 13:56:51 +02:00
2008-12-25 11:44:43 +01:00
2009-01-05 08:40:14 +10:30
2009-01-14 14:15:16 +01:00
2009-02-05 12:56:47 -08:00
2008-10-30 18:30:09 +11:00
2009-02-11 14:25:35 -08:00
2009-01-01 10:12:28 +10:30
2009-01-06 15:59:20 -08:00
2009-01-14 14:15:18 +01:00
2009-01-14 14:15:29 +01:00
2008-11-16 09:52:03 +01:00
2009-01-06 15:59:09 -08:00
2009-01-14 14:15:26 +01:00
2009-01-12 16:04:37 +01:00
2008-11-24 18:57:41 -05:00
2009-02-13 08:07:40 -08:00
2008-10-16 11:21:47 -07:00
2008-08-23 12:14:12 -07:00
2009-02-05 12:56:48 -08:00
2009-01-19 22:36:07 +01:00