Re: [patch] Real-Time Preemption, -RT-2.6.13-rc4-V0.7.52-01

Daniel Walker
2005-08-02T23:38:33Z

Couldn't you just do some math off current->timestamp to see how long
the task has been running? This per arch stuff seems a bit invasive..

Daniel

On Tue, 2005-08-02 at 15:45 -0400, Steven Rostedt wrote:
> On Tue, 2005-08-02 at 12:19 +0200, Ingo Molnar wrote:
> > * Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > > In my custom kernel, I have a wchan field of the task that records
> > > where the task calls something that might schedule. This way I can see
> > > where things locked up if I don't have a back trace of the task. This
> > > field is always zero when it switches to usermode. Something like
> > > this can also be used to check how long the process is in kernel mode.
> > > If a task is in the kernel for more than 10 seconds without sleeping,
> > > that would definitely be a good indication of something wrong. I
> > > probably could write something to check for this if people are
> > > interested. I wont waste my time if nobody would want it.
> >
> > this would be a pretty useful extension of the softlockup checker!
>
> Here it is (Finally). I just had to be patient with the kjournal
> lockup. I had to wait some time before the lockup occurred, but when it
> did, I got my message out:
> --------------------------------------------
> BUG: possible soft lockup detected on CPU#0! 1314840-1313839(1314839)
> curr=kjournald:734 count=11
> [<c010410f>] dump_stack+0x1f/0x30 (20)
> [<c01441e0>] softlockup_tick+0x170/0x1a0 (44)
> [<c0125d32>] update_process_times+0x62/0x140 (28)
> [<c010861d>] timer_interrupt+0x4d/0x100 (20)
> [<c014450f>] handle_IRQ_event+0x6f/0x120 (48)
> [<c014469c>] __do_IRQ+0xdc/0x1a0 (48)
> [<c0105abe>] do_IRQ+0x4e/0x90 (28)
> [<c0103b67>] common_interrupt+0x1f/0x24 (112)
> [<c01edc36>] journal_commit_transaction+0x1206/0x1430 (112)
> [<c01f06d0>] kjournald+0xd0/0x1e0 (84)
> [<c01011ed>] kernel_thread_helper+0x5/0x18 (825638940)
> ---------------------------
> | preempt count: 20010003 ]
> | 3-level deep critical section nesting:
> ----------------------------------------
> .. [<c013d49a>] .... add_preempt_count+0x1a/0x20
> .....[<c01085ec>] .. ( <= timer_interrupt+0x1c/0x100)
> .. [<c013d49a>] .... add_preempt_count+0x1a/0x20
> .....[<c014418d>] .. ( <= softlockup_tick+0x11d/0x1a0)
> .. [<c013d49a>] .... add_preempt_count+0x1a/0x20
> .....[<c013e727>] .. ( <= print_traces+0x17/0x50)
>
> ------------------------------
> | showing all locks held by: | (kjournald/734 [c13e20b0, 69]):
> ------------------------------
> -----------------------------------------------