Моя проблема:
Каждую ночь мой crontab запускает несколько ночных тестов на суперкомпьютере, работающем с PBS под CentOS 6.5. При запуске задания ждут в очереди. Когда планировщик разрешает запуск, мои задания начинаются. Довольно часто планировщик запускает все задания точно в одно и то же время (даже если мой crontab запускал их в разные моменты времени).
Я не могу изменить основную часть задания (но я могу добавить что-то раньше). Каждое задание начинается с обновления общего репозитория SVN. Но когда задания запускаются одновременно, у меня возникает ошибка из-за одновременных обновлений в одном и том же репозитории. Я хочу избежать этого.
Что я ожидаю:
При запуске планировщиком задание может ждать несколько секунд перед запуском. Решением может быть ожидание случайного времени перед запуском, но риск того, что одно и то же случайное время будет быстро расти с количеством тестов, которые я выполняю параллельно. Если я уменьшу этот риск, выбрав большое случайное число, мне придется слишком долго ждать (блокируя неиспользуемые ресурсы на суперкомпьютере).
Я предполагаю, что можно хранить информацию "Я запущу сейчас, другим нужно подождать 1 минуту" для каждого задания в многопоточном безопасном режиме, но я не знаю, как это сделать. . То, что я представляю, является своего рода мьютексом, но вызывает только задержку, а не блокировку, ожидающую конца.
Предпочтение отдается решению без MPI.
Конечно, я открыт для других решений. Любая помощь приветствуется.