Frage
Was ist das Verfahren zum Deaktivieren/Aktivieren von Prozessoren (on the fly) auf Systemen mit Multiprozessoren? Wie beschränkt man den Server auf nur „N“ CPUs?
Antwort
Es gibt drei Möglichkeiten, die Anzahl der CPUs in CentOS/RHEL zu beschränken.
- Verwendung des maxcpus-Parameters (RHEL/CentOS 6)
- Verwendung des nr_cpus-Parameters (RHEL/CentOS 6,7)
- CPU Online deaktivieren (RHEL/CentOS 6,7)
1. Verwendung des maxcpus-Parameters
Diese Methode funktioniert mit RHEL/CentOS 6-Systemen. Es kann fehlschlagen, wenn Sie es in RHEL/CentOS 7-Systemen verwenden. Obwohl dieser Fehler in der neueren Version des RHEL 7-Systems behoben wurde.
Sie können den Kernelparameter maxcpus=N hinzufügen in /boot/grub/grub.conf oder zur Kernel-Zeile beim Booten. Um beispielsweise den Server auf die Verwendung von nur 2 CPUs zu beschränken, verwenden Sie den folgenden Eintrag in der Datei
# 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.imgHINWEIS :Es ist nicht möglich, CPU0 auf Red Hat Enterprise Linux-Systemen zu deaktivieren.
Wenn maxcpus verwendet wird, werden die CPUs von allen verfügbaren physischen CPUs verwendet. Auf einem System mit zwei Dual-Core-CPUs beispielsweise nimmt maxcpus=2 eine CPU von jeder physischen CPU. Um die verwendeten physischen CPU-IDs zu kennen:
# cat /sys/devices/system/cpu/cpu*/topology/physical_package_id
2. Verwendung des nr_cpus-Parameters
a. Für CentOS/RHEL 6
Kernel-Parameter nr_cpus=N hinzufügen in /boot/grub/grub.conf oder zur Kernel-Zeile beim Booten. Beispielsweise beschränkt der folgende Eintrag den Server auf nur 2 CPUs.
# 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
b. Für CentOS/RHEL 7
1. Fügen Sie für RHEL 7-Systeme nr_cpus=N hinzu Parameter zum „GRUB_CMDLINE_LINUX “-Zeile in „/etc/sysconfig/grub ” wie unten gezeigt.
# 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. Verwenden Sie die grub2-mkconfig Befehl zum Neugenerieren der /boot/grub2/grub.cfg Datei.
# 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. Überprüfen Sie den Eintrag des Parameters nr_cpu in der Grub-Konfigurationsdatei.
# 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. CPU Online deaktivieren
CPU-Kerne deaktivieren
1. Zur Laufzeit ist es möglich, CPU-Kerne mit den folgenden Befehlen zu deaktivieren. Beispielsweise können wir für ein 4-Kern-System 3 CPUs wie unten gezeigt deaktivieren.
# 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. Um zu überprüfen, ob Sie 3 Kerne deaktiviert haben und nur noch 1 Kern aktiviert ist, verwenden Sie den folgenden Befehl.
# grep "processor" /proc/cpuinfo processor : 0
CPU-Kerne werden wieder aktiviert
1. Die CPU-Kerne können mit dem folgenden Befehl wieder aktiviert werden.
# 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. Überprüfen Sie erneut für 4 Kerne aktivierte Kerne in /proc/cpuinfo.
# grep "processor" /proc/cpuinfo processor : 0 processor : 1 processor : 2 processor : 3HINWEIS :Diese Einstellungen bleiben beim Neustart nicht bestehen.