Question
Quelle est la procédure pour désactiver/activer les processeurs (à la volée) sur les systèmes multiprocesseurs ? Comment restreindre le serveur au nombre "N" de CPU uniquement ?
Répondre
Il existe trois façons de restreindre le nombre de CPU dans CentOS/RHEL.
- Utilisation du paramètre maxcpus (RHEL/CentOS 6)
- Utilisation du paramètre nr_cpus (RHEL/CentOS 6,7)
- Désactivation du processeur en ligne (RHEL/CentOS 6,7)
1. Utilisation du paramètre maxcpus
Cette méthode fonctionne avec les systèmes RHEL/CentOS 6. Il peut échouer si vous l'utilisez dans les systèmes RHEL/CentOS 7. Bien que dans la nouvelle version du système RHEL 7, ce bogue ait été corrigé.
Vous pouvez ajouter le paramètre de noyau maxcpus=N dans /boot/grub/grub.conf ou à la ligne du noyau au démarrage. Par exemple, pour limiter le serveur à n'utiliser que 2 processeurs, utilisez l'entrée ci-dessous dans le fichier
# vi /boot/grub/grub.conf ... title Red Hat Enterprise Linux Server (2.6.18-238.el5) root (hd0,0) kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet maxcpus=3 initrd /initrd-2.6.18-238.el5.imgREMARQUE :Il n'est pas possible de désactiver CPU0 sur les systèmes Red Hat Enterprise Linux.
Lorsque maxcpus est utilisé, il prendra les processeurs de tous les processeurs physiques disponibles. Par exemple, sur un système avec deux processeurs double cœur, maxcpus=2 prendra un processeur de chaque processeur physique. Pour connaître les ID CPU physiques utilisés :
# cat /sys/devices/system/cpu/cpu*/topology/physical_package_id
2. Utilisation du paramètre nr_cpus
Ajouter le paramètre de noyau nr_cpus=N dans /boot/grub/grub.conf ou à la ligne du noyau au démarrage. Par exemple, l'entrée ci-dessous limitera le serveur à seulement 2 processeurs.
# vi /boot/grub/grub.conf title Red Hat Enterprise Linux Server (2.6.18-238.el5) root (hd0,0) kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet nr_cpus=2 initrd /initrd-2.6.18-238.el5.img
1. Pour les systèmes RHEL 7, ajoutez le nr_cpus=N paramètre au "GRUB_CMDLINE_LINUX ” ligne dans “/etc/sysconfig/grub ” comme indiqué ci-dessous.
# cat /etc/default/grub GRUB_TIMEOUT=1 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200" GRUB_CMDLINE_LINUX="console=ttyS0,115200 console=tty0 vconsole.font=latarcyrheb-sun16 crashkernel=auto nr_cpus=2" GRUB_DISABLE_RECOVERY="true"
2. Utilisez le grub2-mkconfig commande pour régénérer le /boot/grub2/grub.cfg fichier.
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.21.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.21.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-693.17.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.17.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-693.11.6.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.11.6.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-693.11.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.11.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-693.5.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.5.2.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-f9afeb75a5a382dce8269887a67fbf58 Found initrd image: /boot/initramfs-0-rescue-f9afeb75a5a382dce8269887a67fbf58.img done
3. Vérifiez l'entrée du paramètre nr_cpu dans le fichier de configuration grub.
# grep linux16 /boot/grub2/grub.cfg linux16 /boot/vmlinuz-3.10.0-693.21.1.el7.x86_64 root=UUID=0f790447-ebef-4ca0-b229-d0aa1985d57f ro console=ttyS0,115200 console=tty0 vconsole.font=latarcyrheb-sun16 crashkernel=auto nr_cpus=2 ...
3. Désactivation du processeur en ligne
Désactiver les cœurs de processeur
1. Lors de l'exécution, il est possible de désactiver les cœurs de processeur avec les commandes suivantes. Par exemple, pour un système à 4 cœurs, nous pouvons désactiver 3 processeurs comme indiqué ci-dessous.
# echo 0 > /sys/devices/system/cpu/cpu3/online # echo 0 > /sys/devices/system/cpu/cpu2/online # echo 0 > /sys/devices/system/cpu/cpu1/online
2. Pour vérifier si vous avez désactivé 3 cœurs et qu'il ne reste qu'un seul cœur activé, utilisez la commande ci-dessous.
# grep "processor" /proc/cpuinfo processor : 0
Réactivation des cœurs de processeur
1. Les cœurs du processeur peuvent être réactivés à nouveau par la commande ci-dessous.
# echo 1 > /sys/devices/system/cpu/cpu3/online # echo 1 > /sys/devices/system/cpu/cpu2/online # echo 1 > /sys/devices/system/cpu/cpu1/online
2. Vérifiez à nouveau pour 4 cœurs activés dans /proc/cpuinfo.
# grep "processor" /proc/cpuinfo processor : 0 processor : 1 processor : 2 processor : 3REMARQUE :Ces paramètres ne sont pas persistants lors du redémarrage.