2011-04-26 3 views
3

Comment puis-je faire une commande unix (disons un one-liner en utilisant couper et awk sur un fichier énorme) utiliser tous les 16 cœurs au lieu de seulement 1? Ce n'est pas un programme où je peux utiliser -j et spécifier le nombre de CPU à utiliser ...comment faire unix commande utiliser plusieurs CPU

Répondre

1

Une façon possible est de diviser votre fichier d'entrée en plusieurs parties, puis de lancer des canalisations séparées pour chaque pièce . Plusieurs processus prendront plusieurs cœurs.

+0

mais tous les processeurs ne seront pas utilisés en même temps? Y aura-t-il des moments où un certain processeur n'est pas utilisé? – Nick

+0

Plusieurs processus doivent utiliser des processeurs séparés mais je ne suis pas totalement sûr. –

0

Si vous utilisez les deux cut et awk dans le même pipeline, ils vont probablement fonctionner sur différents processeurs, de sorte que vous utiliserez deux d'entre eux. Il n'existe pas de moyen simple de configurer un pipeline court comme celui-ci pour utiliser plus de processeurs que le nombre d'étapes dans le pipeline.

+1

J'ai une longue commande, dis quelque chose comme (coupe -f 5 HUGEFILE.txt | awk '{print $ 1 + $ 2}'). L'ordinateur sur lequel je travaille indique qu'il utilise 100% de 1 processeur et que le reste est inactif. – Nick

3

Avez-vous essayé le parallélisme GNU pour des travaux en parallèle? Voir http://www.gnu.org/software/parallel/

+0

+1. Outil intéressant. Je n'en ai jamais entendu parler auparavant. –

+0

Voir aussi: http://lwn.net/Articles/395090/ – ninjalj

+0

Pour votre tâche, vous devriez regarder dans l'option --pipe démontré ici: http://www.youtube.com/watch?v=1ntxT-47VPA –