xargs fornece um comando xargs -P 0
, o documento menciona que gera tantos processos quanto possível para executar os comandos em paralelo. Mas está parando, por exemplo, no número de CPU disponível ou literalmente em várias dezenas de milhares de threads? Se for a segunda opção, não é menos eficiente do que gerar o número de threads de CPU? Acho que mudar constantemente entre processos pode levar um tempo não negligenciável, certo?
Acabei fazendo o teste sozinho. Então
-P 0
tenta executar todos os processos ao mesmo tempo (o limite está em torno do número máximo de threads permitidos por sistema operacional, que pode ser de vários milhares, eu acho), mas é uma péssima ideia usá-lo em tarefas com uso intensivo de CPU pois isso torna o sistema muito lento.Testei com cerca de 200
pdflatex
processos e o tempo geral de execução é realmente maior (2h05 minutos em vez de 1h10 minutos) do que no-P 16
meu processo ao usar 200 processos (acho que o tempo adicional para alternar entre processos explica isso). Além disso,-P 0
todo o sistema operacional é lento e difícil de usar, o que não é o caso do-P 16
. (Minha CPU tem 8 threads de CPU.)