GNU Parallel не использует все процессоры - PullRequest
1 голос
/ 18 марта 2019

Я использую GNU параллельно, чтобы ускорить процесс.Тем не менее, GNU Parallels не использует все ядра на моей машине.Интересно, что ограничивающий фактор здесь.

Команда:

find data -type f | parallel --pipe -P 70 python program.py > output 

Однако она использует только 4 из 70 ядер.Интересно, кто-нибудь знает, есть ли другие ограничения, которые заставляют его использовать только 4 ядра.

1 Ответ

1 голос
/ 18 марта 2019

Я не знаю, что program.py делает.Но очень редко можно использовать --pipe вместе с find.Поэтому я думаю, что это то, что вы хотите:

find data -type f | parallel -P 70 python program.py > output 

При --pipe вывод find должен быть не менее 70 МБ, чтобы 70 параллельных заданий выполнялись параллельно, поскольку значение по умолчанию --block-size равно 1 МБ.:

find data -type f | parallel --pipe -P 70 python program.py > output 

IF program.py действительно читает имена файлов на stdin, тогда вам, вероятно, следует использовать --round-robin с меньшим --block:

find data -type f | parallel --pipe --block 1k --round-robin -P 70 python program.py > output

.find и отдайте первый 1 КБайт на первое задание, 70-й КБайт на 70-е задание и 71-й КБайт на первое задание.

...