Otázka
Jaký je postup pro zakázání/povolení procesorů (za běhu) na systémech s více procesory? Jak omezit server pouze na „N“ počet CPU?
Odpověď
Existují tři způsoby, jak omezit počet CPU v CentOS/RHEL.
- Použití parametru maxcpus (RHEL/CentOS 6)
- Použití parametru nr_cpus (RHEL/CentOS 6,7)
- Zakázání CPU online (RHEL/CentOS 6,7)
1. Pomocí parametru maxcpus
Tato metoda funguje se systémy RHEL/CentOS 6. Pokud jej používáte v systémech RHEL/CentOS 7, může selhat. Ačkoli v novější verzi systému RHEL 7 byla tato chyba opravena.
Můžete přidat parametr jádra maxcpus=N v /boot/grub/grub.conf nebo na řádek jádra při bootování. Chcete-li například omezit server na použití pouze 2 CPU, použijte níže uvedený záznam v souboru
# 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.imgPOZNÁMKA :Na systémech Red Hat Enterprise Linux není možné deaktivovat CPU0.
Když je použit maxcpus, vezme CPU ze všech dostupných fyzických CPU. Například v systému se dvěma dvoujádrovými CPU bude maxcpus=2 odebírat jeden CPU z každého fyzického CPU. Chcete-li zjistit používaná fyzická ID CPU:
# cat /sys/devices/system/cpu/cpu*/topology/physical_package_id
2. Pomocí parametru nr_cpus
a. Pro CentOS/RHEL 6
Přidejte parametr jádra nr_cpus=N v /boot/grub/grub.conf nebo na řádek jádra při bootování. Například položka Níže omezí server pouze na 2 CPU.
# 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. Pro CentOS/RHEL 7
1. Pro systémy RHEL 7 přidejte nr_cpus=N parametr na „GRUB_CMDLINE_LINUX “ v „/etc/sysconfig/grub “, jak je uvedeno níže.
# 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. Použijte grub2-mkconfig příkaz k přegenerování souboru /boot/grub2/grub.cfg soubor.
# 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. Ověřte zadání parametru nr_cpu v konfiguračním souboru 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. Zakázání CPU online
Zakázání jader CPU
1. Za běhu je možné deaktivovat jádra cpu pomocí následujících příkazů. Například u 4jádrového systému můžeme zakázat 3 CPU, jak je ukázáno níže.
# 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. Chcete-li ověřit, zda jste zakázali 3 jádra a zůstalo pouze 1 povolené jádro, použijte níže uvedený příkaz.
# grep "processor" /proc/cpuinfo processor : 0
Zpětné povolení jader CPU
1. Jádra procesoru lze znovu aktivovat níže uvedeným příkazem.
# 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. Znovu ověřte, zda v /proc/cpuinfo nejsou povolena 4 jádra.
# grep "processor" /proc/cpuinfo processor : 0 processor : 1 processor : 2 processor : 3POZNÁMKA :Tato nastavení nejsou trvalá po restartování.