Messages in this thread |  | | Date | Tue, 8 Apr 2008 13:49:08 +0200 | From | Andi Kleen <> | Subject | Re: proc_stack for x86_64 (spinning process) |
| |
On Tue, Apr 08, 2008 at 12:41:45PM +0100, Nuno Fernandes wrote: > On Tuesday 08 April 2008 12:21:53 Andi Kleen wrote: > > Nuno Pais Fernandes <npf@eurotux.com> writes: > > > Hi, > > > > > > I have a spinning process that it's locking my server (eating 100% CPU). > > > I can't kill it even with kill -9 > > > > > > I'm trying to use proc_stack to check what's the problem, compiling the > > > kernel with > > > > > > http://linuxhacker.ru/~nikita/patches/2.6.12-rc6/2005.06.11/vm_07-proc-st > > >ack.patch > > > > > > But this patch is only for x86 as my arch is x86_64. Does anyone know if > > > there's a patch for x86_64? > > > > The standard way to handle that is to just do > > > > echo 1 > /proc/sys/kernel/sysrq > > echo t > /proc/sysrq-trigger > > > > and then look for the process backtrace in the kernel log. > I've already done that but the problem is that the "R" script does not show > any backtrack. Apparently it's spinning inside kernel and all other processes > become in D state (uninterrutable sleep) because of that one.
Then you can either try to catch it with sysrq-p (but only works rarely) or better use the crash method. But if the process is running live dump might not work, you might need to force a non live dump using sysrq-c
Another way to identify spinning code is to use a profiler like oprofile or readprofile. Something that spins tends to be on top.
-Andi
|  |