Re: Raspberry Pi 5 and PREEMPT_RT (6.13.0-rc3)

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

 



On Sun, 2025-01-12 at 16:14 +0100, Florian Paul Schmidt wrote:
> Hi again!
>
> On 22/12/2024 11:32, Leon Woestenberg wrote:
> > You could consider using isolated CPU cores, which should give you
> > much lower latencies, if you have full control over the application
> > logic.
>
> OK, I got around to playing with isolcpus. As a first attempt I added
>
> isolcpus=1,2,3
>
> to my kernel commandline and tried
>
> stress -m 1 --vm-stride 16 --vm-bytes 512000000 --vm-keep -c 1
>
> and it ran on core 0 maxxing it out. So, all fine and dandy up to
> this point. Then I went on to run cyclictest on the isolated core:
>
> sudo cyclictest  -m -p 95 -a 1,2,3 -t 3
>
> But I get enormous latencies:
>
> # /dev/cpu_dma_latency set to 0us
> policy: fifo: loadavg: 2.98 3.08 2.95 3/222 134837
>
> T: 0 (134706) P:95 I:1000 C:   4824 Min:      1 Act:    3 Avg:    8 Max:     518
> T: 1 (134707) P:95 I:1500 C:   3215 Min:      1 Act:    1 Avg:    8 Max:     566
> T: 2 (134708) P:95 I:2000 C:   2411 Min:      1 Act:    1 Avg:    9 Max:     503
>
> Side note: I get these enormous latencies also without cpu
> isolation and this particular stress test (albeit with -c 4 and -m 4
> - so the stressor running on all cores.) But I would have expected
> the core isolation to mitigate this somewhat. Here's the really
> surprising thing though. If I run
>
> sudo cyclictest  -m -p 95 -a 0,1,2,3 -t 4
>
> then I get these enormous latencies on cores 1,2 and 3 but not on
> core 0:

This seems rather odd, one core diddling memory is the worst case.  Any
arm experts out there know why that would be?

pi5, locked at 2.4GHz:

taskset -c 3 stress -m 1 --vm-bytes 1G --vm-stride 16 --vm-keep --timeout 60s;killall cyclictest

T: 0 (23157) P:99 I:1000 C:  63421 Min:      1 Act:   12 Avg:   27 Max:    1378
T: 1 (23158) P:99 I:1500 C:  42327 Min:      1 Act:   32 Avg:   29 Max:    1734
T: 2 (23159) P:99 I:2000 C:  31744 Min:      1 Act:   18 Avg:   28 Max:    1353
T: 3 (23160) P:99 I:2500 C:  25393 Min:      1 Act:   11 Avg:    6 Max:      39

With all cores diddling ram, things are far from lovely, but cyclictest
wakeup latency improves drastically.  As you increase the number of
diddlers 1 -> 4, the latency numbers improve until you get all the way
up to.. merely awful.

stress -m 4 --vm-bytes 1G --vm-stride 16 --vm-keep --timeout 60s;killall cyclictest

T: 0 (23276) P:99 I:1000 C:  62706 Min:      1 Act:   49 Avg:   48 Max:     220
T: 1 (23277) P:99 I:1500 C:  41800 Min:      1 Act:   53 Avg:   62 Max:     274
T: 2 (23278) P:99 I:2000 C:  31348 Min:      1 Act:   45 Avg:   65 Max:     302
T: 3 (23279) P:99 I:2500 C:  25077 Min:      1 Act:   32 Avg:   54 Max:     175

Trace of 4 diddler run below, timewarp plagued single diddler trace
below that.  Single diddler timewarps go away if you reduce the size
enough, I just stopped poking the thing at 1G.

cyclictest reports markedly higher latency than the ftrace measured
wakeup -> task switch latency in all cases.. as if it has to slog
through miles of mud on the way to reading the damn clock.

Bottom line seems to be don't do that to dinky/cute/cheap boards :)

High speed scroll or skip recommended.

# tracer: wakeup_RT (only traces prio=99)
#
# wakeup_RT latency trace v1.1.5 on 6.13.0-rc6-v8-rt
# --------------------------------------------------------------------
# latency: 234 us, #272/272, CPU#3 | (M:PREEMPT_RT VP:0, KP:0, SP:0 HP:0 #P:4)
#    -----------------
#    | task: cyclictest-17297 (uid:0 nice:0 policy:1 rt_prio:99)
#    -----------------
#
#                    _------=> CPU#
#                   / _-----=> irqs-off/BH-disabled
#                  | / _----=> need-resched
#                  || / _---=> hardirq/softirq
#                  ||| / _--=> preempt-depth
#                  |||| / _-=> migrate-disable
#                  ||||| /     delay
#  cmd     pid     |||||| time  |   caller
#     \   /        ||||||  \    |    /
  stress-17318     3dNh4.    4us :    17318:120:R   + [003]   17297:  0:R cyclictest
  stress-17318     3dNh4.   11us : try_to_wake_up <-wake_up_process
  stress-17318     3dNh3.   12us : task_woken_rt <-ttwu_do_activate
  stress-17318     3dNh3.   13us : _raw_spin_unlock <-try_to_wake_up
  stress-17318     3dNh3.   13us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh2.   14us : _raw_spin_unlock_irqrestore <-try_to_wake_up
  stress-17318     3dNh2.   14us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  stress-17318     3dNh1.   14us : preempt_count_sub <-try_to_wake_up
  stress-17318     3dNh..   15us : _raw_spin_lock_irq <-__hrtimer_run_queues
  stress-17318     3dNh..   15us : preempt_count_add <-_raw_spin_lock_irq
  stress-17318     3dNh1.   18us : hrtimer_update_next_event <-hrtimer_interrupt
  stress-17318     3dNh1.   18us : __hrtimer_next_event_base <-hrtimer_update_next_event
  stress-17318     3dNh1.   20us : __hrtimer_next_event_base <-hrtimer_update_next_event
  stress-17318     3dNh1.   21us : _raw_spin_unlock_irqrestore <-hrtimer_interrupt
  stress-17318     3dNh1.   21us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  stress-17318     3dNh..   21us : tick_program_event <-hrtimer_interrupt
  stress-17318     3dNh..   23us : clockevents_program_event <-tick_program_event
  stress-17318     3dNh..   24us : ktime_get <-clockevents_program_event
  stress-17318     3dNh..   25us : arch_counter_read <-ktime_get
  stress-17318     3dNh..   25us : arch_timer_set_next_event_phys <-clockevents_program_event
  stress-17318     3dNh..   26us : gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  stress-17318     3dNh..   31us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..   32us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..   32us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..   34us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..   37us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..   37us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..   38us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.   39us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.   40us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.   40us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..   41us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..   44us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..   45us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..   46us : wake_up_process <-__irq_wake_thread
  stress-17318     3dNh..   46us : try_to_wake_up <-wake_up_process
  stress-17318     3dNh..   47us : preempt_count_add <-try_to_wake_up
  stress-17318     3dNh1.   47us : _raw_spin_lock_irqsave <-try_to_wake_up
  stress-17318     3dNh1.   48us : preempt_count_add <-_raw_spin_lock_irqsave
  stress-17318     3dNh2.   52us : kthread_is_per_cpu <-is_cpu_allowed
  stress-17318     3dNh2.   54us : ttwu_queue_wakelist <-try_to_wake_up
  stress-17318     3dNh2.   54us : preempt_count_add <-try_to_wake_up
  stress-17318     3dNh3.   54us : _raw_spin_lock <-try_to_wake_up
  stress-17318     3dNh3.   55us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh4.   55us : preempt_count_sub <-try_to_wake_up
  stress-17318     3dNh3.   56us : update_rq_clock <-try_to_wake_up
  stress-17318     3dNh3.   56us : ttwu_do_activate <-try_to_wake_up
  stress-17318     3dNh3.   57us : enqueue_task <-ttwu_do_activate
  stress-17318     3dNh3.   59us : enqueue_task_rt <-enqueue_task
  stress-17318     3dNh3.   59us : dequeue_rt_stack <-enqueue_task_rt
  stress-17318     3dNh3.   61us : wakeup_preempt <-ttwu_do_activate
  stress-17318     3dNh3.   61us : __resched_curr.constprop.0 <-wakeup_preempt
  stress-17318     3dNh3.   65us : task_woken_rt <-ttwu_do_activate
  stress-17318     3dNh3.   65us : _raw_spin_unlock <-try_to_wake_up
  stress-17318     3dNh3.   66us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh2.   66us : _raw_spin_unlock_irqrestore <-try_to_wake_up
  stress-17318     3dNh2.   66us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  stress-17318     3dNh1.   67us : preempt_count_sub <-try_to_wake_up
  stress-17318     3dNh..   68us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..   69us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..   74us : add_timer_on <-add_interrupt_randomness
  stress-17318     3dNh..   75us : lock_timer_base <-add_timer_on
  stress-17318     3dNh..   76us : _raw_spin_lock_irqsave <-lock_timer_base
  stress-17318     3dNh..   77us : preempt_count_add <-_raw_spin_lock_irqsave
  stress-17318     3dNh1.   79us : calc_wheel_index <-add_timer_on
  stress-17318     3dNh1.   82us : enqueue_timer <-add_timer_on
  stress-17318     3dNh1.   83us : _raw_spin_unlock_irqrestore <-add_timer_on
  stress-17318     3dNh1.   84us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  stress-17318     3dNh..   84us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..   85us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..   85us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.   88us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.   90us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.   91us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.   92us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.   92us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..   96us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..   96us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..   96us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..   96us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..   97us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..   98us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..   98us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.   99us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.   99us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.   99us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  100us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  100us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  100us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  100us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  101us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  101us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  102us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  102us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  103us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  104us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  104us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  106us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  106us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  111us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..  111us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..  114us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..  114us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..  115us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..  115us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..  115us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  116us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.  116us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.  116us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  116us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  117us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  117us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  117us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  118us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  118us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  120us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  120us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  120us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  121us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  122us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  125us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  125us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  129us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..  129us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..  130us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..  130us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..  130us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..  130us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..  131us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  131us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.  131us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.  132us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  132us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  133us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  134us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  134us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  135us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  135us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  135us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  135us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  136us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  137us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  137us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  138us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  138us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  140us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..  140us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..  140us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..  141us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..  141us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..  141us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..  142us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  142us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.  142us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.  143us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  143us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  144us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  144us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  145us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  145us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  145us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  145us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  145us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  146us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  146us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  147us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  148us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  148us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  150us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..  150us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..  150us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..  151us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..  151us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..  151us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..  152us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  152us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.  152us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.  152us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  153us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  153us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  153us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  154us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  154us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  155us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  155us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  155us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  155us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  155us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  156us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  157us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  158us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  160us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..  160us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..  160us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..  161us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..  161us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..  161us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..  162us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  162us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.  163us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.  163us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  163us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  164us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  164us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  165us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  167us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  167us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  169us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  169us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  170us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  171us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  171us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  174us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  174us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  180us : generic_handle_domain_irq <-gic_handle_irq
  stress-17318     3dNh..  180us : __irq_resolve_mapping <-generic_handle_domain_irq
  stress-17318     3dNh..  181us : __rcu_read_lock <-__irq_resolve_mapping
  stress-17318     3dNh..  181us : __rcu_read_unlock <-__irq_resolve_mapping
  stress-17318     3dNh..  181us : handle_fasteoi_irq <-generic_handle_domain_irq
  stress-17318     3dNh..  182us : _raw_spin_lock <-handle_fasteoi_irq
  stress-17318     3dNh..  182us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  183us : handle_irq_event <-handle_fasteoi_irq
  stress-17318     3dNh1.  183us : _raw_spin_unlock <-handle_irq_event
  stress-17318     3dNh1.  184us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  184us : __handle_irq_event_percpu <-handle_irq_event
  stress-17318     3dNh..  184us : irq_default_primary_handler <-__handle_irq_event_percpu
  stress-17318     3dNh..  184us : __irq_wake_thread <-__handle_irq_event_percpu
  stress-17318     3dNh..  184us : add_interrupt_randomness <-handle_irq_event
  stress-17318     3dNh..  185us : fast_mix <-add_interrupt_randomness
  stress-17318     3dNh..  185us : note_interrupt <-handle_irq_event
  stress-17318     3dNh..  186us : _raw_spin_lock <-handle_irq_event
  stress-17318     3dNh..  186us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dNh1.  186us : irq_chip_eoi_parent <-handle_fasteoi_irq
  stress-17318     3dNh1.  187us : irq_chip_eoi_parent <-irq_chip_eoi_parent
  stress-17318     3dNh1.  187us : gic_eoimode1_eoi_irq <-irq_chip_eoi_parent
  stress-17318     3dNh1.  189us : _raw_spin_unlock <-handle_fasteoi_irq
  stress-17318     3dNh1.  189us : preempt_count_sub <-_raw_spin_unlock
  stress-17318     3dNh..  191us : irq_exit_rcu <-el0_interrupt
  stress-17318     3dN...  193us : idle_cpu <-__irq_exit_rcu
  stress-17318     3dN...  194us : do_notify_resume <-el0_interrupt
  stress-17318     3.N...  195us : schedule <-do_notify_resume
  stress-17318     3dN.1.  196us : rcu_note_context_switch <-__schedule
  stress-17318     3dN.1.  198us : preempt_count_add <-__schedule
  stress-17318     3dN.2.  198us : _raw_spin_lock <-__schedule
  stress-17318     3dN.2.  199us : preempt_count_add <-_raw_spin_lock
  stress-17318     3dN.3.  200us : preempt_count_sub <-__schedule
  stress-17318     3dN.2.  200us : update_rq_clock <-__schedule
  stress-17318     3dN.2.  202us : balance_fair <-__schedule
  stress-17318     3dN.2.  203us : pick_task_stop <-__schedule
  stress-17318     3dN.2.  204us : pick_task_dl <-__schedule
  stress-17318     3dN.2.  206us : pick_task_rt <-__schedule
  stress-17318     3dN.2.  207us : put_prev_task_fair <-__schedule
  stress-17318     3dN.2.  208us : put_prev_entity <-put_prev_task_fair
  stress-17318     3dN.2.  208us : update_curr <-put_prev_entity
  stress-17318     3dN.2.  209us : update_curr_se <-update_curr
  stress-17318     3dN.2.  211us : update_min_vruntime <-update_curr
  stress-17318     3dN.2.  213us : cpuacct_charge <-update_curr
  stress-17318     3dN.2.  214us : __cgroup_account_cputime <-update_curr
  stress-17318     3dN.2.  215us : preempt_count_add <-__cgroup_account_cputime
  stress-17318     3dN.3.  216us : cgroup_rstat_updated <-__cgroup_account_cputime
  stress-17318     3dN.3.  216us : preempt_count_sub <-__cgroup_account_cputime
  stress-17318     3dN.2.  217us : dl_server_update <-update_curr
  stress-17318     3dN.2.  218us : update_curr_dl_se <-dl_server_update
  stress-17318     3dN.2.  218us : dl_scaled_delta_exec <-update_curr_dl_se
  stress-17318     3dN.2.  219us : __enqueue_entity <-put_prev_entity
  stress-17318     3dN.2.  221us : __update_load_avg_se <-update_load_avg
  stress-17318     3dN.2.  223us : __update_load_avg_cfs_rq <-update_load_avg
  stress-17318     3dN.2.  224us : decay_load <-__update_load_avg_cfs_rq
  stress-17318     3dN.2.  224us : decay_load <-__update_load_avg_cfs_rq
  stress-17318     3dN.2.  227us : update_rt_rq_load_avg <-set_next_task_rt
  stress-17318     3d..3.  232us : __schedule <-preempt_schedule_notrace
  stress-17318     3d..3.  233us :    17318:120:R ==> [003]   17297:  0:R cyclictest

Note time-warps and far more nutty irq holdoff.

# tracer: wakeup_RT
#
# wakeup_RT latency trace v1.1.5 on 6.13.0-rc6-v8-rt
# --------------------------------------------------------------------
# latency: 1316 us, #273/273, CPU#1 | (M:PREEMPT_RT VP:0, KP:0, SP:0 HP:0 #P:4)
#    -----------------
#    | task: cyclictest-15842 (uid:0 nice:0 policy:1 rt_prio:99)
#    -----------------
#
#                    _------=> CPU#
#                   / _-----=> irqs-off/BH-disabled
#                  | / _----=> need-resched
#                  || / _---=> hardirq/softirq
#                  ||| / _--=> preempt-depth
#                  |||| / _-=> migrate-disable
#                  ||||| /     delay
#  cmd     pid     |||||| time  |   caller
#     \   /        ||||||  \    |    /
  <idle>-0         1dnh5.    0us :        0:120:R   + [001]   15842:  0:R cyclictest
  <idle>-0         1dnh5.    1us : try_to_wake_up <-wake_up_process
  <idle>-0         1dnh4.    1us : task_woken_rt <-ttwu_do_activate
  <idle>-0         1dnh4.    1us : _raw_spin_unlock <-try_to_wake_up
  <idle>-0         1dnh4.    1us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dnh3.    1us : _raw_spin_unlock_irqrestore <-try_to_wake_up
  <idle>-0         1dnh3.    2us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  <idle>-0         1dnh2.    2us : preempt_count_sub <-try_to_wake_up
  <idle>-0         1dnh1.    2us : _raw_spin_lock_irq <-__hrtimer_run_queues
  <idle>-0         1dnh1.    2us : preempt_count_add <-_raw_spin_lock_irq
  <idle>-0         1dnh2.    2us : hrtimer_update_next_event <-hrtimer_interrupt
  <idle>-0         1dnh2.    3us : __hrtimer_next_event_base <-hrtimer_update_next_event
  <idle>-0         1dnh2.    3us : __hrtimer_next_event_base <-hrtimer_update_next_event
  <idle>-0         1dnh2.    3us : _raw_spin_unlock_irqrestore <-hrtimer_interrupt
  <idle>-0         1dnh2.    3us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  <idle>-0         1dnh1.    3us : tick_program_event <-hrtimer_interrupt
  <idle>-0         1dnh1.    4us : clockevents_program_event <-tick_program_event
  <idle>-0         1dnh1.    4us : ktime_get <-clockevents_program_event
  <idle>-0         1dnh1.    4us : arch_counter_read <-ktime_get
  <idle>-0         1dnh1.    4us : arch_timer_set_next_event_phys <-clockevents_program_event
  <idle>-0         1dnh1.    5us!: gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  <idle>-0         1dnh1.  347us : generic_handle_domain_irq <-gic_handle_irq
  <idle>-0         1dnh1.  347us : __irq_resolve_mapping <-generic_handle_domain_irq
  <idle>-0         1dnh1.  347us : __rcu_read_lock <-__irq_resolve_mapping
  <idle>-0         1dnh1.  347us : __rcu_read_unlock <-__irq_resolve_mapping
  <idle>-0         1dnh1.  348us : handle_percpu_devid_irq <-generic_handle_domain_irq
  <idle>-0         1dnh1.  348us : ipi_handler <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  348us : gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  352us : irq_exit_rcu <-el1_interrupt
  <idle>-0         1dN.1.  352us : idle_cpu <-__irq_exit_rcu
  <idle>-0         1.N.1.  352us : arch_cpu_idle_exit <-do_idle
  <idle>-0         1.N.1.  352us : tick_nohz_idle_exit <-do_idle
  <idle>-0         1dN.1.  353us : ktime_get <-tick_nohz_idle_exit
  <idle>-0         1dN.1.  353us : arch_counter_read <-ktime_get
  <idle>-0         1dN.1.  353us : tick_do_update_jiffies64 <-tick_nohz_idle_exit
  <idle>-0         1dN.1.  353us : _raw_spin_lock <-tick_do_update_jiffies64
  <idle>-0         1dN.1.  353us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dN.2.  354us : calc_global_load <-tick_do_update_jiffies64
  <idle>-0         1dN.2.  354us : _raw_spin_unlock <-tick_do_update_jiffies64
  <idle>-0         1dN.2.  354us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dN.1.  354us : update_wall_time <-tick_do_update_jiffies64
  <idle>-0         1dN.1.  355us : timekeeping_advance <-update_wall_time
  <idle>-0         1dN.1.  355us : _raw_spin_lock_irqsave <-timekeeping_advance
  <idle>-0         1dN.1.  355us : preempt_count_add <-_raw_spin_lock_irqsave
  <idle>-0         1dN.2.  355us : arch_counter_read <-timekeeping_advance
  <idle>-0         1dN.2.  355us : ntp_tick_length <-timekeeping_advance
  <idle>-0         1dN.2.  356us : ntp_tick_length <-timekeeping_advance
  <idle>-0         1dN.2.  356us : timekeeping_update_from_shadow.constprop.0 <-timekeeping_advance
  <idle>-0         1dN.2.  356us : ntp_get_next_leap <-timekeeping_update_from_shadow.constprop.0
  <idle>-0         1dN.2.  357us : update_vsyscall <-timekeeping_update_from_shadow.constprop.0
  <idle>-0         1dN.2.  357us : raw_notifier_call_chain <-timekeeping_update_from_shadow.constprop.0
  <idle>-0         1dN.2.  357us : notifier_call_chain <-raw_notifier_call_chain
  <idle>-0         1dN.2.  357us : _raw_spin_unlock_irqrestore <-timekeeping_advance
  <idle>-0         1dN.2.  357us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  <idle>-0         1dN.1.  358us : timer_clear_idle <-tick_nohz_idle_exit
  <idle>-0         1dN.1.  358us : tmigr_cpu_activate <-timer_clear_idle
  <idle>-0         1dN.1.  358us : _raw_spin_lock <-tmigr_cpu_activate
  <idle>-0         1dN.1.  358us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dN.2.  358us : __tmigr_cpu_activate <-tmigr_cpu_activate
  <idle>-0         1dN.2.  361us : tmigr_active_up <-__tmigr_cpu_activate
  <idle>-0         1dN.2.  361us : _raw_spin_unlock <-tmigr_cpu_activate
  <idle>-0         1dN.2.  361us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dN.1.  362us : calc_load_nohz_stop <-tick_nohz_idle_exit
  <idle>-0         1dN.1.  362us : tick_nohz_restart <-tick_nohz_idle_exit
  <idle>-0         1dN.1.  362us : hrtimer_cancel <-tick_nohz_restart
  <idle>-0         1dN.1.  362us : hrtimer_active <-hrtimer_cancel
  <idle>-0         1dN.1.  362us : hrtimer_forward <-tick_nohz_restart
  <idle>-0         1dN.1.  362us : hrtimer_start_range_ns <-tick_nohz_restart
  <idle>-0         1dN.1.  363us : _raw_spin_lock_irqsave <-hrtimer_start_range_ns
  <idle>-0         1dN.1.  363us : preempt_count_add <-_raw_spin_lock_irqsave
  <idle>-0         1dN.2.  363us : enqueue_hrtimer <-hrtimer_start_range_ns
  <idle>-0         1dN.2.  363us : hrtimer_reprogram.constprop.0 <-hrtimer_start_range_ns
  <idle>-0         1dN.2.  364us : tick_program_event <-hrtimer_reprogram.constprop.0
  <idle>-0         1dN.2.  364us : clockevents_program_event <-tick_program_event
  <idle>-0         1dN.2.  365us : ktime_get <-clockevents_program_event
  <idle>-0         1dN.2.  365us : arch_counter_read <-ktime_get
  <idle>-0         1dN.2.  365us : arch_timer_set_next_event_phys <-clockevents_program_event
  <idle>-0         1dN.2.  365us : _raw_spin_unlock_irqrestore <-hrtimer_start_range_ns
  <idle>-0         1dN.2.  365us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  <idle>-0         1dN.1.  366us : account_idle_ticks <-tick_nohz_idle_exit
  <idle>-0         1dN.1.  366us : account_idle_time <-account_idle_ticks
  <idle>-0         1dN.1.  366us : irq_enter_rcu <-el1_interrupt
  <idle>-0         1dNh1.  366us : tick_irq_enter <-irq_enter_rcu
  <idle>-0         1dNh1.  367us : tick_check_oneshot_broadcast_this_cpu <-tick_irq_enter
  <idle>-0         1dNh1.  367us : do_interrupt_handler <-el1_interrupt
  <idle>-0         1dNh1.  367us : gic_handle_irq <-call_on_irq_stack
  <idle>-0         1dNh1.  368us : generic_handle_domain_irq <-gic_handle_irq
  <idle>-0         1dNh1.  368us : __irq_resolve_mapping <-generic_handle_domain_irq
  <idle>-0         1dNh1.  368us : __rcu_read_lock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  368us : __rcu_read_unlock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  368us : handle_percpu_devid_irq <-generic_handle_domain_irq
  <idle>-0         1dNh1.  369us : ipi_handler <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  369us : generic_smp_call_function_single_interrupt <-ipi_handler
  <idle>-0         1dNh1.  369us : __flush_smp_call_function_queue <-generic_smp_call_function_single_interrupt
  <idle>-0         1dNh1.  370us : rto_push_irq_work_func <-irq_work_single
  <idle>-0         1dNh1.  370us : raw_spin_rq_lock_nested <-rto_push_irq_work_func
  <idle>-0         1dNh1.  370us : preempt_count_add <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  370us : _raw_spin_lock <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  370us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh3.  371us : preempt_count_sub <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  371us : push_rt_task <-rto_push_irq_work_func
  <idle>-0         1dNh2.  371us : pick_next_pushable_task <-push_rt_task
  <idle>-0         1dNh2.  371us : resched_curr <-push_rt_task
  <idle>-0         1dNh2.  371us : __resched_curr.constprop.0 <-resched_curr
  <idle>-0         1dNh2.  372us : raw_spin_rq_unlock <-rto_push_irq_work_func
  <idle>-0         1dNh2.  372us : _raw_spin_unlock <-raw_spin_rq_unlock
  <idle>-0         1dNh2.  372us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  372us : _raw_spin_lock <-rto_push_irq_work_func
  <idle>-0         1dNh1.  373us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh2.  373us : rto_next_cpu <-rto_push_irq_work_func
  <idle>-0         1dNh2.  373us : _raw_spin_unlock <-rto_push_irq_work_func
  <idle>-0         1dNh2.  373us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  373us : preempt_count_add <-irq_work_queue_on
  <idle>-0         1dNh2.  374us : arch_irq_work_raise <-__irq_work_queue_local
  <idle>-0         1dNh2.  374us : smp_cross_call <-arch_irq_work_raise
  <idle>-0         1dNh2.  374us : __ipi_send_mask <-smp_cross_call
  <idle>-0         1dNh2.  375us : gic_ipi_send_mask <-__ipi_send_mask
  <idle>-0         1dNh2.  377us : preempt_count_sub <-irq_work_queue_on
  <idle>-0         1dNh1.  377us : gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  382us : generic_handle_domain_irq <-gic_handle_irq
  <idle>-0         1dNh1.  382us : __irq_resolve_mapping <-generic_handle_domain_irq
  <idle>-0         1dNh1.  382us : __rcu_read_lock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  383us : __rcu_read_unlock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  383us : handle_percpu_devid_irq <-generic_handle_domain_irq
  <idle>-0         1dNh1.  383us : ipi_handler <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  383us : rto_push_irq_work_func <-irq_work_single
  <idle>-0         1dNh1.  383us : raw_spin_rq_lock_nested <-rto_push_irq_work_func
  <idle>-0         1dNh1.  384us : preempt_count_add <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  384us : _raw_spin_lock <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  384us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh3.  384us : preempt_count_sub <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  384us : push_rt_task <-rto_push_irq_work_func
  <idle>-0         1dNh2.  384us : pick_next_pushable_task <-push_rt_task
  <idle>-0         1dNh2.  385us : resched_curr <-push_rt_task
  <idle>-0         1dNh2.  385us : __resched_curr.constprop.0 <-resched_curr
  <idle>-0         1dNh2.  385us : raw_spin_rq_unlock <-rto_push_irq_work_func
  <idle>-0         1dNh2.  385us : _raw_spin_unlock <-raw_spin_rq_unlock
  <idle>-0         1dNh2.  385us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  386us : _raw_spin_lock <-rto_push_irq_work_func
  <idle>-0         1dNh1.  386us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh2.  386us : rto_next_cpu <-rto_push_irq_work_func
  <idle>-0         1dNh2.  386us : _raw_spin_unlock <-rto_push_irq_work_func
  <idle>-0         1dNh2.  386us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  387us : preempt_count_add <-irq_work_queue_on
  <idle>-0         1dNh2.  387us : arch_irq_work_raise <-__irq_work_queue_local
  <idle>-0         1dNh2.  387us : smp_cross_call <-arch_irq_work_raise
  <idle>-0         1dNh2.  387us : __ipi_send_mask <-smp_cross_call
  <idle>-0         1dNh2.  388us!: gic_ipi_send_mask <-__ipi_send_mask
  <idle>-0         1dNh2.  495us : preempt_count_sub <-irq_work_queue_on
  <idle>-0         1dNh1.  496us!: gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  816us : generic_handle_domain_irq <-gic_handle_irq
  <idle>-0         1dNh1.  816us : __irq_resolve_mapping <-generic_handle_domain_irq
  <idle>-0         1dNh1.  816us : __rcu_read_lock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  816us : __rcu_read_unlock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  816us : handle_percpu_devid_irq <-generic_handle_domain_irq
  <idle>-0         1dNh1.  816us : ipi_handler <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  817us : rto_push_irq_work_func <-irq_work_single
  <idle>-0         1dNh1.  817us : raw_spin_rq_lock_nested <-rto_push_irq_work_func
  <idle>-0         1dNh1.  817us : preempt_count_add <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  817us : _raw_spin_lock <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  817us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh3.  818us : preempt_count_sub <-raw_spin_rq_lock_nested
  <idle>-0         1dNh2.  818us : push_rt_task <-rto_push_irq_work_func
  <idle>-0         1dNh2.  818us : pick_next_pushable_task <-push_rt_task
  <idle>-0         1dNh2.  818us : resched_curr <-push_rt_task
  <idle>-0         1dNh2.  819us : __resched_curr.constprop.0 <-resched_curr
  <idle>-0         1dNh2.  819us : raw_spin_rq_unlock <-rto_push_irq_work_func
  <idle>-0         1dNh2.  819us : _raw_spin_unlock <-raw_spin_rq_unlock
  <idle>-0         1dNh2.  819us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  819us : _raw_spin_lock <-rto_push_irq_work_func
  <idle>-0         1dNh1.  820us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh2.  820us : rto_next_cpu <-rto_push_irq_work_func
  <idle>-0         1dNh2.  820us : _raw_spin_unlock <-rto_push_irq_work_func
  <idle>-0         1dNh2.  820us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  820us : sched_put_rd <-rto_push_irq_work_func
  <idle>-0         1dNh1.  820us!: gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  966us : generic_handle_domain_irq <-gic_handle_irq
  <idle>-0         1dNh1.  966us : __irq_resolve_mapping <-generic_handle_domain_irq
  <idle>-0         1dNh1.  967us : __rcu_read_lock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  968us : __rcu_read_unlock <-__irq_resolve_mapping
  <idle>-0         1dNh1.  968us : handle_percpu_devid_irq <-generic_handle_domain_irq
  <idle>-0         1dNh1.  969us : arch_timer_handler_phys <-handle_percpu_devid_irq
  <idle>-0         1dNh1.  969us : hrtimer_interrupt <-arch_timer_handler_phys
  <idle>-0         1dNh1.  969us : _raw_spin_lock_irqsave <-hrtimer_interrupt
  <idle>-0         1dNh1.  969us : preempt_count_add <-_raw_spin_lock_irqsave
  <idle>-0         1dNh2.  969us : ktime_get_update_offsets_now <-hrtimer_interrupt
  <idle>-0         1dNh2.  970us : arch_counter_read <-ktime_get_update_offsets_now
  <idle>-0         1dNh2.  970us : __hrtimer_run_queues <-hrtimer_interrupt
  <idle>-0         1dNh2.  970us : _raw_spin_unlock_irqrestore <-__hrtimer_run_queues
  <idle>-0         1dNh2.  970us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  <idle>-0         1dNh1.  970us : tick_nohz_handler <-__hrtimer_run_queues
  <idle>-0         1dNh1.  971us : ktime_get <-tick_nohz_handler
  <idle>-0         1dNh1.  971us : arch_counter_read <-ktime_get
  <idle>-0         1dNh1.  971us : update_process_times <-tick_nohz_handler
  <idle>-0         1dNh1.  971us : account_process_tick <-update_process_times
  <idle>-0         1dNh1.  972us : account_idle_time <-account_process_tick
  <idle>-0         1dNh1.  972us : hrtimer_run_queues <-update_process_times
  <idle>-0         1dNh1.  972us : tmigr_requires_handle_remote <-update_process_times
  <idle>-0         1dNh1.  972us : get_jiffies_update <-tmigr_requires_handle_remote
  <idle>-0         1dNh1.  972us : rcu_sched_clock_irq <-update_process_times
  <idle>-0         1dNh1.  973us : rcu_is_cpu_rrupt_from_idle <-rcu_sched_clock_irq
  <idle>-0         1dNh1.  973us : rcu_segcblist_ready_cbs <-rcu_sched_clock_irq
  <idle>-0         1dNh1.  973us : rcu_is_cpu_rrupt_from_idle <-rcu_sched_clock_irq
  <idle>-0         1dNh1.  973us : sched_tick <-update_process_times
  <idle>-0         1dNh1.  974us : topology_scale_freq_tick <-sched_tick
  <idle>-0         1dNh1.  974us : preempt_count_add <-sched_tick
  <idle>-0         1dNh2.  974us : _raw_spin_lock <-sched_tick
  <idle>-0         1dNh2.  974us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dNh3.  974us : preempt_count_sub <-sched_tick
  <idle>-0         1dNh2.  975us : update_rq_clock <-sched_tick
  <idle>-0         1dNh2.  975us : task_tick_idle <-sched_tick
  <idle>-0         1dNh2.  975us : calc_global_load_tick <-sched_tick
  <idle>-0         1dNh2.  975us : task_tick_mm_cid <-sched_tick
  <idle>-0         1dNh2.  975us : _raw_spin_unlock <-sched_tick
  <idle>-0         1dNh2.  976us : preempt_count_sub <-_raw_spin_unlock
  <idle>-0         1dNh1.  976us : perf_event_task_tick <-sched_tick
  <idle>-0         1dNh1.  976us : perf_adjust_freq_unthr_context <-perf_event_task_tick
  <idle>-0         1dNh1.  976us : __rcu_read_lock <-perf_event_task_tick
  <idle>-0         1dNh1.  977us : __rcu_read_unlock <-perf_event_task_tick
  <idle>-0         1dNh1.  977us : idle_cpu <-sched_tick
  <idle>-0         1dNh1.  977us : sched_balance_trigger <-sched_tick
  <idle>-0         1dNh1.  977us : nohz_balance_exit_idle <-sched_balance_trigger
  <idle>-0         1dNh1.  978us : __rcu_read_lock <-nohz_balance_exit_idle
  <idle>-0         1dNh1.  978us : __rcu_read_unlock <-nohz_balance_exit_idle
  <idle>-0         1dNh1.  978us : housekeeping_cpumask <-sched_balance_trigger
  <idle>-0         1dNh1.  978us : idle_cpu <-sched_balance_trigger
  <idle>-0         1dNh1.  979us : smp_call_function_single_async <-sched_balance_trigger
  <idle>-0         1dNh1.  979us : preempt_count_add <-smp_call_function_single_async
  <idle>-0         1dNh2.  979us : generic_exec_single <-smp_call_function_single_async
  <idle>-0         1dNh2.  979us : __smp_call_single_queue <-generic_exec_single
  <idle>-0         1dNh2.  980us : call_function_single_prep_ipi <-__smp_call_single_queue
  <idle>-0         1dNh2.  980us : arch_send_call_function_single_ipi <-__smp_call_single_queue
  <idle>-0         1dNh2.  980us : smp_cross_call <-arch_send_call_function_single_ipi
  <idle>-0         1dNh2.  980us : __ipi_send_mask <-smp_cross_call
  <idle>-0         1dNh2.  980us!: gic_ipi_send_mask <-__ipi_send_mask
  <idle>-0         1dNh2. 1304us : preempt_count_sub <-smp_call_function_single_async
  <idle>-0         1dNh1. 1305us : run_posix_cpu_timers <-update_process_times
  <idle>-0         1dNh1. 1305us : profile_tick <-tick_nohz_handler
  <idle>-0         1dNh1. 1305us : profile_pc <-profile_tick
  <idle>-0         1dNh1. 1306us : profile_pc_cb <-arch_stack_walk
  <idle>-0         1dNh1. 1306us : hrtimer_forward <-tick_nohz_handler
  <idle>-0         1dNh1. 1306us : _raw_spin_lock_irq <-__hrtimer_run_queues
  <idle>-0         1dNh1. 1306us : preempt_count_add <-_raw_spin_lock_irq
  <idle>-0         1dNh2. 1306us : enqueue_hrtimer <-__hrtimer_run_queues
  <idle>-0         1dNh2. 1307us : hrtimer_update_next_event <-hrtimer_interrupt
  <idle>-0         1dNh2. 1307us : __hrtimer_next_event_base <-hrtimer_update_next_event
  <idle>-0         1dNh2. 1307us : __hrtimer_next_event_base <-hrtimer_update_next_event
  <idle>-0         1dNh2. 1307us : _raw_spin_unlock_irqrestore <-hrtimer_interrupt
  <idle>-0         1dNh2. 1307us : preempt_count_sub <-_raw_spin_unlock_irqrestore
  <idle>-0         1dNh1. 1308us : tick_program_event <-hrtimer_interrupt
  <idle>-0         1dNh1. 1308us : clockevents_program_event <-tick_program_event
  <idle>-0         1dNh1. 1308us : ktime_get <-clockevents_program_event
  <idle>-0         1dNh1. 1308us : arch_counter_read <-ktime_get
  <idle>-0         1dNh1. 1309us : arch_timer_set_next_event_phys <-clockevents_program_event
  <idle>-0         1dNh1. 1309us : gic_eoimode1_eoi_irq <-handle_percpu_devid_irq
  <idle>-0         1dNh1. 1312us : irq_exit_rcu <-el1_interrupt
  <idle>-0         1dN.1. 1312us : idle_cpu <-__irq_exit_rcu
  <idle>-0         1.N.1. 1313us : flush_smp_call_function_queue <-do_idle
  <idle>-0         1.N.1. 1313us : schedule_idle <-do_idle
  <idle>-0         1dN.1. 1313us : rcu_note_context_switch <-__schedule
  <idle>-0         1dN.1. 1313us : preempt_count_add <-__schedule
  <idle>-0         1dN.2. 1313us : _raw_spin_lock <-__schedule
  <idle>-0         1dN.2. 1314us : preempt_count_add <-_raw_spin_lock
  <idle>-0         1dN.3. 1314us : preempt_count_sub <-__schedule
  <idle>-0         1dN.2. 1314us : update_rq_clock <-__schedule
  <idle>-0         1dN.2. 1314us : pick_task_stop <-__schedule
  <idle>-0         1dN.2. 1314us : pick_task_dl <-__schedule
  <idle>-0         1dN.2. 1315us : pick_task_rt <-__schedule
  <idle>-0         1dN.2. 1315us : put_prev_task_idle <-__schedule
  <idle>-0         1dN.2. 1315us : dl_scaled_delta_exec <-put_prev_task_idle
  <idle>-0         1dN.2. 1315us : update_rt_rq_load_avg <-set_next_task_rt
  <idle>-0         1d..3. 1316us : __schedule <-schedule_idle
  <idle>-0         1d..3. 1316us :        0:120:R ==> [001]   15842:  0:R cyclictest






[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