【发布时间】:2023-12-18 00:42:01
【问题描述】:
我的问题:
每天晚上,我的 crontab 都会在 CentOS 6.5 下使用 PBS 的超级计算机上启动几个夜间测试。启动时,作业在队列中等待。当调度程序允许运行时,我的工作就开始了。这比调度程序同时启动所有作业更常见(即使我的 crontab 在分开的时刻启动它们)。
我无法修改工作的主要部分(但我可以在之前添加内容)。每个作业都从更新一个通用 SVN 存储库开始。但是,当作业同时开始时,由于同一存储库上的并发更新,我遇到了错误。我想避免这种情况。
我的期望:
当由调度程序启动时,作业可能会在启动前等待几秒钟。一个解决方案可能是在开始之前等待一个随机时间,但是随着我并行执行的测试数量的增加,拥有相同随机时间的风险会快速增长。如果我通过选择一个大的随机数来降低这种风险,我必须等待太久(锁定超级计算机上未使用的资源)。
我想可以以多线程安全的方式为每个作业存储“我现在启动,其他人必须等待 1 分钟”的信息,但我没有'不知道怎么做。我想象的是一种互斥锁,但只会导致延迟而不是等待结束的锁。
首选没有 MPI 的解决方案。
当然,我愿意接受其他解决方案。欢迎任何帮助。
【问题讨论】:
-
也许*.com/questions/22427859/… 足够相似以提供帮助?
标签: bash svn concurrency mutex pbs