2017-06-13 8 views
2

Certains programmes de ligne de commande GNU/Linux (tels que "oggenc", pour encoder l'audio au format ogg vorbis) utilisent seulement 1 de tous les cœurs de votre CPU. Le problème est que, dans mon cas, j'ai 4 cœurs et que les programmes utilisent seulement 1 core, ce qui fait travailler le CPU à 25% (un seul des cœurs travaille à 100%, mais les 3 autres sont à 0% pour cette tâche).Traitement parallèle dans la ligne de commande GNU/Linux

Il pourrait être possible de forcer l'utilisation de plusieurs cœurs pour un programme de ligne de commande?

Ce serait bien avec une sorte de tâches telles que zip, tar, oggenc, etc.

PS: J'ai trouvé un programme appelé « parallèle », mais je ne suis pas réaliser comment faire fonctionner correctement ... :(

+0

Si le programme n'a pas écrit avec multi-thread ou multi-fonctions de traitement, vous ne pouvez pas le faire fonctionner sur plusieurs CPUs.You peut Exécuter 2 instances de cette commande dans le même temps, puis ils utiliseront probablement 2 processeurs. – Tamar

+0

Stack Overflow est un site de questions sur la programmation et le développement. Cette question semble être hors sujet car il ne s'agit pas de programmation ou de développement. Voir [Quels sujets puis-je poser à ce sujet?] (Http://stackoverflow.com/help/on-topic) dans le centre d'aide. Peut-être [Super User] (http://superuser.com/) ou [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) serait un meilleur endroit à demander. Si vous sentez son sur-sujet ailleurs, alors [demander une migration] (http://meta.stackoverflow.com/q/254851) – jww

Répondre

2

Avec GNU Parallèle vous pouvez faire:

parallel gzip ::: * 
parallel opusenc {} {.}.opus ::: *.wav 

GNU parallèle est un paralléliseur général et rend facile à exécuter des travaux en parallèle sur la même machine ou sur plusieurs machines que vous avez accès à ssh.

Si vous avez 32 emplois différents que vous voulez exécuter sur 4 processeurs, une voie à suivre directement à paralléliser est d'exécuter 8 emplois sur chaque CPU:

Simple scheduling

parallèle GNU fraie à la place un nouveau processus lorsque on finit - garder les CPU active et un gain de temps:

GNU Parallel scheduling

InstallationPour des raisons de sécurité, vous devez installer GNU Parallel avec votre gestionnaire de paquets, mais si GNU Parallel n'est pas empaqueté pour votre distribution, vous pouvez faire une installation personnelle, qui ne nécessite pas d'accès root. Il peut être fait en 10 secondes en faisant ceci:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

Pour d'autres options d'installation, voir http://git.savannah.gnu.org/cgit/parallel.git/tree/README

En savoir plus

Voir d'autres exemples: http://www.gnu.org/software/parallel/man.html

Regardez l'intégralité des vidéos d'intro: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Promenade à travers t il tutoriel: http://www.gnu.org/software/parallel/parallel_tutorial.html

Inscrivez-vous à la liste de courrier électronique pour obtenir de l'aide: https://lists.gnu.org/mailman/listinfo/parallel

+0

Cela sonne bien, mais ... si la commande est, par exemple, "oggenc -q 8 * .flac ", comment serait-il en utilisant parallèle? – Ommadawn

+0

'parallel oggenc -q 8 {} ::: * .flac' Veuillez parcourir le didacticiel avant de poser la question suivante. http://www.gnu.org/software/parallel/parallel_tutorial.html –

0

Lorsque vous êtes compiler le noyau Linux, vous pouvez utiliser -j paramètre pour faire command.Then vous pouvez voir le multiple core été utilisé.

make -j X 

make -j nombre de cœurs + 1