Pour ça, il faut utiliser l'architecture NUMA (Non Uniform Memory Access).
Pour savoir combien de cpu et noeuds mémoire tu as :
egrep -e "Node|present" /proc/zoneinfo
Parmis les commandes utiles, tu as numactl.
Tu dois commencer par créer un cpuset:
mkdir /dev/cpuset
mount -t cpuset none /dev/cpuset
Par défaut, il y a un cpuset de créé (cpuset "/" ) qui contient l'ensemble des cpus (fichier cpus) et la mémoire (fichier mems), et l'ensemble des tâches qui lui sont affectées (fichier tasks).
Pour vérifier l'attachement d'un process à un cpuset, tu peux faire un cat /proc/PID/cpuset
Pour construire un cpuset utilisant le premier processeur et tous les noeuds de mémoire:
mkdir /dev/cpuset/uc1
echo 0 > /dev/cpuset/uc1/cpus
echo 0-1 > /dev/cpuset/uc1/mems
Pour associer une tâche à un cpuset : "/bin/echo PID >> /dev/cpuset/uc1/tasks"
Les tâches enfants seront associées au cpuset.
Je n'ai pas vraiment eu le loisir de tester tout ceci (c'est tiré de "/proc et /sys de chez O'reilly).
Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"
Poste le Friday 24 August 2007 11:42:15