What Linux's RPC queue dump means, sort of

April 24, 2008

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.

Written on 24 April 2008.
« A brief mention of some tools for debugging Linux NFS client issues
BitTorrent trackers are not innocent bystanders »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Thu Apr 24 23:14:06 2008
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.