单个进程阻止整个节点上的 NFS 挂载

单个进程阻止整个节点上的 NFS 挂载

我们有一个 NFS 挂载点和一个 PBS 集群,其中所有节点都挂载该 NFS 挂载点。

我们发现,PBS 集群节点之一上的单个进程可能会完全饱和,并导致该节点上的 NFS 挂载陷入瘫痪。这是一个大问题,因为 PBS 通常会在同一节点上安排多个作业,这些作业仅指定 CPU 和内存约束,但 PBS 似乎并不关心 IO 约束。这意味着单个 IO 绑定作业可能不需要太多 CPU 和内存,但可能会导致整个节点不可用,至少在 NFS 挂载方面如此。

我可以通过在节点上运行以下命令来重现此问题:

cat /nfsmount/verylargefile.txt > /dev/null

这将从根本上阻止该节点上的任何其他进程访问 NFS 挂载。即使执行简单的“ls /nfsmount”也会花费很长时间。请注意,同一 NFS 挂载点在其他节点上的性能不会受到影响,因此这似乎是客户端问题。

有人有过这种行为的经历吗?我应该寻找什么陷阱吗?我原以为,如果有多个进程访问 NFS 挂载,就必须有一些逻辑来尝试分配 NFS 挂载的“带宽”,以防止单个进程占用这种资源。

我们的 PBS 集群正在运行 RedHat 6.5,但我也在我的 Ubuntu 14.04 工作站上重现了这一点。

相关内容