Comment puis-je définir l'affinité processeur d'un processus sous Linux?


29

Comment puis-je définir l'affinité processeur d'un processus sous Linux?

Réponses:


24

J'ai utilisé le jeu de tâches pour cela. Si vous avez installé un ensemble de tâches, quelque chose comme:

taskset -c 1,3 -p 45678

définirait le processus avec l'ID 45678 pour avoir une affinité avec les processeurs 1 et 3.


1
Une modification anonyme a suggéré que la commande doit être taskset -p -c 1,3 45678plutôt que taskset -c 1,3 -p 45678; c'est-à-dire que le -c 1,3est une spécification de masque et, en tant que tel, doit être placé entre le -pet le pid.
G-Man dit `` Réintègre Monica ''

7

À l'intérieur du processus, l'appel serait sched_setaffinity(), ou pour les trucs pthreads,pthread_setaffinity_np()

Sur une note connexe, si vous vous inquiétez de l'affinité CPU de votre programme, il peut être utile de faire attention à la façon dont il fait l'allocation de mémoire. Les systèmes plus grands avec une mémoire connectée à plusieurs contrôleurs (c'est-à-dire plusieurs sockets CPU, chacun avec leur propre) auront une latence et une bande passante variables entre différentes paires CPU-mémoire. Vous voudrez également examiner l'affinité NUMA, en utilisant la numactlcommande ou les appels système avec lesquels elle fonctionne. Un programme sur lequel j'ai travaillé a obtenu une amélioration de 10% de ses performances.


3

Vous devez installer schedutils(utilitaires du planificateur Linux). Je l'ai utilisé sur mon bureau Ubuntu.

Lien SF


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.