Gnu Parallel зависает как один процесс "спит"

1197
Randomize

Я параллельно запускаю команду, используя Gnu Parallel, которая имеет два параметра в качестве входных данных: каталог и файл conf:

parallel --gnu my_command ::: (ls -d dir*test) ::: properties.conf 

Я запускаю его на многоядерном процессоре (24 ядра), и «my_command» выполняется на каждом ядре в общей сложности 24 выполнения. Каждый экземпляр команды успешно генерирует вывод. Проблема в том, что иногда после их выполнения одна команда my_command переключается в режим ожидания и таким образом gnu -rallel никогда не завершается. Есть ли способ заставить gnu -rallel автоматически выйти или автоматически разбудить эти спящие процессы?

3

1 ответ на вопрос

2
Ole Tange

Используйте --timeout:

parallel --timeout 200% my_command ::: dir*test ::: properties.conf 
Я попробовал это, и это сработало. У меня было 4 процесса из 24 в спящем режиме, и они были освобождены. Во всяком случае, это заняло довольно много времени. От человека я не могу получить точно 200% -ое значение. Как я могу оценить это лучше? Randomize 10 лет назад 0
Время для команды. Если команда выполняется дольше, чем val секунд, она будет уничтожена SIGTERM, затем SIGTERM через 200 мс, а затем SIGKILL через 200 мс. Если за val следует%, то время ожидания будет динамически вычисляться как процент от среднего времени выполнения. Только значения> 100% будут иметь смысл. Ole Tange 10 лет назад 1

Похожие вопросы