Since I went digging through the kernel source code yesterday , here is the meaning of the fields in the RPC queue dump that you get any time you write to
/proc/sys/sunrpc/rpc_debug
.
As far as I've been able to work out, the useful fields are:
-pid-
| An internal RPC sequence number; it has nothing to do with process PIDs, despite the name. |
proc
| The RPC procedure number being invoked, in decimal; you can find which NFS action is which number from places like
include/linux/nfs3.h
in the Linux kernel source. |
flgs
| The RPC flags in hex; see
include/linux/sunrpc/sched.h
for the values. |
status
| Either 0 or a (negated)
errno
if the task has hit an error. |
-client-
| An opaque identifier for the client (literally, the pointer to the RPC client structure in the kernel). |
-prog-
| What RPC facility is being invoked, in decimal; NFS is RPC 'program' 100003. You can find out the program numbers most easily with
rpcinfo -p
. |
-timeout
| The timeout, in jiffies. |
-rpcwait
| What the task is waiting for, if anything. |
(The
--rqstp-
,
-action-
, and
--exit--
fields are better off ignored if you are not debugging the kernel; they are pointers to internal kernel structures. About all you can do with them is see which tasks have the same one.)
Unfortunately, there is no way to map from a particular RPC request to the processes that are waiting on it; the
-pid-
field is mostly useful for matching things up with any other debugging messages that you have the RPC system produce.