Re: AW: AW: Large latencies with 4.4.1-rt6

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

 



Hey Martin-

On Thu, Mar 03, 2016 at 09:44:25AM +0000, Martin.Wirth@xxxxxx wrote:
> 
> > -----Ursprüngliche Nachricht-----
> > Von: Thomas Gleixner [mailto:tglx@xxxxxxxxxxxxx]
> > Gesendet: Dienstag, 1. März 2016 11:08
> > An: Wirth, Martin
> > Cc: bigeasy@xxxxxxxxxxxxx
> > Betreff: Re: AW: AW: AW: Large latencies with 4.4.1-rt6
> > 
> > Can you try to gather a trace:
> > 
> > cyclictest -Sp99 -m -i200 -f -b500

Cyclictest should have mentioned which CPU was triggering the break, the
most valuable traces are from that CPU.

> > You might need to up the interval a bit, but that should give us the reason for
> > this hickup.
> >
>
> I finally found the reason for the ms range latencies.
>
> When we bought the cpu -card about 2 years ago we had problems with
> the built-in DP to VGA bridge in combination with a KVM switch.  To
> solve this I added, as suggested on a linux forum, the kernel
> parameter  i915.disable_power_well=0. With former kernels this did no
> harm, but with 4.4 it causes the large latencies. The i915 driver even
> warns that  disable_power_well is deprecated and dangerous now but I
> overlooked this in the kernel log.
>
> So now that this is gone, I still see a lot of 100 µs range latencies
> with 4.4.3-rt9. Interestingly I get even larger ones of up to 200 µs
> when tracing is not enabled (over 12 h runs).
>
> The traces around such a 100 µs hickup look like this:
>
[..]
>      cc1-17437   0d..h... 195934553us : irq_exit <-do_IRQ
>      cc1-17437   0d..h... 195934553us : irqtime_account_irq <-irq_exit
>      cc1-17437   0d..h... 195934553us : preempt_count_sub <-irq_exit
>      cc1-17437   0d...... 195934553us!: rcu_irq_exit <-irq_exit
>      cc1-17437   0d...... 195934680us : do_IRQ <-ret_from_intr
>      cc1-17437   0d...... 195934681us : irq_enter <-do_IRQ
>      cc1-17437   0d...... 195934681us : rcu_irq_enter <-irq_enter
>      cc1-17437   0d...... 195934681us : irqtime_account_irq <-irq_enter
>      cc1-17437   0d...... 195934681us : in_serving_softirq <-irqtime_account_irq
>      cc1-17437   0d...... 195934681us : preempt_count_add <-irq_enter
>      cc1-17437   0d..h... 195934681us : exit_idle <-do_IRQ
>      cc1-17437   0d..h... 195934682us : handle_irq <-do_IRQ
>      cc1-17437   0d..h... 195934682us : handle_edge_irq <-handle_irq
>      cc1-17437   0d..h... 195934682us : _raw_spin_lock <-handle_edge_irq
>      cc1-17437   0d..h... 195934682us : preempt_count_add <-_raw_spin_lock
>      cc1-17437   0d..h1.. 195934682us : irq_chip_ack_parent <-handle_edge_irq
>      cc1-17437   0d..h1.. 195934682us : apic_ack_edge <-irq_chip_ack_parent
>      cc1-17437   0d..h1.. 195934682us : irq_complete_move <-apic_ack_edge
>      cc1-17437   0d..h1.. 195934682us : irq_move_irq <-apic_ack_edge
>      cc1-17437   0d..h1.. 195934682us : handle_irq_event <-handle_edge_irq
>      cc1-17437   0d..h1.. 195934683us : preempt_count_sub <-handle_irq_event
>      cc1-17437   0d..h... 195934683us : handle_irq_event_percpu <-handle_irq_event
>      cc1-17437   0d..h... 195934683us : irq_default_primary_handler <-handle_irq_event_percpu
>      cc1-17437   0d..h... 195934683us : __irq_wake_thread <-handle_irq_event_percpu
>      cc1-17437   0d..h... 195934683us : wake_up_process <-__irq_wake_thread
>      cc1-17437   0d..h... 195934683us : try_to_wake_up <-wake_up_process
>      cc1-17437   0d..h... 195934683us : _raw_spin_lock_irqsave <-try_to_wake_up
>      cc1-17437   0d..h... 195934683us : preempt_count_add <-_raw_spin_lock_irqsave
>      cc1-17437   0d..h1.. 195934683us : select_task_rq_rt <-try_to_wake_up
>      cc1-17437   0d..h1.. 195934684us : __rcu_read_lock <-select_task_rq_rt
>      cc1-17437   0d..h1.. 195934684us : __rcu_read_unlock <-select_task_rq_rt
>      cc1-17437   0d..h1.. 195934684us : _raw_spin_lock <-try_to_wake_up
>      cc1-17437   0d..h1.. 195934684us : preempt_count_add <-_raw_spin_lock
>      cc1-17437   0d..h2.. 195934684us : ttwu_do_activate.constprop.100 <-try_to_wake_up
>      cc1-17437   0d..h2.. 195934684us : activate_task <-ttwu_do_activate.constprop.100
>      cc1-17437   0d..h2.. 195934684us : update_rq_clock.part.89 <-activate_task
>      cc1-17437   0d..h2.. 195934684us : enqueue_task_rt <-activate_task
>      cc1-17437   0d..h2.. 195934684us : dequeue_rt_stack <-enqueue_task_rt
>      cc1-17437   0d..h2.. 195934684us : dequeue_top_rt_rq <-dequeue_rt_stack
>      cc1-17437   0d..h2.. 195934685us : cpupri_set <-enqueue_task_rt
>      cc1-17437   0d..h2.. 195934685us : update_rt_migration <-enqueue_task_rt
>      cc1-17437   0d..h2.. 195934685us : _raw_spin_lock <-enqueue_task_rt
>      cc1-17437   0d..h2.. 195934685us : preempt_count_add <-_raw_spin_lock
>      cc1-17437   0d..h3.. 195934685us : preempt_count_sub <-enqueue_task_rt
>      cc1-17437   0d..h2.. 195934685us : enqueue_top_rt_rq <-enqueue_task_rt
>      cc1-17437   0d..h2.. 195934685us : ttwu_do_wakeup <-ttwu_do_activate.constprop.100
>      cc1-17437   0d..h2.. 195934686us : check_preempt_curr <-ttwu_do_wakeup
>      cc1-17437   0d..h2.. 195934686us : resched_curr <-check_preempt_curr
>      cc1-17437   0d..h2.. 195934686us : native_smp_send_reschedule <-resched_curr
>      cc1-17437   0d..h2.. 195934686us : flat_send_IPI_mask <-native_smp_send_reschedule
>      cc1-17437   0d..h2.. 195934687us : task_woken_rt <-ttwu_do_wakeup
>      cc1-17437   0d..h2.. 195934687us : preempt_count_sub <-try_to_wake_up
>      cc1-17437   0d..h1.. 195934687us : __rcu_read_lock <-try_to_wake_up
>      cc1-17437   0d..h1.. 195934687us : __rcu_read_unlock <-try_to_wake_up
>      cc1-17437   0d..h1.. 195934687us : _raw_spin_unlock_irqrestore <-try_to_wake_up
>      cc1-17437   0d..h1.. 195934687us : preempt_count_sub <-_raw_spin_unlock_irqrestore
>      cc1-17437   0d..h... 195934687us : note_interrupt <-handle_irq_event_percpu
>      cc1-17437   0d..h... 195934687us : _raw_spin_lock <-handle_irq_event
>      cc1-17437   0d..h... 195934688us : preempt_count_add <-_raw_spin_lock
>      cc1-17437   0d..h1.. 195934688us : preempt_count_sub <-handle_edge_irq
>      cc1-17437   0d..h... 195934688us : irq_exit <-do_IRQ  

Do you have more complete traces of what's going on on the other CPUs as
well?  As far as I can see here, CPU0 is handling a couple interrupts,
which trigger remote wakeups of irqthreads running on the other
CPUs..nothing unusual?

  Josh

Attachment: signature.asc
Description: PGP signature


[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