Comment exécuter un programme avec un seul cœur de processeur?

25

J'essaie d'exécuter un tas de scripts liés à un serveur de jeux dans Terminator. Le seul problème est que lorsque je fais cela, Terminator détecte tous mes cœurs de processeur et le PC est en retard. Y a-t-il un moyen de le démarrer, mais amenez-le à penser que je n'ai qu'un seul cœur de processeur?

    
posée user245115 16.06.2014 - 00:17
la source

2 réponses

38

Ce n'est pas terminator qui fait la "propagation" sur tout le processeur d'un processus donné. Linux lui-même (le noyau) le fait. Une tâche (processus) est planifiée comme disponible pour s'exécuter sur tous les processeurs par défaut; s'il utilise des threads, il peut utiliser plusieurs processeurs à la fois.

Pour limiter un processus à un processeur spécifique, vous utilisez la commande taskset .

taskset --cpu-list 1,2 my_command 

force la commande à exécuter uniquement les processeurs # 1 ou # 2.

Pour en savoir plus, tapez man taskset ou recherchez "affinité processeur Linux" (premier appel ici ).

    
réponse donnée Rmano 16.06.2014 - 00:38
la source
5

Bien qu'une autre réponse ait déjà donné la réponse littérale, j'explorerais la possibilité que cela ne se fasse pas correctement. Au lieu de cela, vous devez exécuter un script que vous ne souhaitez pas ralentir (comme les scripts non interactifs) à l'aide de la commande nice .

Pour ce faire, préfixez simplement la commande que vous souhaitez exécuter avec nice, par exemple: nice command_to_run Cela rendra le programme moins prioritaire par rapport aux autres tâches et ne ralentira pas votre machine. J'utilise souvent cette technique lorsque je fais une longue compilation qui ralentirait mon PC, ce qui a l'avantage de permettre au programme d'utiliser tous les cœurs lorsque la machine n'est pas occupée, mais l'arrêtera rapidement lorsque vous exécuterez quelque chose. sinon.

    
réponse donnée Vality 16.06.2014 - 15:08
la source

Lire d'autres questions sur les étiquettes