J'exécute une commande comme celle-ci sur mon serveur de 36 cœurs (EC2 c4.8xlarge/Amazon Linux).
find . -type f | parallel -j 36 mycommand
Le nombre de fichiers à traiter est de ~1.000.000, et cela prend des dizaines de minutes. Il devrait exécuter 36 processus simultanément. Cependant, d'après le résultat de top
il y a environ 10 processus au maximum, et 70% sont inactifs. ps
montre plus de processus, mais la plupart d'entre eux sont défunts.
J'ai deviné que c'était parce que chaque mycommand
a terminé si rapidement, parallel
n'a pas pu rattraper son retard en créant de nouveaux processus. J'ai donc essayé parallel --nice 20
pour allouer plus de temps CPU à parallel
mais cela n'a pas fonctionné.
Quelqu'un a-t-il une idée pour améliorer cela ?
$ parallel --version GNU parallel 20151022