У меня есть файл с именем commands.txt
, в котором есть несколько команд, которые я хочу выполнить параллельно. Я хочу выполнить их на удаленном сервере с 16 ядрами и 32 процессорами. Я решил использовать для этого parallel
.
Мне удалось запустить несколько тысяч строк commands.txt
, но количество параллельных заданий продолжало уменьшаться снова и снова из-за «невозможности порождают новые процессы ». В конце концов, он не смог запустить никаких новых процессов и, следовательно, остановился. К счастью, я использовал параметр --joblog
, чтобы сохранить свой прогресс. Точная команда, которую я использую: parallel --joblog joblog.txt --resume --progress --eta --bar < commands.txt >> errors.txt
Я думал, что если оставить на некоторое время, все устаревшие процессы будут убиты. Итак, через некоторое время я снова выполнил ту же команду. Я все еще получаю следующую ошибку:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
Academic tradition requires you to cite works you base your article on.
When using programs that use GNU Parallel to process data for publication
please cite:
O. Tange (2011): GNU Parallel - The Command-Line Power Tool,
;login: The USENIX Magazine, February 2011:42-47.
This helps funding further development; AND IT WON'T COST YOU A CENT.
If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
To silence this citation notice: run 'parallel --citation'.
parallel: Warning: Cannot spawn any jobs. Raising ulimit -u or /etc/security/limits.conf
parallel: Warning: or /proc/sys/kernel/pid_max may help.
Я сомневаюсь, что предупреждение о локали имеет какое-либо отношение к parallel
остановлено.
Некоторая отладочная информация:
/proc/sys/kernel/pid_max
содержит 32768
ps -aux |wc -l
выходы 453
ulimit -u
выходы 504433
/etc/security/limits.conf
пусто (закомментировано)
У меня есть root доступ на удаленном сервере, но мы хотели бы избежать внесения каких-либо изменений, требующих доступа root (потому что это общий экземпляр).
Если это актуально, каждая строка commands.txt
является вызов сценария python с разными аргументами, при этом все STDERR перенаправляются на STDOUT. Этот сценарий также выполняет os.system
вызовов и, следовательно, может порождать фиксированное количество новых процессов. Некоторые из них просто копируют файлы, а другие обращаются к серверу для получения ответа. Таким образом, время, затрачиваемое на каждую строку, сильно различается.
В первую очередь я ищу, чтобы сценарий возобновился. Я не понимаю, почему он говорит, что не может порождать новые процессы. Я могу порождать другие процессы.
Следующее, что я ищу, - это как убедиться, что он продолжает использовать 24 из 32 процессоров; путем повторной попытки запустить новый процесс в случае сбоя вместо уменьшения максимального числа параллельных заданий на 1.