如何更改SLURM更新输出文件(stdout)的频率?

15
我正在使用SLURM在超级计算机上分发任务。我设置了--output=log.out选项,以将作业的标准输出内容保存到文件(log.out)中。我发现该文件每30-60分钟更新一次,这使得我难以查看我的任务状态。
你知道为什么更新此文件需要这么长时间吗?有没有办法更改设置,使得该文件能够更频繁地更新?
使用SLURM 14.03.4-2。
1个回答

13
这可能与缓冲有关。
您是否尝试过禁用输出缓冲,如这里所建议的?我建议使用stdbuf选项:
stdbuf -o0 -e0 command

但是如果没有更多的信息,我无法确定,因为我从未遇到过这样的行为。您使用的是哪个文件系统?
此外,如果您使用srun来运行命令,您可以使用--unbuffered选项来禁用输出缓冲。

1
你是对的,这完全与缓冲有关。我的程序从未刷新stdout缓冲区。直到我开始将stdout输出到文件时,我才意识到这一点。 - Neal Kruis
4
请明确一下,这里的“command”是指可执行二进制文件。另外,在脚本中这段代码应该放在srun之前还是之后? - rambalachandran
4
@NealKruis 我曾遇到类似的问题。在我的情况下,我使用Python中的print函数将消息打印到.out文件中。通过将print命令更改为print(..., flush=True),代码执行时.out文件得到了始终如一的更新。 - Guilherme Salomé
3
假设脚本名为 code.py,则命令应为 srun --unbuffered python code.py - Yi Huang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接