检查CPU是否支持HugePages并在RHEL 7中更改默认的大页面大小
如何确定CPU是否支持HugePage?如何确定CPU是否支持HugePage?如何确定CPU是否支持2MB大小的HugePage?如何检查CPU是否支持2MB的大页面。
如何检查CPU是否支持HugePages 1GB大小。如何确定CPU是否支持1GB大小的HugePage?如何在CentOS或者RHEL 7 Linux中更改默认的大页面大小。
如何检查默认的大页面大小。如何在Linux中使用GRUB2永久更改默认的大页面大小。
本文是在使用" RHEL 7"时写的,因此可以肯定地说,它还全面介绍了CentOS 7,Fedora,Oracle Enterprise Linux以及整个Red Hat操作系统家族,以及Novell的SLES和OpenSUSE。
检查CPU是否支持HugePages 2MB大小
要检查CPU是否支持HugePages 2MB大小,请在/proc/cpuinfo中注意是否存在pse标志。我其中使用" uniq",因为根据处理器和CPU的数量,我们可能会得到很长的输出。
# cat /proc/cpuinfo | grep pse | uniq flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear spec_ctrl intel_stibp flush_l1d
或者,我们也可以执行以下命令以获得更清晰的输出
# cat /proc/cpuinfo | egrep -o pse | head -n 1 pse
检查CPU是否支持1GB大小的HugePages
要检查CPU是否支持HugePages 1GB大小,请在/proc/cpuinfo中注意是否存在标志pdpe1gb。其中:我使用的是" head -n 1",因为根据处理器和CPU的数量,我们可能会得到很长的输出,所以我们只检查第一个输出,因为其他所有输出都相同。
# cat /proc/cpuinfo | grep pdpe1gb | head -n 1 flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts md_clear spec_ctrl intel_stibp flush_l1d
或者,我们也可以执行以下命令以获得更清晰的输出
# cat /proc/cpuinfo | egrep -o pdpe1gb | head -n 1 pdpe1gb
另请阅读:
如何通过示例检查Linux中每个进程的透明HugePage使用情况如何使用示例检查和禁用透明大页面(CentOS/RHEL 7)
如何更改默认的HugePage大小?
要分配特定大小的大页面,必须在大页面启动命令参数之前加上大页面大小选择参数hugepagesz =。必须以字节为单位指定,并带有可选的标度后缀[kKmMgG]。可以使用default_hugepagesz =引导参数选择默认的大页面大小。
检查Linux系统中当前的大页面大小。因此,当前我的系统配置有2MB的大页面大小,但是由于我的系统支持1GB的大页面大小,因此我可以更改相同的大小。
# grep Hugepagesize: /proc/meminfo Hugepagesize: 2048 kB
让我们将系统上的默认超大页面大小从2MB更改为1GB。我已经在/etc/sysconfig/grub下更新了GRUB2配置,并添加了default_hugepagesz = 1G以将默认大页面大小更改为1GB,如下所示
# grep GRUB_CMDLINE_LINUX /etc/sysconfig/grub GRUB_CMDLINE_LINUX="novga console=ttyS0,115200 panic=1 rd.md.uuid=2bf69f98:8507fb4d:bcd2633e:14aecb1c rd.lvm.lv=os/root rd.md.uuid=feef9526:9af37168:0e029a0d:1cf5a6d1 rd.md.uuid=5c13046e:592fe6da:bb4bb7cd:0057371a rhgb quiet default_hugepagesz=1G"
接下来重建GRUB2
暗示:
以下命令适用于基于UEFI的计算机上的旧版BIOS:~]#grub2-mkconfig -o/boot/efi/EFI/redhat/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-957.21.3.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-957.21.3.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-60aaa1c262314bc2afa5c309ae8a0978 Found initrd image: /boot/initramfs-0-rescue-60aaa1c262314bc2afa5c309ae8a0978.img done
重新启动系统以激活更改
# shutdown -r now
现在重启后重新验证默认的大页面大小。正如预期的那样,已更改为1GB
# grep Hugepagesize: /proc/meminfo Hugepagesize: 1048576 kB
验证GRUB2配置
# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-3.10.0-957.21.3.el7.x86_64 root=/dev/mapper/os-root ro novga console=ttyS0,115200 panic=1 numa=off elevator=cfq rd.md.uuid=2bf69f98:8507fb4d:bcd2633e:14aecb1c rd.lvm.lv=os/root rd.md.uuid=feef9526:9af37168:0e029a0d:1cf5a6d1 rd.md.uuid=5c13046e:592fe6da:bb4bb7cd:0057371a noht biosdevname=0 net.ifnames=0 rhgb quiet console=tty0 ipv6.disable=1 mds=off transparent_hugepage=never default_hugepagesz=1G