NFS Debug

Display NFS command

echo 65535 > /proc/sys/sunrpc/nfs_debug
dmesg | grep call_start

From dprintk

echo 65535 > /proc/sys/sunrpc/nfs_debug
echo 65535 > /proc/sys/sunrpc/rpc_debug

/*
 * RPC debug facilities
 */
#define RPCDBG_XPRT     0x0001
#define RPCDBG_CALL     0x0002
#define RPCDBG_DEBUG        0x0004
#define RPCDBG_NFS      0x0008
#define RPCDBG_AUTH     0x0010
#define RPCDBG_BIND     0x0020
#define RPCDBG_SCHED        0x0040
#define RPCDBG_TRANS        0x0080
#define RPCDBG_SVCXPRT      0x0100
#define RPCDBG_SVCDSP       0x0200
#define RPCDBG_MISC     0x0400
#define RPCDBG_CACHE        0x0800
#define RPCDBG_ALL      0x7fff

//如果没有指明类型,默认是RPCDBG_FACILITY,在不同文件里它的定义不一样

/*
 * NFS debug flags
 */
#define NFSDBG_VFS      0x0001
#define NFSDBG_DIRCACHE     0x0002
#define NFSDBG_LOOKUPCACHE  0x0004
#define NFSDBG_PAGECACHE    0x0008
#define NFSDBG_PROC     0x0010
#define NFSDBG_XDR      0x0020
#define NFSDBG_FILE     0x0040
#define NFSDBG_ROOT     0x0080
#define NFSDBG_CALLBACK     0x0100
#define NFSDBG_CLIENT       0x0200
#define NFSDBG_MOUNT        0x0400
#define NFSDBG_FSCACHE      0x0800
#define NFSDBG_PNFS     0x1000
#define NFSDBG_PNFS_LD      0x2000
#define NFSDBG_STATE        0x4000
#define NFSDBG_ALL      0xFFFF

//如果没有指明类型,默认是NFSDBG_FACILITY,在不同文件里它的定义不一样

rpcdebug command

rpcdebug -m nfs -c
rpcdebug -m nfs -s all
rpcdebug -m nfs -s proc
rpcdebug -m nfs -s file
rpcdebug -m nfs -s dircache
rpcdebug -m nfs -s pagecache
rpcdebug -m nfs -s fscache
rpcdebug -m nfs -s client
rpcdebug -m nfs -s state
rpcdebug -m nfs -s xdr
rpcdebug -m nfs -s vfs
dmesg

Kernel trace

内核中形如trace_xxxx_yyyy的宏,如trace_nfs4_lookup会展开成下面形状

#define DEFINE_NFS4_LOOKUP_EVENT(name) \
    DEFINE_EVENT(nfs4_lookup_event, name, \
            TP_PROTO( \
                const struct inode *dir, \
                const struct qstr *name, \
                int error \
            ), \
            TP_ARGS(dir, name, error))

DEFINE_NFS4_LOOKUP_EVENT(nfs4_lookup);

使用方法

mount -t debugfs nodev /sys/kernel/debug

echo 1 > /sys/kernel/debug/tracing/events/fs/enable
echo 1 > /sys/kernel/debug/tracing/events/filelock/enable

#默认这几个文件没有,需要用一个nfs请求触发,系统会创建这几个文件
echo 1 > /sys/kernel/debug/tracing/events/nfs/enable
echo 1 > /sys/kernel/debug/tracing/events/nfs4/enable
echo 1 > /sys/kernel/debug/tracing/events/sunrpc/enable

echo 1 > /sys/kernel/debug/tracing/tracing_on
echo 0 > /sys/kernel/debug/tracing/tracing_on

cat /sys/kernel/debug/tracing/trace
echo > /sys/kernel/debug/tracing/trace
image.png

增加log

printk(KERN_WARNING, "xxxx");

参考

refer 1
refer 2
refer 3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上图所示问题在新版nfs 已经不存在 ,服务器端软件:安装nfs-utils和portmap(rpcbind)nf...
    不排版阅读 837评论 1 0
  • Android跨进程通信IPC整体内容如下 1、Android跨进程通信IPC之1——Linux基础2、Andro...
    隔壁老李头阅读 11,174评论 2 16
  • 转自:http://blog.csdn.net/kesonyk/article/details/50924489 ...
    晴天哥_王志阅读 24,922评论 2 38
  • 这两天虽说在家里,但还是不停在发生着什么。 比如和你和好。比如我又发烧。比如丧失正常聊天能力。 和你和好这件事情最...
    InkInk阅读 217评论 0 2
  • 2018-8-20 天气晴 下过雨后闷热的天气,一点风都吹不起来,出门一趟就热成狗的节奏。娃他姑今天要回来,早上各...
    叶小愚阅读 195评论 0 0