public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Keith Mannthey <kmannth@gmail.com>
To: "Davda, Bhavesh P (Bhavesh)" <bhavesh@avaya.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Debugging kernel semaphore contention and priority inversion
Date: Thu, 18 Aug 2005 10:39:33 -0700	[thread overview]
Message-ID: <a762e24050818103979fea1ce@mail.gmail.com> (raw)
In-Reply-To: <21FFE0795C0F654FAD783094A9AE1DFC0830FCD7@cof110avexu4.global.avaya.com>

On 8/17/05, Davda, Bhavesh P (Bhavesh) <bhavesh@avaya.com> wrote:
> > From: Keith Mannthey [mailto:kmannth@gmail.com]
> > Sent: Wednesday, August 17, 2005 5:33 PM
> >
> > On 8/17/05, Davda, Bhavesh P (Bhavesh) <bhavesh@avaya.com> wrote:
> > > Is there a way to know which task has a particular (struct
> > semaphore
> > > *) down()ed, leading to another task's down() blocking on it?
> >
> > I would add a field to struct semaphore that tracks the
> > current process.
> > In your various up and downs have that field tracks the
> > "current" process.
> 
> Yeah, I thought about that. Unfortunately, it doesn't meet my need for
> not Heisenberg'ing the system. I can't instrument the struct semaphore
> {} in a running system.

  What kernel are you using?

  Can you do some form of a crash dump (maybe some diskdump thing)? 
It is hard to debug without insturmentation of some kind....  You are
most likely going to have to rebuild/change your current kernel to
sort this issue out....
 
> > This way you dump the semaphore you can see what task it is
> > holding it.  Have the module dump the semaphore and you can
> > id the task
> >
> > > It would be helpful to get a kernel stacktrace for the culprit too.
> >
> > Have you tried sysrq t?  See the Documentation/sysrq.txt file.
> 
> This is a headless system.

  How do you know you are spinning on some inode semaphore?  If the
system is only headless how do you know you are dealing with some
priority inversion issue?  Maybe the system has a panic or ????

  It seems to me you might be jumping to conclusions.  
 
> >
> > How stuck is the system?
> >
> > Keith
> 
> Very. Only pingable, but can't login via telnet/ssh/anything. Reason is
> the same reason the low priority mystery task is unable to run and
> release the held semaphore.

  From the present state you have described you would be unable to
load a module or interact with the box in anyway. It is really hard to
debug a kernel without a console.  As others have suggested a serial
console/net console would help a bunch.

Good luck!

Keith

  reply	other threads:[~2005-08-18 17:39 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-18  3:43 Debugging kernel semaphore contention and priority inversion Davda, Bhavesh P (Bhavesh)
2005-08-18 17:39 ` Keith Mannthey [this message]
     [not found] <21FFE0795C0F654FAD783094A9AE1DFC0830FE03@cof110avexu4.glob al.avaya.com>
2005-08-19  5:16 ` Mike Galbraith
  -- strict thread matches above, loose matches on Subject: below --
2005-08-18 17:50 Davda, Bhavesh P (Bhavesh)
2005-08-18 14:50 Davda, Bhavesh P (Bhavesh)
2005-08-18 15:13 ` Hal Wigoda
2005-08-18 15:15 ` Steven Rostedt
2005-08-17 22:52 Davda, Bhavesh P (Bhavesh)
2005-08-17 23:33 ` Keith Mannthey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a762e24050818103979fea1ce@mail.gmail.com \
    --to=kmannth@gmail.com \
    --cc=bhavesh@avaya.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox