1

我们正在尝试使用扭矩检查点 MPI 作业,但似乎扭矩只能处理在单个节点上运行的作业。我检查了代码,发现当使用qhold检查作业时,qhold向pbs服务器发送一个PBS_BATCH_HoldJob请求,然后pbs服务器将此请求中继到主控主机,然后主控主机用BLCR检查自己运行的作业进程,但没有将请求发送到其姐妹节点,因此 MPI 作业似乎无法在扭矩上进行检查点。

还有一个问题,checkpoint 成功后(qhold 报告),torque 向 master 主机中的进程发送信号 15 以杀死该进程,然后,torque 会将 checkpoint 文件复制到 pbs_server 并在本地删除所有文件。使用qrls重启这个job时,调度器会为这个job分配新的节点,并将checkpoint文件复制到新节点,然后通过checkpoint文件重启job,那么问题来了:

  1. 假设 Torque 可以对每个节点的 MPI 作业的进程进行 checkpoint,而通常我们的作业会占用大量内存,因此 checkpoint 文件非常大,但是 pbs 服务器没有足够大的磁盘来容纳 checkpoint 文件.

  2. 在我们的环境中,在 MPI 作业开始之前,我们将一些大的元数据从另一个集群中直接拉到分配给 MPI 作业的节点上进行计算,并且在 checkpoint/restart 之后,作业进程可能会在一些不同的节点中恢复,并且元数据数据可能丢失。

如果有人可以告诉我你是如何为 MPI 工作做检查点的,如果我的问题可以回答并且需要修改扭矩代码,我也喜欢这样做。

谢谢。

4

0 回答 0