nfs4trace release: all ops covered!
By samf on Jun 08, 2006
I have just pushed a new release of the DTrace provider for NFSv4. This is in fact the second release I've made -- the first release didn't get a blog entry. You can be sure to see all releases by watching the announcements section of the nfs4trace project. An RSS feed can be had here: http://www.opensolaris.org/rss/os/project/nfs4trace/announcements/rss2.xml
This release is based on Nevada build 41. I mention this so that you will know what bugs and bug fixes are present in this release. The release is in the form of bfu archives, so follow the usual procedure to install them.
This release of nfs4trace provides a set of probes for every NFSv4 operation. There is an overarching probe for the compound op, called "op-compound". Each op within a compound has its own probe, e.g. "op-lookup".
For every probe, args is a pointer to a nfs4_dtrace_info_t. This has the following fields:
|dt_xid||RPC transaction ID||you can use this to correlate "start" with "done"|
|dt_cr||pointer to the credential structure used for this operation||use args->dt_cr->cr_uid to get the user ID|
|dt_tag||NFSv4 tag field associated with this over-the-wire call||this is entirely implementation defined, and is meant simply to be human readable|
|dt_status||the status of the entire compound operation|
|dt_addr||the IP address of the "other end" of the request||for a client, the "other end" is the server; for a server, the "other end" is the client|
|dt_netid||the network ID of the "other end" of the request||network ID will be either "tcp" for IPv4 or "tcp6" for IPv6.|
Besides the normal compound operations, there is a probe for all callback-related operations. The probe "cb-compound" is analagous to "op-compound", but covers the callback channel. Each operation within a callback, e.g. OP_CB_GETATTR, also has a probe -- for this example, "cb-getattr".
To see a complete list of all probes, run
dtrace -P nfs4c -l
for client probes, and
dtrace -P nfs4s -l
for server probes.
Eventually, there will be probes for every nontrivial attribute, which will fire regardless of which operation is using them. But not all of these attributes are accounted for yet. Stay tuned.
What else is left? Your feedback will help decide this! Please try this, and let me know if you have any input. Thanks!