系列文章,欢迎阅读
内存那些事儿----基础知识I
https://www.talkwithtrend.com/Article/255113
内存那些事儿----基础知识II
https://www.talkwithtrend.com/Article/255115
内存那些事儿----内存带宽
https://www.talkwithtrend.com/Article/255545
内存那些事儿----HBM和GPU算力
https://www.talkwithtrend.com/Article/255551
内存那些事儿----Huge Page on Power-I
https://www.talkwithtrend.com/Article/256329
接上文 ” 内存那些事儿----Huge Page on Power-I ”,继续介绍如何在Power服务器上配置使用Huge Page。
大致有2种方式,一种是和x86类似的方式,此时Linux操作系统可以直接安装在Power裸机上; 另外一种情况是Linux安装在 PowerVM的LPAR里面, 此时要在该Linux分区里使用huge page,稍微有点麻烦,需要综合使用 ASMI+HMC+GRUB 来配置。
以 Redhat 7.x 为例,使用内核可调vm.nr_hugepages配置hugepages
ü 编辑/etc/sysctl.conf文件,并在nr_hugepages参数中指定hugepages的数量。该条目使参数在重新引导时保持不变,但在运行下一步中描述的' sysctl -p '命令之前不会生效。
vi /etc/sysctl.conf
vm.nr_hugepages = 10
ü 执行' sysctl -p '命令以启用hugepages参数。
sysctl -p
...
vm.nr_hugepages = 10
注意:建议在配置hugepages之后重新启动系统,因为当系统启动时,拥有连续内存的空间(用于hugepages分配)的机会要大得多。
ü 要验证hugepages参数设置,可以使用下面给出的两个方法中的任意一个:
检查文件/proc/meminfo:
cat /proc/meminfo | grep Huge
HugePages_Total: 10
HugePages_Free: 10
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
解释:
HugePages_Total——大页面池的大小。
HugePages_Free -池中未使用的巨大页面的数量。
HugePages_Rsvd -承诺从池中分配但尚未分配的巨大页面数量。
HugePages_Surp -是“盈余”的缩写,是池中超过/proc/sys/vm/nr_hugepages值的巨大页面数。最大剩余的巨大页面数量由/proc/sys/vm/nr_overcommit_hugepages控制。
使用sysctl命令
sysctl a | grep nr_hugepages
vm.nr_hugepages = 10
以 Redhat 8.x 为例,Huge Page Size=16GB
刚才在ASMI 里面配置了10个大页页面,现在可以在这个LPAR上如下配置
“Minimum pages” —-> 4
“Desired pages” —–> 4
“Maximum pages” —–> 4
启动 Redhat 8.x
编辑 “/etc/default/grub” ,设置参数
GRUB_CMDLINE_LINUX=crashkernel=auto rd.lvm.lv=rhel_XXXX/root rd.lvm.lv=rhel_XXXX/swap biosdevname=0 hugepagesz=16G hugepages=4″
更新 grub
[root@XXXX ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file …
Generating boot entries from BLS files…
Done
重启 Linux 分区
[root@XXXX ~]# reboot
挂载配置的大页
linux-zzyi:~ # mkdir /mnt/16G
linux-zzyi:~ # mount -o pagesize=16G -t hugetlbfs none /mnt/16G
check for huge-page mount
linux-zzyi:~ # mount | grep huge
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
none on /mnt/16G type hugetlbfs (rw,relatime,pagesize=16G)
安装,运行 libhugetlbfs 测试
git clone https://github.com/libhugetlbfs/libhugetlbfs.git
make
[root@XXXX libhugetlbfs]# make
VERSION
version update: 2.21
version string: 2.21
CC64 obj64/elflink.o
AS64 obj64/sys-elf64lppc.o
CC64 obj64/elf64lppc.o
CC64 obj64/hugeutils.o
CC64 obj64/version.o
version.c:3:19: warning: ‘libhugetlbfs_version’ defined but not used [-Wunused-const-variable=]
static const char libhugetlbfs_version[] = “VERSION: “VERSION;
^~~~
CC64 obj64/init.o
CC64 obj64/morecore.o
CC64 obj64/debug.o
….
….
Make check
[root@XXXXX libhugetlbfs]# make check
zero_filesize_segment (16G: 64): PASS
test_root (16G: 64): PASS
meminfo_nohuge (16G: 64): PASS
gethugepagesize (16G: 64): PASS
gethugepagesizes (16G: 64): PASS
HUGETLB_VERBOSE=1 empty_mounts (16G: 64): PASS
HUGETLB_VERBOSE=1 large_mounts (16G: 64): PASS
find_path (16G: 64): PASS
unlinked_fd (16G: 64): PASS
readback (16G: 64): PASS
truncate (16G: 64): PASS
shared (16G: 64): PASS
mprotect (16G: 64): PASS
mlock (16G: 64): PASS
misalign (16G: 64): PASS
fallocate_basic.sh (16G: 64): PASS
fallocate_align.sh (16G: 64): PASS
ptrace-write-hugepage (16G: 64): PASS
icache-hygiene (16G: 64): PASS
….
…
至此,介绍了在Power服务器上配置,使用 huge page 的方法
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞1
添加新评论0 条评论