Unix Like

Linux NFSv4 client 出现 [NFSServerIP-manager] 进程的问题

1. 结论:NFSv4 DELEGATION 机制导致的问题

参考 GitLab 的文档,在 NFS Server 上关闭 NFSv4 的 delegation 机制即可解决,操作如下:

  1. 在    中加入 ,然后运行   应用设置
  2. 重启 NFS Server

2. 问题分析

近期发现作为 NFSv4 client 的服务器,运行 I/O 操作多、运行时间长的程序后,系统会出现一个名为“[NFSServerIP-manager]”的进程(其中“NFSServerIP”是 NFS 服务器的 IP 地址),持续占用 100% CPU。出现之后,在 NFS Server 可以看到 [nfsd] 进程的 CPU 占用上升;在 NFS Client 端,本来在运行的程序会被阻塞,访问 NFSv4 的挂载点也变得极其缓慢。

此进程在 kernel 的 fs/nfs/nfs4state.c#L1211 发起。

尝试过更换内核版本,启用 NFS over RDMA,均不能解决此问题。

在此进程的出现后,通过   命令,可以看到   计数器在快速增加,通过 WireShark 对数据包进行分析,也能看到大量   操作相关的数据包。

似乎是因为 open 过的文件,close 后内核也会继续持有其 DELEGATION,运行文件操作多的程序时间长,累积得太多,清理时阻塞了 NFS Client 的文件读写操作,从而导致响应缓慢。