Previous page

Next page

Locate page in Contents

Print this page

Finding Kernel Function That Caused D Process State

If there are too many processes in the D state and you can't find out what is happening, issue the following command:

# objdump -Dr /boot/vmlinux-`uname -r` >/tmp/kernel.dump

and then get the process list:

# ps axfwln

F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND

100 0 20418 20417 17 0 2588 684 - R ? 0:00 ps axfwln

100 0 1 0 8 0 1388 524 145186 S ? 0:00 init

040 0 8670 1 9 0 1448 960 145186 S ? 0:00 syslogd -m 0

040 0 8713 1 10 0 1616 1140 11ea02 S ? 0:00 crond

Look for a number under the WCHAN column for the process in question. Then, open /tmp/kernel.dump in an editor, find that number in the first column and then scroll backward to the first function name, which can look like this:

"c011e910 <sys_nanosleep>:"

Then you can tell if the process "lives" or is blocked into the found function.