tick_sched_timer taking much time on arm9/3.10-rt?

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

 



Hello,

the tests were done on a 450 MHz ARM9 (Freescale i.MX28) with
        while :; do hackbench; done
        for i in $(seq -w 1 20); do cyclictest -m -n -p99 -l100000 -h800 -q > /tmp/bench_$i.hist; done
on 3.10.27-rt25.

The first diagram is what I got with NO_HZ + NO_HZ_IDLE, the second and third
is HZ_PERIODIC + !NO_HZ. On the first diagram you can clearly see two
mountains, with the smaller one being more or less a small copy of the
bigger. On the second diagram this effect isn't that clear, but still it's
there; the third shows it again more clearly. (The first was taken on an
earlier kernel version, but I saw the same effect on 3.10.27-rt25, just
didn't keep the histograms.)

I used the default interval for cyclictest, i.e. 1000 us. So with
HZ=100 there expire 10 timers in cyclictest per jiffie update. In 3 of
20 histograms I see this effect with the two mountains. One of them
is the 2nd diagram in the attachment, the others are similar. The two
peeks are at:

        22161 samples @ [131, 135] us
         1963 samples @ [220, 224] us

This corresponds approximately to the 1:10 ratio between cyclictest
timers and jiffie updates.

Increasing HZ to 500 (and so 1:2 ratio between jiffie updates and timer
expiries) the two mountains are approximately of equal height, peeks at:

        13025 samples @ [132, 136] us
        15007 samples @ [230, 234] us

see third diagram. The time between the peeks seems to be more or less
identical, so that it doesn't scale with HZ. But the height of the
mountains (i.e. the count) roughly matches the 1:2 ratio.

The explanation I have that not all histograms show this effect---they
show just one such mountain with at most very few cycles with bigger
times---is that it only happens when the jiffies update and the
cyclictest timer expiry happen concurrently enough. The phase
shift between jiffie update and cyclictest timer keeps stable over a
long time because HZ is a divider of the cyclictest frequency. So it
seems reasonable that you either get a smaller mountain with a size
corresponding to HZ or no 2nd mountain at all.

I created a trace with cyclictest -b (and a kernel built with ftrace on,
so the numbers are bigger) and the relevant section is available below,
(tell me if you want to see more context). What you can see is that
after the irq corresponding to cyclictest's timer expiry the following
things happen apart from the normal schedule stuff:

  tick_sched_timer taking 604 us
  another irq triggers taking 261 us

I was surprised to see tick_sched_timer taking so much time, but I fail
to see something pathological in the trace (apart from the long time of
course). Also I expected an ARM9 with 450 MHz to show better latencies.

Comparing with today's measurement on the i.MX27 (ARM9, 400 MHz) in the
OSADL lab
(https://www.osadl.org/Latency-plot-of-system-in-rack-2-slot.qa-latencyplot-r2s1.0.html,
01/29/14 13:23:12) the first two peeks have approximately the same
distance as on my i.MX28. Then the difference is I don't have latencies
that low, it starts at ~80 us for me, but at ~50 on the system in the
test lab. But maybe this is not a valid comparison as the i.MX27 runs
2.6.33-rt which is very different from 3.10-rt.

Did someone else see similar results? As I don't see the effect on all
histograms, maybe you just tested once for a long time and were lucky
not to hit this case? Are you less surprised or do you see the culprit
somewhere else? Do you have further debugging ideas?

Thanks for your time
Uwe
	
cyclicte-623     0....1.. 19616215us+: SyS_clock_nanosleep <-ret_fast_syscall
cyclicte-623     0....1.. 19616223us+: clockid_to_kclock <-SyS_clock_nanosleep
cyclicte-623     0....1.. 19616230us+: common_nsleep <-SyS_clock_nanosleep
cyclicte-623     0....1.. 19616236us+: hrtimer_nanosleep <-common_nsleep
cyclicte-623     0....1.. 19616242us+: hrtimer_init <-hrtimer_nanosleep
cyclicte-623     0....1.. 19616250us+: ktime_add_safe <-hrtimer_nanosleep
cyclicte-623     0....1.. 19616256us+: do_nanosleep <-hrtimer_nanosleep
cyclicte-623     0....1.. 19616263us+: hrtimer_start_range_ns <-do_nanosleep
cyclicte-623     0....1.. 19616268us+: __hrtimer_start_range_ns <-hrtimer_start_range_ns
cyclicte-623     0d...1.. 19616274us+: add_preempt_count <-__hrtimer_start_range_ns
cyclicte-623     0d...2.. 19616280us+: ktime_get <-__hrtimer_start_range_ns
cyclicte-623     0d...2.. 19616287us+: clocksource_mmio_readl_down <-ktime_get
cyclicte-623     0d...2.. 19616295us+: enqueue_hrtimer <-__hrtimer_start_range_ns
cyclicte-623     0d...2.. 19616302us+: hrtimer_reprogram <-__hrtimer_start_range_ns
cyclicte-623     0d...2.. 19616309us+: tick_program_event <-hrtimer_reprogram
cyclicte-623     0d...2.. 19616314us+: clockevents_program_event <-tick_program_event
cyclicte-623     0d...2.. 19616321us+: ktime_get <-clockevents_program_event
cyclicte-623     0d...2.. 19616327us+: clocksource_mmio_readl_down <-ktime_get
cyclicte-623     0d...4.. 19616340us+: add_preempt_count <-ring_buffer_lock_reserve
cyclicte-623     0d...5.. 19616346us+: sub_preempt_count <-ring_buffer_lock_reserve

---------------------- cyclictest sets up the next wakeup and schedules
cyclicte-623     0d...1.. 19616351us+: clockevents_program_event: delta = 487041, force = 0
cyclicte-623     0d...4.. 19616366us+: add_preempt_count <-ring_buffer_lock_reserve
cyclicte-623     0d...5.. 19616372us+: sub_preempt_count <-ring_buffer_lock_reserve
cyclicte-623     0d...1.. 19616376us+: clockevents_program_event: delta = 487041, clc = 11688
cyclicte-623     0d...2.. 19616387us+: timrotv2_set_next_event <-clockevents_program_event
cyclicte-623     0....2.. 19616394us+: sub_preempt_count <-__hrtimer_start_range_ns
cyclicte-623     0....1.. 19616400us+: schedule <-do_nanosleep
cyclicte-623     0....1.. 19616407us+: __schedule <-schedule
cyclicte-623     0....1.. 19616413us+: add_preempt_count <-__schedule
cyclicte-623     0....2.. 19616419us+: rcu_note_context_switch <-__schedule
cyclicte-623     0d...2.. 19616426us+: add_preempt_count <-__schedule
cyclicte-623     0d...3.. 19616432us+: deactivate_task <-__schedule
cyclicte-623     0d...3.. 19616438us+: dequeue_task <-deactivate_task
cyclicte-623     0d...3.. 19616443us+: update_rq_clock <-dequeue_task
cyclicte-623     0d...3.. 19616451us+: dequeue_task_rt <-dequeue_task
cyclicte-623     0d...3.. 19616457us+: update_curr_rt <-dequeue_task_rt
cyclicte-623     0d...3.. 19616463us+: cpuacct_charge <-update_curr_rt
cyclicte-623     0d...3.. 19616469us+: __rcu_read_lock <-cpuacct_charge
cyclicte-623     0d...3.. 19616476us+: __rcu_read_unlock <-cpuacct_charge
cyclicte-623     0d...3.. 19616483us+: add_preempt_count <-update_curr_rt
cyclicte-623     0d...4.. 19616489us+: sub_preempt_count <-update_curr_rt
cyclicte-623     0d...3.. 19616495us+: dequeue_rt_stack <-dequeue_task_rt
cyclicte-623     0d...3.. 19616502us+: put_prev_task_rt <-__schedule
cyclicte-623     0d...3.. 19616508us+: update_curr_rt <-put_prev_task_rt
cyclicte-623     0d...3.. 19616515us+: pick_next_task_stop <-__schedule
cyclicte-623     0d...3.. 19616520us+: pick_next_task_rt <-__schedule
cyclicte-623     0d...3.. 19616537us+: atomic_notifier_call_chain <-__switch_to
cyclicte-623     0d...3.. 19616551us+: __atomic_notifier_call_chain <-atomic_notifier_call_chain
cyclicte-623     0d...3.. 19616558us+: __rcu_read_lock <-__atomic_notifier_call_chain
cyclicte-623     0d...3.. 19616565us+: notifier_call_chain <-__atomic_notifier_call_chain
cyclicte-623     0d...3.. 19616571us+: __rcu_read_unlock <-__atomic_notifier_call_chain
---------------------- 

irq/215--41      0d...3.. 19616578us+: finish_task_switch.constprop.87 <-__schedule
irq/215--41      0....3.. 19616585us+: sub_preempt_count <-finish_task_switch.constprop.87
irq/215--41      0....2.. 19616591us+: sub_preempt_count <-__schedule
irq/215--41      0....1.. 19616598us+: kthread_should_stop <-irq_thread
irq/215--41      0....1.. 19616605us+: irq_forced_thread_fn <-irq_thread
irq/215--41      0....1.. 19616611us+: local_bh_disable <-irq_forced_thread_fn
irq/215--41      0....1.. 19616616us+: mxs_auart_irq_handle <-irq_forced_thread_fn
irq/215--41      0....1.. 19616624us+: mxs_auart_tx_chars <-mxs_auart_irq_handle
irq/215--41      0....1.. 19616644us+: uart_write_wakeup <-mxs_auart_tx_chars
irq/215--41      0....1.. 19616651us+: tty_wakeup <-uart_write_wakeup
irq/215--41      0....1.. 19616657us+: __wake_up <-tty_wakeup
irq/215--41      0....1.. 19616663us+: rt_spin_lock <-__wake_up
irq/215--41      0....1.. 19616669us+: rt_spin_lock_slowlock <-rt_spin_lock
irq/215--41      0....1.. 19616675us+: add_preempt_count <-rt_spin_lock_slowlock
irq/215--41      0....2.. 19616682us+: __try_to_take_rt_mutex <-rt_spin_lock_slowlock
irq/215--41      0....2.. 19616689us+: sub_preempt_count <-rt_spin_lock_slowlock
irq/215--41      0....1.. 19616696us+: __wake_up_common <-__wake_up
irq/215--41      0....1.. 19616702us+: default_wake_function <-__wake_up_common
irq/215--41      0....1.. 19616707us+: try_to_wake_up <-default_wake_function
irq/215--41      0d...1.. 19616713us+: add_preempt_count <-try_to_wake_up
irq/215--41      0....2.. 19616720us+: sub_preempt_count <-try_to_wake_up
irq/215--41      0....1.. 19616727us+: rt_spin_unlock <-__wake_up
irq/215--41      0....1.. 19616733us+: rt_spin_lock_slowunlock <-rt_spin_unlock
irq/215--41      0....1.. 19616738us+: add_preempt_count <-rt_spin_lock_slowunlock
irq/215--41      0....2.. 19616744us+: __rt_spin_lock_slowunlock <-rt_spin_lock_slowunlock
irq/215--41      0....2.. 19616750us+: sub_preempt_count <-__rt_spin_lock_slowunlock
irq/215--41      0....1.. 19616758us+: irq_finalize_oneshot <-irq_forced_thread_fn
irq/215--41      0d...1.. 19616764us+: add_preempt_count <-irq_finalize_oneshot
irq/215--41      0d...2.. 19616771us+: unmask_irq <-irq_finalize_oneshot
irq/215--41      0d...2.. 19616778us+: icoll_unmask_irq <-unmask_irq
irq/215--41      0....2.. 19616785us+: sub_preempt_count <-irq_finalize_oneshot
irq/215--41      0....1.. 19616792us+: local_bh_enable <-irq_forced_thread_fn
irq/215--41      0....1.. 19616799us+: note_interrupt <-irq_thread
irq/215--41      0....1.. 19616807us+: add_interrupt_randomness <-irq_thread
irq/215--41      0....1.. 19616813us+: read_current_timer <-add_interrupt_randomness
irq/215--41      0....1.. 19616822us+: wake_threads_waitq <-irq_thread
irq/215--41      0....1.. 19616828us+: kthread_should_stop <-irq_thread
irq/215--41      0....1.. 19616833us+: schedule <-irq_thread
irq/215--41      0....1.. 19616840us+: __schedule <-schedule
irq/215--41      0....1.. 19616846us+: add_preempt_count <-__schedule
irq/215--41      0....2.. 19616853us+: rcu_note_context_switch <-__schedule
irq/215--41      0d...2.. 19616859us+: add_preempt_count <-__schedule
irq/215--41      0d...3.. 19616864us+: deactivate_task <-__schedule
irq/215--41      0d...3.. 19616870us+: dequeue_task <-deactivate_task
irq/215--41      0d...3.. 19616876us+: update_rq_clock <-dequeue_task
irq/215--41      0d...3.. 19616883us+: dequeue_task_rt <-dequeue_task
irq/215--41      0d...3.. 19616889us+: update_curr_rt <-dequeue_task_rt
irq/215--41      0d...3.. 19616895us+: cpuacct_charge <-update_curr_rt
irq/215--41      0d...3.. 19616900us+: __rcu_read_lock <-cpuacct_charge
irq/215--41      0d...3.. 19616906us+: __rcu_read_unlock <-cpuacct_charge
irq/215--41      0d...3.. 19616912us+: add_preempt_count <-update_curr_rt
irq/215--41      0d...4.. 19616918us+: sub_preempt_count <-update_curr_rt
irq/215--41      0d...3.. 19616924us+: dequeue_rt_stack <-dequeue_task_rt
irq/215--41      0d...3.. 19616931us+: put_prev_task_rt <-__schedule
irq/215--41      0d...3.. 19616937us+: update_curr_rt <-put_prev_task_rt
irq/215--41      0d...3.. 19616942us+: pick_next_task_fair <-__schedule
irq/215--41      0d...3.. 19616949us+: clear_buddies <-pick_next_task_fair
irq/215--41      0d...3.. 19616956us+: __dequeue_entity <-pick_next_task_fair
irq/215--41      0d...3.. 19616963us+: clear_buddies <-pick_next_task_fair
irq/215--41      0d...3.. 19616969us+: __dequeue_entity <-pick_next_task_fair
irq/215--41      0d...3.. 19616976us+: clear_buddies <-pick_next_task_fair
irq/215--41      0d...3.. 19616981us+: __dequeue_entity <-pick_next_task_fair
irq/215--41      0d...3.. 19616988us+: clear_buddies <-pick_next_task_fair
irq/215--41      0d...3.. 19616993us+: __dequeue_entity <-pick_next_task_fair
irq/215--41      0d...3.. 19617011us+: atomic_notifier_call_chain <-__switch_to
irq/215--41      0d...3.. 19617018us+: __atomic_notifier_call_chain <-atomic_notifier_call_chain
irq/215--41      0d...3.. 19617023us+: __rcu_read_lock <-__atomic_notifier_call_chain
irq/215--41      0d...3.. 19617029us+: notifier_call_chain <-__atomic_notifier_call_chain
irq/215--41      0d...3.. 19617035us+: __rcu_read_unlock <-__atomic_notifier_call_chain
hackbenc-536     0d...3.. 19617043us+: finish_task_switch.constprop.87 <-__schedule

----------------------- timer irq triggers
hackbenc-536     0d...3.. 19617052us+: icoll_handle_irq <-__irq_svc
hackbenc-536     0d...3.. 19617059us+: irq_find_mapping <-icoll_handle_irq
hackbenc-536     0d...3.. 19617067us+: irq_linear_revmap <-irq_find_mapping
hackbenc-536     0d...3.. 19617073us+: handle_IRQ <-icoll_handle_irq
hackbenc-536     0d...3.. 19617079us+: irq_enter <-handle_IRQ
hackbenc-536     0d...3.. 19617084us+: rcu_irq_enter <-irq_enter
hackbenc-536     0d...3.. 19617092us+: add_preempt_count <-irq_enter
hackbenc-536     0d..h3.. 19617099us+: generic_handle_irq <-handle_IRQ
hackbenc-536     0d..h3.. 19617105us+: irq_to_desc <-generic_handle_irq
hackbenc-536     0d..h3.. 19617113us+: handle_level_irq <-generic_handle_irq
hackbenc-536     0d..h3.. 19617119us+: add_preempt_count <-handle_level_irq
hackbenc-536     0d..h4.. 19617126us+: icoll_mask_irq <-handle_level_irq
hackbenc-536     0d..h4.. 19617133us+: icoll_ack_irq <-handle_level_irq
hackbenc-536     0d..h4.. 19617140us+: handle_irq_event <-handle_level_irq
hackbenc-536     0d..h4.. 19617146us+: sub_preempt_count <-handle_irq_event
hackbenc-536     0d..h3.. 19617152us+: handle_irq_event_percpu <-handle_irq_event
hackbenc-536     0d..h3.. 19617159us+: mxs_timer_interrupt <-handle_irq_event_percpu
hackbenc-536     0d..h3.. 19617166us+: hrtimer_interrupt <-mxs_timer_interrupt
hackbenc-536     0d..h3.. 19617173us+: add_preempt_count <-hrtimer_interrupt
hackbenc-536     0d..h4.. 19617179us+: ktime_get_update_offsets <-hrtimer_interrupt
hackbenc-536     0d..h4.. 19617186us+: clocksource_mmio_readl_down <-ktime_get_update_offsets

----------------------- normal wakeup
hackbenc-536     0d..h4.. 19617197us+: __run_hrtimer <-hrtimer_interrupt
hackbenc-536     0d..h4.. 19617203us+: __remove_hrtimer <-__run_hrtimer
hackbenc-536     0d..h4.. 19617211us+: sub_preempt_count <-__run_hrtimer
hackbenc-536     0d..h3.. 19617217us+: hrtimer_wakeup <-__run_hrtimer
hackbenc-536     0d..h3.. 19617223us+: wake_up_process <-hrtimer_wakeup
hackbenc-536     0d..h3.. 19617230us+: try_to_wake_up <-wake_up_process
hackbenc-536     0d..h3.. 19617236us+: add_preempt_count <-try_to_wake_up
hackbenc-536     0d..h4.. 19617242us+: add_preempt_count <-try_to_wake_up
hackbenc-536     0d..h5.. 19617248us+: activate_task <-try_to_wake_up
hackbenc-536     0d..h5.. 19617254us+: enqueue_task <-activate_task
hackbenc-536     0d..h5.. 19617260us+: update_rq_clock <-enqueue_task
hackbenc-536     0d..h5.. 19617268us+: enqueue_task_rt <-enqueue_task
hackbenc-536     0d..h5.. 19617274us+: dequeue_rt_stack <-enqueue_task_rt
hackbenc-536     0d..h5.. 19617282us+: ttwu_do_wakeup.constprop.86 <-try_to_wake_up
hackbenc-536     0d..h5.. 19617287us+: check_preempt_curr <-ttwu_do_wakeup.constprop.86
hackbenc-536     0dN.h5.. 19617299us+: sub_preempt_count <-try_to_wake_up
hackbenc-536     0dN.h4.. 19617307us+: sub_preempt_count <-try_to_wake_up
hackbenc-536     0dN.h3.. 19617314us+: add_preempt_count <-__run_hrtimer

----------------------- tick_sched_timer (update jiffies) -> 604 us
hackbenc-536     0dN.h4.. 19617321us+: __run_hrtimer <-hrtimer_interrupt
hackbenc-536     0dN.h4.. 19617327us+: __remove_hrtimer <-__run_hrtimer
hackbenc-536     0dN.h4.. 19617336us+: sub_preempt_count <-__run_hrtimer
hackbenc-536     0dN.h3.. 19617343us+: tick_sched_timer <-__run_hrtimer
hackbenc-536     0dN.h3.. 19617350us+: ktime_get <-tick_sched_timer
hackbenc-536     0dN.h3.. 19617357us+: clocksource_mmio_readl_down <-ktime_get
hackbenc-536     0dN.h3.. 19617366us+: tick_sched_do_timer <-tick_sched_timer
hackbenc-536     0dN.h3.. 19617373us+: tick_do_update_jiffies64 <-tick_sched_do_timer
hackbenc-536     0dN.h3.. 19617380us+: add_preempt_count <-tick_do_update_jiffies64
hackbenc-536     0dN.h4.. 19617386us+: add_preempt_count <-tick_do_update_jiffies64
hackbenc-536     0dN.h5.. 19617394us+: do_timer <-tick_do_update_jiffies64
hackbenc-536     0dN.h5.. 19617401us+: add_preempt_count <-do_timer
hackbenc-536     0dN.h6.. 19617408us+: clocksource_mmio_readl_down <-do_timer
hackbenc-536     0dN.h6.. 19617416us+: ntp_tick_length <-do_timer
hackbenc-536     0dN.h6.. 19617427us+: ntp_tick_length <-do_timer
hackbenc-536     0dN.h6.. 19617436us+: add_preempt_count <-do_timer
hackbenc-536     0dN.h7.. 19617444us+: update_pvclock_gtod.constprop.11 <-do_timer
hackbenc-536     0dN.h7.. 19617450us+: raw_notifier_call_chain <-update_pvclock_gtod.constprop.11
hackbenc-536     0dN.h7.. 19617457us+: __raw_notifier_call_chain <-raw_notifier_call_chain
hackbenc-536     0dN.h7.. 19617464us+: notifier_call_chain <-__raw_notifier_call_chain
hackbenc-536     0dN.h7.. 19617471us+: sub_preempt_count <-do_timer
hackbenc-536     0dN.h6.. 19617477us+: sub_preempt_count <-do_timer
hackbenc-536     0dN.h5.. 19617485us+: calc_global_load <-do_timer
hackbenc-536     0dN.h5.. 19617492us+: sub_preempt_count <-tick_do_update_jiffies64
hackbenc-536     0dN.h4.. 19617499us+: sub_preempt_count <-tick_do_update_jiffies64
hackbenc-536     0dN.h3.. 19617505us+: tick_sched_handle <-tick_sched_timer
hackbenc-536     0dN.h3.. 19617512us+: update_process_times <-tick_sched_handle
hackbenc-536     0dN.h3.. 19617519us+: account_process_tick <-update_process_times
hackbenc-536     0dN.h3.. 19617525us+: account_system_time <-account_process_tick
hackbenc-536     0dN.h3.. 19617533us+: in_serving_softirq <-account_system_time
hackbenc-536     0dN.h3.. 19617541us+: cpuacct_account_field <-account_system_time
hackbenc-536     0dN.h3.. 19617547us+: __rcu_read_lock <-cpuacct_account_field
hackbenc-536     0dN.h3.. 19617565us+: __rcu_read_unlock <-cpuacct_account_field
hackbenc-536     0dN.h3.. 19617575us+: acct_account_cputime <-account_system_time
hackbenc-536     0dN.h3.. 19617583us+: __acct_update_integrals <-acct_account_cputime
hackbenc-536     0dN.h3.. 19617591us+: jiffies_to_timeval <-__acct_update_integrals
hackbenc-536     0dN.h3.. 19617600us+: scheduler_tick <-update_process_times
hackbenc-536     0dN.h3.. 19617606us+: add_preempt_count <-scheduler_tick
hackbenc-536     0dN.h4.. 19617613us+: update_rq_clock <-scheduler_tick
hackbenc-536     0dN.h4.. 19617619us+: __update_cpu_load <-scheduler_tick
hackbenc-536     0dN.h4.. 19617628us+: task_tick_fair <-scheduler_tick
hackbenc-536     0dN.h4.. 19617635us+: update_curr <-task_tick_fair
hackbenc-536     0dN.h4.. 19617642us+: update_min_vruntime <-update_curr
hackbenc-536     0dN.h4.. 19617652us+: cpuacct_charge <-update_curr
hackbenc-536     0dN.h4.. 19617659us+: __rcu_read_lock <-cpuacct_charge
hackbenc-536     0dN.h4.. 19617666us+: __rcu_read_unlock <-cpuacct_charge
hackbenc-536     0dN.h4.. 19617673us+: update_cfs_shares <-task_tick_fair
hackbenc-536     0dN.h4.. 19617681us+: sched_slice <-task_tick_fair
hackbenc-536     0dN.h4.. 19617688us+: calc_delta_mine <-sched_slice
hackbenc-536     0dN.h4.. 19617695us+: calc_delta_mine <-sched_slice
hackbenc-536     0dN.h4.. 19617702us+: calc_delta_mine <-sched_slice
hackbenc-536     0dN.h4.. 19617709us+: calc_delta_mine <-sched_slice
hackbenc-536     0dN.h4.. 19617716us+: resched_task_lazy <-task_tick_fair
hackbenc-536     0dNLh4.. 19617722us+: clear_buddies <-task_tick_fair
hackbenc-536     0dNLh4.. 19617729us+: update_curr <-task_tick_fair
hackbenc-536     0dNLh4.. 19617735us+: update_min_vruntime <-update_curr
hackbenc-536     0dNLh4.. 19617742us+: update_cfs_shares <-task_tick_fair
hackbenc-536     0dNLh4.. 19617749us+: update_curr <-task_tick_fair
hackbenc-536     0dNLh4.. 19617756us+: update_min_vruntime <-update_curr
hackbenc-536     0dNLh4.. 19617762us+: update_cfs_shares <-task_tick_fair
hackbenc-536     0dNLh4.. 19617769us+: sched_slice <-task_tick_fair
hackbenc-536     0dNLh4.. 19617775us+: calc_delta_mine <-sched_slice
hackbenc-536     0dNLh4.. 19617781us+: calc_delta_mine <-sched_slice
hackbenc-536     0dNLh4.. 19617788us+: update_curr <-task_tick_fair
hackbenc-536     0dNLh4.. 19617794us+: update_min_vruntime <-update_curr
hackbenc-536     0dNLh4.. 19617800us+: update_cfs_shares <-task_tick_fair
hackbenc-536     0dNLh4.. 19617807us+: sub_preempt_count <-scheduler_tick
hackbenc-536     0dNLh3.. 19617815us+: run_local_timers <-update_process_times
hackbenc-536     0dNLh3.. 19617821us+: hrtimer_run_queues <-run_local_timers
hackbenc-536     0dNLh3.. 19617829us+: raise_softirq <-run_local_timers
hackbenc-536     0dNLh3.. 19617836us+: raise_softirq_irqoff <-raise_softirq
hackbenc-536     0dNLh3.. 19617842us+: do_raise_softirq_irqoff <-raise_softirq_irqoff
hackbenc-536     0dNLh3.. 19617851us+: rcu_check_callbacks <-update_process_times
hackbenc-536     0dNLh3.. 19617862us+: cpu_needs_another_gp <-rcu_check_callbacks
hackbenc-536     0dNLh3.. 19617871us+: cpu_needs_another_gp <-rcu_check_callbacks
hackbenc-536     0dNLh3.. 19617879us+: cpu_needs_another_gp <-rcu_check_callbacks
hackbenc-536     0dNLh3.. 19617887us+: run_posix_cpu_timers <-update_process_times
hackbenc-536     0dNLh3.. 19617895us+: hrtimer_forward <-tick_sched_timer
hackbenc-536     0dNLh3.. 19617903us+: ktime_add_safe <-hrtimer_forward
hackbenc-536     0dNLh3.. 19617911us+: ktime_add_safe <-hrtimer_forward
hackbenc-536     0dNLh3.. 19617919us+: add_preempt_count <-__run_hrtimer
hackbenc-536     0dNLh4.. 19617925us+: enqueue_hrtimer <-__run_hrtimer

-------------------------------------- back to normal scheduling
hackbenc-536     0dNLh4.. 19617937us+: sub_preempt_count <-hrtimer_interrupt
hackbenc-536     0dNLh3.. 19617944us+: tick_program_event <-hrtimer_interrupt
hackbenc-536     0dNLh3.. 19617950us+: clockevents_program_event <-tick_program_event
hackbenc-536     0dNLh3.. 19617957us+: ktime_get <-clockevents_program_event
hackbenc-536     0dNLh3.. 19617964us+: clocksource_mmio_readl_down <-ktime_get
hackbenc-536     0dNLh5.. 19617984us+: add_preempt_count <-ring_buffer_lock_reserve
hackbenc-536     0dNLh6.. 19617992us+: sub_preempt_count <-ring_buffer_lock_reserve
hackbenc-536     0dNLh2.. 19617996us+: clockevents_program_event: delta = 8986933, force = 0
hackbenc-536     0dNLh5.. 19618018us+: add_preempt_count <-ring_buffer_lock_reserve
hackbenc-536     0dNLh6.. 19618025us+: sub_preempt_count <-ring_buffer_lock_reserve
hackbenc-536     0dNLh2.. 19618029us+: clockevents_program_event: delta = 8986933, clc = 215686
hackbenc-536     0dNLh3.. 19618043us+: timrotv2_set_next_event <-clockevents_program_event
hackbenc-536     0dNLh3.. 19618052us+: note_interrupt <-handle_irq_event_percpu
hackbenc-536     0dNLh3.. 19618061us+: add_preempt_count <-handle_irq_event
hackbenc-536     0dNLh4.. 19618070us+: cond_unmask_irq <-handle_level_irq
hackbenc-536     0dNLh4.. 19618077us+: icoll_unmask_irq <-cond_unmask_irq
hackbenc-536     0dNLh4.. 19618084us+: sub_preempt_count <-handle_level_irq
hackbenc-536     0dNLh3.. 19618091us+: irq_exit <-handle_IRQ
hackbenc-536     0dNLh3.. 19618097us+: sub_preempt_count <-irq_exit
hackbenc-536     0dNL.3.. 19618105us+: wakeup_softirqd <-irq_exit
hackbenc-536     0dNL.3.. 19618111us+: wake_up_process <-wakeup_softirqd
hackbenc-536     0dNL.3.. 19618117us+: try_to_wake_up <-wake_up_process
hackbenc-536     0dNL.3.. 19618123us+: add_preempt_count <-try_to_wake_up
hackbenc-536     0dNL.4.. 19618129us+: add_preempt_count <-try_to_wake_up
hackbenc-536     0dNL.5.. 19618136us+: activate_task <-try_to_wake_up
hackbenc-536     0dNL.5.. 19618142us+: enqueue_task <-activate_task
hackbenc-536     0dNL.5.. 19618148us+: update_rq_clock <-enqueue_task
hackbenc-536     0dNL.5.. 19618155us+: enqueue_task_rt <-enqueue_task
hackbenc-536     0dNL.5.. 19618161us+: dequeue_rt_stack <-enqueue_task_rt
hackbenc-536     0dNL.5.. 19618169us+: ttwu_do_wakeup.constprop.86 <-try_to_wake_up
hackbenc-536     0dNL.5.. 19618176us+: check_preempt_curr <-ttwu_do_wakeup.constprop.86
hackbenc-536     0dNL.5.. 19618188us+: sub_preempt_count <-try_to_wake_up
hackbenc-536     0dNL.4.. 19618195us+: sub_preempt_count <-try_to_wake_up
hackbenc-536     0dNL.3.. 19618202us+: idle_cpu <-irq_exit
hackbenc-536     0dNL.3.. 19618209us+: rcu_irq_exit <-irq_exit

----------------------- another irq -> 261us
hackbenc-536     0dNL.3.. 19618219us+: icoll_handle_irq <-__irq_svc
hackbenc-536     0dNL.3.. 19618227us+: irq_find_mapping <-icoll_handle_irq
hackbenc-536     0dNL.3.. 19618233us+: irq_linear_revmap <-irq_find_mapping
hackbenc-536     0dNL.3.. 19618240us+: handle_IRQ <-icoll_handle_irq
hackbenc-536     0dNL.3.. 19618247us+: irq_enter <-handle_IRQ
hackbenc-536     0dNL.3.. 19618253us+: rcu_irq_enter <-irq_enter
hackbenc-536     0dNL.3.. 19618260us+: add_preempt_count <-irq_enter
hackbenc-536     0dNLh3.. 19618267us+: generic_handle_irq <-handle_IRQ
hackbenc-536     0dNLh3.. 19618273us+: irq_to_desc <-generic_handle_irq
hackbenc-536     0dNLh3.. 19618281us+: handle_level_irq <-generic_handle_irq
hackbenc-536     0dNLh3.. 19618288us+: add_preempt_count <-handle_level_irq
hackbenc-536     0dNLh4.. 19618295us+: icoll_mask_irq <-handle_level_irq
hackbenc-536     0dNLh4.. 19618302us+: icoll_ack_irq <-handle_level_irq
hackbenc-536     0dNLh4.. 19618310us+: handle_irq_event <-handle_level_irq
hackbenc-536     0dNLh4.. 19618316us+: sub_preempt_count <-handle_irq_event
hackbenc-536     0dNLh3.. 19618324us+: handle_irq_event_percpu <-handle_irq_event
hackbenc-536     0dNLh3.. 19618331us+: irq_default_primary_handler <-handle_irq_event_percpu
hackbenc-536     0dNLh3.. 19618339us+: wake_up_process <-handle_irq_event_percpu
hackbenc-536     0dNLh3.. 19618347us+: try_to_wake_up <-wake_up_process
hackbenc-536     0dNLh3.. 19618353us+: add_preempt_count <-try_to_wake_up
hackbenc-536     0dNLh4.. 19618360us+: add_preempt_count <-try_to_wake_up
hackbenc-536     0dNLh5.. 19618366us+: activate_task <-try_to_wake_up
hackbenc-536     0dNLh5.. 19618372us+: enqueue_task <-activate_task
hackbenc-536     0dNLh5.. 19618378us+: update_rq_clock <-enqueue_task
hackbenc-536     0dNLh5.. 19618384us+: enqueue_task_rt <-enqueue_task
hackbenc-536     0dNLh5.. 19618391us+: dequeue_rt_stack <-enqueue_task_rt
hackbenc-536     0dNLh5.. 19618398us+: ttwu_do_wakeup.constprop.86 <-try_to_wake_up
hackbenc-536     0dNLh5.. 19618405us+: check_preempt_curr <-ttwu_do_wakeup.constprop.86
hackbenc-536     0dNLh5.. 19618414us+: sub_preempt_count <-try_to_wake_up
hackbenc-536     0dNLh4.. 19618421us+: sub_preempt_count <-try_to_wake_up
hackbenc-536     0dNLh3.. 19618428us+: note_interrupt <-handle_irq_event_percpu
hackbenc-536     0dNLh3.. 19618436us+: add_preempt_count <-handle_irq_event
hackbenc-536     0dNLh4.. 19618442us+: cond_unmask_irq <-handle_level_irq
hackbenc-536     0dNLh4.. 19618448us+: sub_preempt_count <-handle_level_irq
hackbenc-536     0dNLh3.. 19618455us+: irq_exit <-handle_IRQ
hackbenc-536     0dNLh3.. 19618461us+: sub_preempt_count <-irq_exit
hackbenc-536     0dNL.3.. 19618468us+: wakeup_softirqd <-irq_exit
hackbenc-536     0dNL.3.. 19618473us+: idle_cpu <-irq_exit
hackbenc-536     0dNL.3.. 19618480us+: rcu_irq_exit <-irq_exit

----------------------- schedule to cyclictest
hackbenc-536     0.NL.3.. 19618488us+: sub_preempt_count <-finish_task_switch.constprop.87
hackbenc-536     0.NL.2.. 19618496us+: add_preempt_count <-finish_task_switch.constprop.87
hackbenc-536     0.NL.3.. 19618554us+: sub_preempt_count <-finish_task_switch.constprop.87
hackbenc-536     0.NL.2.. 19618579us+: sub_preempt_count <-__schedule
hackbenc-536     0.NL.1.. 19618587us+: add_preempt_count <-__schedule
hackbenc-536     0.NL.2.. 19618593us+: rcu_note_context_switch <-__schedule
hackbenc-536     0dNL.2.. 19618603us+: add_preempt_count <-__schedule
hackbenc-536     0dNL.3.. 19618610us+: update_rq_clock <-__schedule
hackbenc-536     0dNL.3.. 19618617us+: put_prev_task_fair <-__schedule
hackbenc-536     0dNL.3.. 19618623us+: update_curr <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618631us+: __enqueue_entity <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618642us+: update_curr <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618649us+: __enqueue_entity <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618656us+: update_curr <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618663us+: __enqueue_entity <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618670us+: update_curr <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618676us+: __enqueue_entity <-put_prev_task_fair
hackbenc-536     0dNL.3.. 19618683us+: pick_next_task_stop <-__schedule
hackbenc-536     0dNL.3.. 19618690us+: pick_next_task_rt <-__schedule
hackbenc-536     0d...3.. 19618714us+: atomic_notifier_call_chain <-__switch_to
hackbenc-536     0d...3.. 19618730us+: __atomic_notifier_call_chain <-atomic_notifier_call_chain
hackbenc-536     0d...3.. 19618739us+: __rcu_read_lock <-__atomic_notifier_call_chain
hackbenc-536     0d...3.. 19618746us+: notifier_call_chain <-__atomic_notifier_call_chain
hackbenc-536     0d...3.. 19618752us+: __rcu_read_unlock <-__atomic_notifier_call_chain

cyclicte-623     0d...3.. 19618760us+: finish_task_switch.constprop.87 <-__schedule
cyclicte-623     0....3.. 19618768us+: sub_preempt_count <-finish_task_switch.constprop.87
cyclicte-623     0....2.. 19618774us+: add_preempt_count <-finish_task_switch.constprop.87
cyclicte-623     0....3.. 19618810us+: sub_preempt_count <-finish_task_switch.constprop.87
cyclicte-623     0....2.. 19618833us+: sub_preempt_count <-__schedule
cyclicte-623     0....1.. 19618843us+: hrtimer_cancel <-do_nanosleep
cyclicte-623     0....1.. 19618849us+: hrtimer_try_to_cancel <-hrtimer_cancel
cyclicte-623     0d...1.. 19618855us+: add_preempt_count <-hrtimer_try_to_cancel
cyclicte-623     0....2.. 19618863us+: sub_preempt_count <-hrtimer_try_to_cancel
cyclicte-623     0....1.. 19618884us+: SyS_clock_gettime <-ret_fast_syscall
cyclicte-623     0....1.. 19618891us+: clockid_to_kclock <-SyS_clock_gettime
cyclicte-623     0....1.. 19618898us+: posix_ktime_get_ts <-SyS_clock_gettime
cyclicte-623     0....1.. 19618903us+: ktime_get_ts <-posix_ktime_get_ts
cyclicte-623     0....1.. 19618911us!: clocksource_mmio_readl_down <-ktime_get_ts
cyclicte-623     0....1.. 19619032us+: SyS_write <-ret_fast_syscall
cyclicte-623     0....1.. 19619046us+: fget_light <-SyS_write
cyclicte-623     0....1.. 19619053us+: __rcu_read_lock <-fget_light
cyclicte-623     0....1.. 19619060us+: __rcu_read_unlock <-fget_light
cyclicte-623     0....1.. 19619066us+: vfs_write <-SyS_write
cyclicte-623     0....1.. 19619073us+: rw_verify_area <-vfs_write
cyclicte-623     0....1.. 19619082us+: __sb_start_write <-vfs_write
cyclicte-623     0....1.. 19619088us+: add_preempt_count <-__sb_start_write
cyclicte-623     0....2.. 19619095us+: sub_preempt_count <-__sb_start_write
cyclicte-623     0....1.. 19619104us+: get_user_pages_fast <-tracing_mark_write
cyclicte-623     0....1.. 19619110us+: rt_down_read <-get_user_pages_fast
cyclicte-623     0....1.. 19619117us+: __rt_down_read.isra.0 <-rt_down_read
cyclicte-623     0....1.. 19619124us+: rt_mutex_lock <-__rt_down_read.isra.0
cyclicte-623     0....1.. 19619130us+: rt_mutex_slowlock <-rt_mutex_lock
cyclicte-623     0....1.. 19619135us+: add_preempt_count <-rt_mutex_slowlock
cyclicte-623     0....2.. 19619142us+: __try_to_take_rt_mutex <-rt_mutex_slowlock
cyclicte-623     0....2.. 19619150us+: sub_preempt_count <-rt_mutex_slowlock
cyclicte-623     0....1.. 19619157us+: get_user_pages <-get_user_pages_fast
cyclicte-623     0....1.. 19619164us+: __get_user_pages <-get_user_pages
cyclicte-623     0....1.. 19619171us+: __get_user_pages.part.80 <-__get_user_pages
cyclicte-623     0....1.. 19619177us+: find_extend_vma <-__get_user_pages.part.80
cyclicte-623     0....1.. 19619183us+: find_vma <-find_extend_vma
cyclicte-623     0....1.. 19619193us+: _cond_resched <-__get_user_pages.part.80
cyclicte-623     0....1.. 19619200us+: follow_page_mask <-__get_user_pages.part.80
cyclicte-623     0....1.. 19619208us+: rt_spin_lock <-follow_page_mask
cyclicte-623     0....1.. 19619215us+: rt_spin_lock_slowlock <-rt_spin_lock
cyclicte-623     0....1.. 19619221us+: add_preempt_count <-rt_spin_lock_slowlock
cyclicte-623     0....2.. 19619226us+: __try_to_take_rt_mutex <-rt_spin_lock_slowlock
cyclicte-623     0....2.. 19619232us+: sub_preempt_count <-rt_spin_lock_slowlock
cyclicte-623     0....1.. 19619239us+: vm_normal_page <-follow_page_mask
cyclicte-623     0....1.. 19619247us+: mark_page_accessed <-follow_page_mask
cyclicte-623     0....1.. 19619253us+: rt_spin_unlock <-follow_page_mask
cyclicte-623     0....1.. 19619259us+: rt_spin_lock_slowunlock <-rt_spin_unlock
cyclicte-623     0....1.. 19619264us+: add_preempt_count <-rt_spin_lock_slowunlock
cyclicte-623     0....2.. 19619270us+: __rt_spin_lock_slowunlock <-rt_spin_lock_slowunlock
cyclicte-623     0....2.. 19619276us+: sub_preempt_count <-__rt_spin_lock_slowunlock
cyclicte-623     0....1.. 19619283us+: __flush_anon_page <-__get_user_pages.part.80
cyclicte-623     0....1.. 19619314us+: flush_dcache_page <-__get_user_pages.part.80
cyclicte-623     0....1.. 19619332us+: page_mapping <-flush_dcache_page
cyclicte-623     0....1.. 19619339us+: __flush_dcache_page <-flush_dcache_page
cyclicte-623     0....1.. 19619362us+: rt_up_read <-get_user_pages_fast
cyclicte-623     0....1.. 19619380us+: rt_mutex_unlock <-rt_up_read
cyclicte-623     0....1.. 19619387us+: add_preempt_count <-rt_mutex_unlock
cyclicte-623     0....2.. 19619394us+: sub_preempt_count <-rt_mutex_unlock
cyclicte-623     0....1.. 19619402us+: pagefault_disable <-tracing_mark_write
cyclicte-623     0....2.. 19619409us+: add_preempt_count <-ring_buffer_lock_reserve
cyclicte-623     0....3.. 19619414us+: sub_preempt_count <-ring_buffer_lock_reserve
cyclicte-623     0....... 19619418us+: tracing_mark_write: hit latency threshold (2000 > 2097)
cyclicte-623     0....1.. 19619432us+: pagefault_enable <-tracing_mark_write
cyclicte-623     0....1.. 19619438us+: put_page <-tracing_mark_write
cyclicte-623     0....1.. 19619446us+: __fsnotify_parent <-vfs_write
cyclicte-623     0....1.. 19619452us+: fsnotify <-vfs_write
cyclicte-623     0....1.. 19619458us+: __srcu_read_lock <-fsnotify
cyclicte-623     0....1.. 19619464us+: add_preempt_count <-__srcu_read_lock
cyclicte-623     0....2.. 19619470us+: sub_preempt_count <-__srcu_read_lock
cyclicte-623     0....1.. 19619478us+: __srcu_read_unlock <-fsnotify
cyclicte-623     0....1.. 19619485us+: __sb_end_write <-vfs_write
cyclicte-623     0....1.. 19619491us+: add_preempt_count <-__sb_end_write
cyclicte-623     0....2.. 19619497us+: sub_preempt_count <-__sb_end_write
cyclicte-623     0....1.. 19619504us+: fput <-SyS_write
cyclicte-623     0....1.. 19619522us+: SyS_write <-ret_fast_syscall
cyclicte-623     0....1.. 19619529us+: fget_light <-SyS_write
cyclicte-623     0....1.. 19619534us+: __rcu_read_lock <-fget_light
cyclicte-623     0....1.. 19619541us+: __rcu_read_unlock <-fget_light
cyclicte-623     0....1.. 19619547us+: vfs_write <-SyS_write
cyclicte-623     0....1.. 19619554us+: rw_verify_area <-vfs_write
cyclicte-623     0....1.. 19619561us+: __sb_start_write <-vfs_write
cyclicte-623     0....1.. 19619567us+: add_preempt_count <-__sb_start_write
cyclicte-623     0....2.. 19619573us+: sub_preempt_count <-__sb_start_write
cyclicte-623     0....1.. 19619587us+: _mutex_lock <-rb_simple_write
cyclicte-623     0....1.. 19619593us+: rt_mutex_lock <-_mutex_lock
cyclicte-623     0....1.. 19619599us+: rt_mutex_slowlock <-rt_mutex_lock
cyclicte-623     0....1.. 19619605us+: add_preempt_count <-rt_mutex_slowlock
cyclicte-623     0....2.. 19619611us+: __try_to_take_rt_mutex <-rt_mutex_slowlock
cyclicte-623     0....2.. 19619618us : sub_preempt_count <-rt_mutex_slowlock

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

Attachment: bench-i.mx28-3.10.27-rt25.pdf
Description: Adobe PDF document


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux