4

我现在正在远程集群上运行一个名为 CMAQ 的模拟代码。我首先连续运行基准测试以查看软件的性能。但是,该作业总是运行数十个小时,然后崩溃并出现以下“ Stale file handle, errno=116 ”错误消息:

PBS 作业 ID:91487.master.cluster 作业名称:cmaq_cctm_benchmark_serial.sh 执行主机:hs012/0 处理您的作业时发生错误,请参见下文。发布作业文件处理错误;job 91487.master.cluster on host hs012/0Unknown resource type REJHOST=hs012.cluster MSG=invalid home directory '/home/shangxin' 指定,errno=116 (旧文件句柄)

这很奇怪,因为我从不修改主目录,而这个“/home/shangxin/”肯定是我代码所在的永久目录......

此外,在标准输出 .log 文件中,作业失败时始终显示以下消息:

总线错误 100247.930u 34.292s 27:59:02.42 99.5% 0+0k 16480+0io 2pf+0w

这个消息具体是什么意思?

我曾经认为这个错误是由于作业消耗了 RAM,这是一个内存溢出问题。但是,当我在运行时登录计算节点使用“free -m”和“htop”命令检查内存使用情况时,我注意到RAM和交换内存占用都没有超过10%,处于非常低的水平,所以内存使用不是问题。

因为我使用“tee”将作业运行记录到一个日志文件中,这个文件最多可以包含几万行,大小超过1MB。为了测试这个标准输出是否会压倒集群系统,我运行了另一个相同的作业,但没有标准输出日志文件。数十小时后,新作业仍然失败,并出现相同的“Stale file handle,errno=116”错误,因此标准输出也不是原因。

我还尝试与多个内核并行运行该作业,运行数十小时后仍然失败并出现相同的错误。

我可以确保我正在使用的代码没有问题,因为它可以在其他集群上成功完成。该集群的管理员正在调查该问题,但目前还无法找出具体原因。

有没有人遇到过这个奇怪的错误?我们应该怎么做才能解决集群上的这个问题?任何帮助表示赞赏!

4

1 回答 1

2

在学术集群上,主目录经常通过 NFS 挂载在集群中的每个节点上,以便为您提供跨所有节点的统一体验。如果不是这种情况,每个节点都会有自己的主目录版本,并且您必须采取明确的措施在工作节点和/或登录节点之间复制相关文件。

听起来您的工作节点上的主目录的 NFS 挂载可能在您的作业运行时失败。这不是您可以直接解决的问题,除非您对集群具有管理权限。如果您需要解决问题并且不能等待系统管理员解决问题,您可以:

  1. 尝试在工作节点上使用不同的网络驱动器(如果可用)。在我处理过的集群上,通常有暂存空间或其他 NFS 直接位于根目录 / 下。您可能会很幸运并找到一个比您的主目录更可靠的 NFS 挂载。
  2. 让您的工作在工作节点本地的临时目录中工作,并将其所有输出文件和日志写入该目录。在您的工作结束时,您需要将所有内容复制到集群上登录节点上的主目录。如果您的密钥在您的主目录中,这对于 ssh 可能会很困难,并且可能需要您将密钥复制到临时目录,这通常是一个坏主意,除非您使用文件权限限制对密钥的访问。
  3. 尝试分配到集群的不同节点。以我的经验,学术集群通常有一些节点比其他节点更不稳定。根据本地设置,您可能能够直接请求某些节点,或者可能请求仅在稳定节点上可用的资源。如果您可以跟踪哪些节点不稳定,并且您发现您的作业分配给了不稳定节点,您可以重新提交您的作业,然后取消不稳定节点上的作业。

最简单的解决方案是与集群管理员合作,但我知道他们并不总是按您的计划工作。

于 2018-05-01T21:15:41.097 回答