質問
マルチプロセッサを搭載したシステムでプロセッサを (オンザフライで) 無効/有効にする手順は何ですか?サーバーを「N」個の CPU のみに制限する方法は?
答え
CentOS/RHEL で CPU の数を制限するには、3 つの方法があります。
- maxcpus パラメータの使用 (RHEL/CentOS 6)
- nr_cpus パラメータの使用 (RHEL/CentOS 6、7)
- CPU オンラインの無効化 (RHEL/CentOS 6、7)
1. maxcpus パラメータの使用
この方法は、RHEL/CentOS 6 システムで機能します。 RHEL/CentOS 7 システムで使用すると失敗する場合があります。ただし、RHEL 7 システムの新しいバージョンでは、このバグは修正されています。
カーネル パラメータ maxcpus=N を追加できます /boot/grub/grub.conf 内 またはブート時のカーネル行に。たとえば、サーバーが 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 maxcpus=3 initrd /initrd-2.6.18-238.el5.img注意 :Red Hat Enterprise Linux システムで CPU0 を無効にすることはできません。
maxcpus を使用すると、使用可能なすべての物理 CPU から CPU が取得されます。たとえば、2 つのデュアル コア CPU を搭載したシステムでは、maxcpus=2 は各物理 CPU から 1 つの CPU を使用します。使用中の物理 CPU ID を知るには:
# cat /sys/devices/system/cpu/cpu*/topology/physical_package_id
2. nr_cpus パラメータの使用
a. CentOS/RHEL 6 の場合
カーネル パラメータ nr_cpus=N を追加 /boot/grub/grub.conf 内 またはブート時のカーネル行に。たとえば、以下のエントリはサーバーを 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. CentOS/RHEL 7 の場合
1. RHEL 7 システムの場合、nr_cpus=N を追加します パラメータを「GRUB_CMDLINE_LINUX」に 「/etc/sysconfig/grub」の行
# 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. grub2-mkconfig を使用する /boot/grub2/grub.cfg を再生成するコマンド ファイル。
# 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. grub 構成ファイルの nr_cpu パラメータのエントリを確認します。
# 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 オンラインの無効化
CPU コアの無効化
1.実行時に、次のコマンドで CPU コアを無効にすることができます。たとえば、4 コア システムの場合、以下に示すように 3 つの CPU を無効にすることができます。
# 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. 3 つのコアを無効にして、1 つのコアのみを有効にしたままにしているかどうかを確認するには、次のコマンドを使用します。
# grep "processor" /proc/cpuinfo processor : 0
CPU コアの有効化
1.以下のコマンドで CPU コアを再び有効にできます。
# 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. /proc/cpuinfo で 4 コアが有効になっていることを再度確認します。
# grep "processor" /proc/cpuinfo processor : 0 processor : 1 processor : 2 processor : 3注意 :これらの設定は、再起動後は保持されません。