Est-il possible de désactiver un CPU, pas un core? Je veux faire un test pour vérifier si les performances peuvent faire une grande différence ou non.
J'utilise Ubuntu 10.10.
Est-il possible de désactiver un CPU, pas un core? Je veux faire un test pour vérifier si les performances peuvent faire une grande différence ou non.
J'utilise Ubuntu 10.10.
Réponses:
En plus de le faire dans votre BIOS, une option est appelée maxcpus
.
Vous pouvez modifier cette option dans lors de la sélection de votre option de démarrage grub en ajoutant maxcpus=1
aux paramètres. Image de vers aléatoire:
Choisissez «e» et vous obtenez une ligne de commande où vous pouvez ajouter des options.
Vous pouvez également créer une option de démarrage permanente dans grub en faisant une copie de votre option de démarrage actuelle et en l'ajoutant maxcpus=1
aux paramètres de démarrage. Vous pouvez nommer ce 'Ubuntu, kernel 2.5.12-9-386 (1 cpu)' et l'avoir parmi les autres options de démarrage comme le montre l'image.
Vous pouvez vérifier le fonctionnement sur 1 unité centrale en émettant:
cat /proc/cpuinfo | grep processor
cela devrait montrer quelque chose comme ceci:
processeur: 0 processeur: 1
Et la 2ème ligne devrait disparaître après le démarrage avec 1 CPU.
Vous pouvez désactiver dynamiquement les CPU via /sys/devices/system/cpu/cpuN/online
, par exemple pour désactiver le CPU 1, utilisez:
echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online
et pour réactiver, utilisez:
echo 1 | sudo tee /sys/devices/system/cpu/cpu1/online
Vous pouvez toujours débrancher le CPU de son socket. C'est de la force brute, mais vous êtes assuré d'obtenir le test que vous voulez, et vous n'avez pas à vous inquiéter si le commutateur kernel / BIOS / quel qu'il soit fait vraiment ce que vous espérez qu'il fasse.
Mon entreprise possède de grandes installations de batteries de serveurs dans divers endroits à travers le monde. Dans notre laboratoire, nous supprimons parfois les CPU des sockets pour un tel test.
Il y a une variation intéressante sur ce test que vous pouvez faire avec des systèmes NUMA multi-CPU . Sur ces types de cartes mères, vous pouvez supprimer toutes les barrettes mémoire DIMM contrôlées par un processeur physique. Le système démarrera toujours très bien, et vous pourrez ensuite exécuter des tests avec votre application épinglée sur différents cœurs, ce qui vous permettra de mesurer les effets de la mémoire "locale" ou "distante".
Aimeriez-vous voir les performances d'une application multithread avec le nombre de cœurs? Si tel est le cas, vous pouvez utiliser l'utilitaire d'ensemble de tâches. Je suppose que vous avez une machine NUMA. Vous pouvez installer l'utilitaire numactl et en l'utilisant, vous pouvez trouver les cœurs correspondant à quel processeur. Par exemple, votre machine a deux CPUS (puces) quadricœurs. En utilisant l'utilitaire de jeu de tâches, vous pouvez créer des cœurs d'un processeur en tant qu'ensemble et les allouer à votre application. Ensuite, votre application utilise un seul processeur / puce (quatre cœurs). Veuillez me faire savoir si vous avez besoin de plus d'informations.