* 2.6.14-rt22 (and mainline) excessive latency
@ 2005-12-20 0:40 Lee Revell
2005-12-20 4:24 ` Ingo Molnar
0 siblings, 1 reply; 8+ messages in thread
From: Lee Revell @ 2005-12-20 0:40 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel
I captured this 3+ ms latency trace when killing a process with a few
thousand threads. Can a cond_resched be added to this code path?
preemption latency trace v1.1.5 on 2.6.14-rt22
--------------------------------------------------------------------
latency: 3321 us, #2830/2830, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0)
-----------------
| task: softirq-timer/0-3 (uid:0 nice:0 policy:1 rt_prio:1)
-----------------
_------=> CPU#
/ _-----=> irqs-off
| / _----=> need-resched
|| / _---=> hardirq/softirq
||| / _--=> preempt-depth
|||| /
||||| delay
cmd pid ||||| time | caller
\ / ||||| \ | /
bash-17992 0D.h2 1us : __trace_start_sched_wakeup (try_to_wake_up)
bash-17992 0D.h2 1us : __trace_start_sched_wakeup <<...>-3> (62 0)
bash-17992 0D.h. 2us : wake_up_process (wakeup_softirqd)
bash-17992 0D.h. 3us : rcu_check_callbacks (update_process_times)
bash-17992 0D.h. 3us : idle_cpu (rcu_check_callbacks)
bash-17992 0D.h. 4us : __tasklet_schedule (rcu_check_callbacks)
bash-17992 0D.h. 5us : wakeup_softirqd (__tasklet_schedule)
bash-17992 0D.h. 6us : wake_up_process (wakeup_softirqd)
bash-17992 0D.h. 6us : try_to_wake_up (wake_up_process)
bash-17992 0D.h1 7us : activate_task (try_to_wake_up)
bash-17992 0D.h1 8us : sched_clock (activate_task)
bash-17992 0D.h1 9us : recalc_task_prio (activate_task)
bash-17992 0D.h1 10us : __recalc_task_prio (recalc_task_prio)
bash-17992 0D.h1 10us : __recalc_task_prio <<...>-7> (62 62)
bash-17992 0D.h1 11us : activate_task <<...>-7> (62 d)
bash-17992 0D.h1 12us : enqueue_task (activate_task)
bash-17992 0D.h1 12us : __trace_start_sched_wakeup (try_to_wake_up)
bash-17992 0D.h. 14us : wake_up_process (wakeup_softirqd)
bash-17992 0D.h. 14us : scheduler_tick (update_process_times)
bash-17992 0D.h. 15us : sched_clock (scheduler_tick)
bash-17992 0D.h1 16us : task_timeslice (scheduler_tick)
bash-17992 0D.h. 17us : run_posix_cpu_timers (update_process_times)
bash-17992 0D.h1 19us : note_interrupt (__do_IRQ)
bash-17992 0D.h1 19us : end_8259A_irq (__do_IRQ)
bash-17992 0D.h1 20us+: enable_8259A_irq (end_8259A_irq)
bash-17992 0Dnh1 22us : irq_exit (do_IRQ)
bash-17992 0Dn.1 23us < (608)
bash-17992 0.n.1 24us : eligible_child (do_wait)
bash-17992 0.n.1 25us : eligible_child (do_wait)
bash-17992 0.n.1 26us : eligible_child (do_wait)
bash-17992 0.n.1 28us : eligible_child (do_wait)
bash-17992 0.n.1 29us : eligible_child (do_wait)
[ 3000+ of these deleted ]
bash-17992 0.n.1 3296us : eligible_child (do_wait)
bash-17992 0.n.1 3297us : eligible_child (do_wait)
bash-17992 0.n.1 3298us : eligible_child (do_wait)
bash-17992 0.n.1 3299us : eligible_child (do_wait)
bash-17992 0.n.1 3300us : eligible_child (do_wait)
bash-17992 0.n.1 3301us : eligible_child (do_wait)
bash-17992 0.n.1 3303us : eligible_child (do_wait)
bash-17992 0.n.1 3304us : next_thread (do_wait)
bash-17992 0.n.. 3305us : preempt_schedule (do_wait)
bash-17992 0Dn.. 3306us : __schedule (preempt_schedule)
bash-17992 0Dn.. 3307us : profile_hit (__schedule)
bash-17992 0Dn.1 3308us+: sched_clock (__schedule)
<...>-3 0D..2 3314us+: __switch_to (__schedule)
<...>-3 0D..2 3316us : __schedule <bash-17992> (73 62)
<...>-3 0...1 3317us : trace_stop_sched_switched (__schedule)
<...>-3 0D..2 3318us : trace_stop_sched_switched <<...>-3> (62 0)
<...>-3 0D..2 3320us : trace_stop_sched_switched (__schedule)
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-20 0:40 2.6.14-rt22 (and mainline) excessive latency Lee Revell @ 2005-12-20 4:24 ` Ingo Molnar 2005-12-21 1:47 ` Paul E. McKenney 0 siblings, 1 reply; 8+ messages in thread From: Ingo Molnar @ 2005-12-20 4:24 UTC (permalink / raw) To: Lee Revell; +Cc: linux-kernel, Paul E. McKenney * Lee Revell <rlrevell@joe-job.com> wrote: > I captured this 3+ ms latency trace when killing a process with a few > thousand threads. Can a cond_resched be added to this code path? > bash-17992 0.n.1 29us : eligible_child (do_wait) > > [ 3000+ of these deleted ] > > bash-17992 0.n.1 3296us : eligible_child (do_wait) Atomicity of signal delivery is pretty much a must, so i'm not sure this particular latency can be fixed, short of running PREEMPT_RT. Paul E. McKenney is doing some excellent stuff by RCU-ifying the task lookup and signal code, but i'm not sure whether it could cover do_wait(). Ingo ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-20 4:24 ` Ingo Molnar @ 2005-12-21 1:47 ` Paul E. McKenney 2005-12-21 3:32 ` Lee Revell 0 siblings, 1 reply; 8+ messages in thread From: Paul E. McKenney @ 2005-12-21 1:47 UTC (permalink / raw) To: Ingo Molnar; +Cc: Lee Revell, linux-kernel On Tue, Dec 20, 2005 at 05:24:42AM +0100, Ingo Molnar wrote: > > * Lee Revell <rlrevell@joe-job.com> wrote: > > > I captured this 3+ ms latency trace when killing a process with a few > > thousand threads. Can a cond_resched be added to this code path? > > > bash-17992 0.n.1 29us : eligible_child (do_wait) > > > > [ 3000+ of these deleted ] > > > > bash-17992 0.n.1 3296us : eligible_child (do_wait) > > Atomicity of signal delivery is pretty much a must, so i'm not sure this > particular latency can be fixed, short of running PREEMPT_RT. Paul E. > McKenney is doing some excellent stuff by RCU-ifying the task lookup and > signal code, but i'm not sure whether it could cover do_wait(). Took a quick break from repeatedly shooting myself in the foot with RCU read-side priority boosting (still have a few toes left) to take a quick look at this. The TASK_TRACED and TASK_STOPPED cases seem non-trivial, and I am concerned about races with exit. Any thoughts on whether the latency is due to contention on the tasklist lock vs. the "goto repeat" in do_wait()? Thanx, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-21 1:47 ` Paul E. McKenney @ 2005-12-21 3:32 ` Lee Revell 2005-12-21 13:36 ` Paul E. McKenney 0 siblings, 1 reply; 8+ messages in thread From: Lee Revell @ 2005-12-21 3:32 UTC (permalink / raw) To: paulmck; +Cc: Ingo Molnar, linux-kernel On Tue, 2005-12-20 at 17:47 -0800, Paul E. McKenney wrote: > On Tue, Dec 20, 2005 at 05:24:42AM +0100, Ingo Molnar wrote: > > > > * Lee Revell <rlrevell@joe-job.com> wrote: > > > > > I captured this 3+ ms latency trace when killing a process with a few > > > thousand threads. Can a cond_resched be added to this code path? > > > > > bash-17992 0.n.1 29us : eligible_child (do_wait) > > > > > > [ 3000+ of these deleted ] > > > > > > bash-17992 0.n.1 3296us : eligible_child (do_wait) > > > > Atomicity of signal delivery is pretty much a must, so i'm not sure this > > particular latency can be fixed, short of running PREEMPT_RT. Paul E. > > McKenney is doing some excellent stuff by RCU-ifying the task lookup and > > signal code, but i'm not sure whether it could cover do_wait(). > > Took a quick break from repeatedly shooting myself in the foot with > RCU read-side priority boosting (still have a few toes left) to take > a quick look at this. The TASK_TRACED and TASK_STOPPED cases seem > non-trivial, and I am concerned about races with exit. > > Any thoughts on whether the latency is due to contention on the > tasklist lock vs. the "goto repeat" in do_wait()? It's a UP system so I'd be surprised if there were any contention. Lee ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-21 3:32 ` Lee Revell @ 2005-12-21 13:36 ` Paul E. McKenney 2005-12-21 19:54 ` Lee Revell 0 siblings, 1 reply; 8+ messages in thread From: Paul E. McKenney @ 2005-12-21 13:36 UTC (permalink / raw) To: Lee Revell; +Cc: Ingo Molnar, linux-kernel On Tue, Dec 20, 2005 at 10:32:48PM -0500, Lee Revell wrote: > On Tue, 2005-12-20 at 17:47 -0800, Paul E. McKenney wrote: > > On Tue, Dec 20, 2005 at 05:24:42AM +0100, Ingo Molnar wrote: > > > > > > * Lee Revell <rlrevell@joe-job.com> wrote: > > > > > > > I captured this 3+ ms latency trace when killing a process with a few > > > > thousand threads. Can a cond_resched be added to this code path? > > > > > > > bash-17992 0.n.1 29us : eligible_child (do_wait) > > > > > > > > [ 3000+ of these deleted ] > > > > > > > > bash-17992 0.n.1 3296us : eligible_child (do_wait) > > > > > > Atomicity of signal delivery is pretty much a must, so i'm not sure this > > > particular latency can be fixed, short of running PREEMPT_RT. Paul E. > > > McKenney is doing some excellent stuff by RCU-ifying the task lookup and > > > signal code, but i'm not sure whether it could cover do_wait(). > > > > Took a quick break from repeatedly shooting myself in the foot with > > RCU read-side priority boosting (still have a few toes left) to take > > a quick look at this. The TASK_TRACED and TASK_STOPPED cases seem > > non-trivial, and I am concerned about races with exit. > > > > Any thoughts on whether the latency is due to contention on the > > tasklist lock vs. the "goto repeat" in do_wait()? > > It's a UP system so I'd be surprised if there were any contention. Couldn't there be contention due to preemption of someone holding the tasklist lock? Thanx, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-21 13:36 ` Paul E. McKenney @ 2005-12-21 19:54 ` Lee Revell 2005-12-23 4:07 ` Paul E. McKenney 0 siblings, 1 reply; 8+ messages in thread From: Lee Revell @ 2005-12-21 19:54 UTC (permalink / raw) To: paulmck; +Cc: Ingo Molnar, linux-kernel On Wed, 2005-12-21 at 05:36 -0800, Paul E. McKenney wrote: > On Tue, Dec 20, 2005 at 10:32:48PM -0500, Lee Revell wrote: > > On Tue, 2005-12-20 at 17:47 -0800, Paul E. McKenney wrote: > > > On Tue, Dec 20, 2005 at 05:24:42AM +0100, Ingo Molnar wrote: > > > > > > > > * Lee Revell <rlrevell@joe-job.com> wrote: > > > > > > > > > I captured this 3+ ms latency trace when killing a process with a few > > > > > thousand threads. Can a cond_resched be added to this code path? > > > > > > > > > bash-17992 0.n.1 29us : eligible_child (do_wait) > > > > > > > > > > [ 3000+ of these deleted ] > > > > > > > > > > bash-17992 0.n.1 3296us : eligible_child (do_wait) > > > > > > > > Atomicity of signal delivery is pretty much a must, so i'm not sure this > > > > particular latency can be fixed, short of running PREEMPT_RT. Paul E. > > > > McKenney is doing some excellent stuff by RCU-ifying the task lookup and > > > > signal code, but i'm not sure whether it could cover do_wait(). > > > > > > Took a quick break from repeatedly shooting myself in the foot with > > > RCU read-side priority boosting (still have a few toes left) to take > > > a quick look at this. The TASK_TRACED and TASK_STOPPED cases seem > > > non-trivial, and I am concerned about races with exit. > > > > > > Any thoughts on whether the latency is due to contention on the > > > tasklist lock vs. the "goto repeat" in do_wait()? > > > > It's a UP system so I'd be surprised if there were any contention. > > Couldn't there be contention due to preemption of someone holding > the tasklist lock? But I'm running with PREEMPT_DESKTOP (specifically I configured a system to have the exact same preemption model as mainline - PREEMPT_DESKTOP with no soft/hardirq preemption) so holding a spinlock will disable preemption. Lee ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-21 19:54 ` Lee Revell @ 2005-12-23 4:07 ` Paul E. McKenney 2005-12-23 4:22 ` Lee Revell 0 siblings, 1 reply; 8+ messages in thread From: Paul E. McKenney @ 2005-12-23 4:07 UTC (permalink / raw) To: Lee Revell; +Cc: Ingo Molnar, linux-kernel On Wed, Dec 21, 2005 at 02:54:18PM -0500, Lee Revell wrote: > On Wed, 2005-12-21 at 05:36 -0800, Paul E. McKenney wrote: > > On Tue, Dec 20, 2005 at 10:32:48PM -0500, Lee Revell wrote: > > > On Tue, 2005-12-20 at 17:47 -0800, Paul E. McKenney wrote: > > > > On Tue, Dec 20, 2005 at 05:24:42AM +0100, Ingo Molnar wrote: > > > > > > > > > > * Lee Revell <rlrevell@joe-job.com> wrote: > > > > > > > > > > > I captured this 3+ ms latency trace when killing a process with a few > > > > > > thousand threads. Can a cond_resched be added to this code path? > > > > > > > > > > > bash-17992 0.n.1 29us : eligible_child (do_wait) > > > > > > > > > > > > [ 3000+ of these deleted ] > > > > > > > > > > > > bash-17992 0.n.1 3296us : eligible_child (do_wait) > > > > > > > > > > Atomicity of signal delivery is pretty much a must, so i'm not sure this > > > > > particular latency can be fixed, short of running PREEMPT_RT. Paul E. > > > > > McKenney is doing some excellent stuff by RCU-ifying the task lookup and > > > > > signal code, but i'm not sure whether it could cover do_wait(). > > > > > > > > Took a quick break from repeatedly shooting myself in the foot with > > > > RCU read-side priority boosting (still have a few toes left) to take > > > > a quick look at this. The TASK_TRACED and TASK_STOPPED cases seem > > > > non-trivial, and I am concerned about races with exit. > > > > > > > > Any thoughts on whether the latency is due to contention on the > > > > tasklist lock vs. the "goto repeat" in do_wait()? > > > > > > It's a UP system so I'd be surprised if there were any contention. > > > > Couldn't there be contention due to preemption of someone holding > > the tasklist lock? > > But I'm running with PREEMPT_DESKTOP (specifically I configured a system > to have the exact same preemption model as mainline - PREEMPT_DESKTOP > with no soft/hardirq preemption) so holding a spinlock will disable > preemption. My head just exploded. I will see about getting you a CONFIG_FREAKING_INSANE patch, if you are willing to test it. Thanx, Paul ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 2.6.14-rt22 (and mainline) excessive latency 2005-12-23 4:07 ` Paul E. McKenney @ 2005-12-23 4:22 ` Lee Revell 0 siblings, 0 replies; 8+ messages in thread From: Lee Revell @ 2005-12-23 4:22 UTC (permalink / raw) To: paulmck; +Cc: Ingo Molnar, linux-kernel On Thu, 2005-12-22 at 20:07 -0800, Paul E. McKenney wrote: > On Wed, Dec 21, 2005 at 02:54:18PM -0500, Lee Revell wrote: > > On Wed, 2005-12-21 at 05:36 -0800, Paul E. McKenney wrote: > > > On Tue, Dec 20, 2005 at 10:32:48PM -0500, Lee Revell wrote: > > > > On Tue, 2005-12-20 at 17:47 -0800, Paul E. McKenney wrote: > > > > > On Tue, Dec 20, 2005 at 05:24:42AM +0100, Ingo Molnar wrote: > > > > > > > > > > > > * Lee Revell <rlrevell@joe-job.com> wrote: > > > > > > > > > > > > > I captured this 3+ ms latency trace when killing a process with a few > > > > > > > thousand threads. Can a cond_resched be added to this code path? > > > > > > > > > > > > > bash-17992 0.n.1 29us : eligible_child (do_wait) > > > > > > > > > > > > > > [ 3000+ of these deleted ] > > > > > > > > > > > > > > bash-17992 0.n.1 3296us : eligible_child (do_wait) > > > > > > > > > > > > Atomicity of signal delivery is pretty much a must, so i'm not sure this > > > > > > particular latency can be fixed, short of running PREEMPT_RT. Paul E. > > > > > > McKenney is doing some excellent stuff by RCU-ifying the task lookup and > > > > > > signal code, but i'm not sure whether it could cover do_wait(). > > > > > > > > > > Took a quick break from repeatedly shooting myself in the foot with > > > > > RCU read-side priority boosting (still have a few toes left) to take > > > > > a quick look at this. The TASK_TRACED and TASK_STOPPED cases seem > > > > > non-trivial, and I am concerned about races with exit. > > > > > > > > > > Any thoughts on whether the latency is due to contention on the > > > > > tasklist lock vs. the "goto repeat" in do_wait()? > > > > > > > > It's a UP system so I'd be surprised if there were any contention. > > > > > > Couldn't there be contention due to preemption of someone holding > > > the tasklist lock? > > > > But I'm running with PREEMPT_DESKTOP (specifically I configured a system > > to have the exact same preemption model as mainline - PREEMPT_DESKTOP > > with no soft/hardirq preemption) so holding a spinlock will disable > > preemption. > > My head just exploded. I will see about getting you a > CONFIG_FREAKING_INSANE patch, if you are willing to test it. I'm not sure I know what you mean but sure, I'll try whatever you come up with. Lee ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2005-12-23 4:18 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-12-20 0:40 2.6.14-rt22 (and mainline) excessive latency Lee Revell 2005-12-20 4:24 ` Ingo Molnar 2005-12-21 1:47 ` Paul E. McKenney 2005-12-21 3:32 ` Lee Revell 2005-12-21 13:36 ` Paul E. McKenney 2005-12-21 19:54 ` Lee Revell 2005-12-23 4:07 ` Paul E. McKenney 2005-12-23 4:22 ` Lee Revell
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox