配置数据段大页
通过配置数据段大页,降低TLB miss的概率,减小CPU因缺页而产生的调度开销,从而提升写性能。以下步骤需在所有服务端节点进行。
- 配置系统大页。
1echo 163840 > /proc/sys/vm/nr_hugepages
- openEuler 20.03系统中64k内核页存在bug,如果系统内核页大小为64k需要重编内核将内存页调整为4k。可通过执行以下命令查看内核页大小。
1getconf PAGESIZE
返回信息显示4096表示当前内核页大小为4k,若返回信息不为4096,请参见《Bcache用户指南》中的编译内核进行编译安装。
- 系统大页的数量所占的内存量要不少于本节点OSD所需要的内存量(osd_memory_target * osd数量)。例如:每个节点配置了24个OSD,osd_memory_target配置为10GB,则大页内存至少要配置240GB,在4k内核页的环境下,一个大页的大小为2M,因此至少配成120000。
- 若系统已经运行较长时间,内存可能已经碎片化无法分配出一定数量的大页,可以通过如下步骤将大页分配的命令添加至对应内核(可通过uname -r查看)的配置中并重启服务器使其生效。
- 编辑grub.cfg文件,并添加hugepagesz=2M和hugepages=163840的配置内容。
1vim /boot/efi/EFI/openEuler/grub.cfg
- 配置完成后重启节点并可以通过执行以下命令检查大页使用情况查看是否生效。
1 2
reboot cat /proc/meminfo | grep Huge

- 编辑grub.cfg文件,并添加hugepagesz=2M和hugepages=163840的配置内容。
- openEuler 20.03系统中64k内核页存在bug,如果系统内核页大小为64k需要重编内核将内存页调整为4k。可通过执行以下命令查看内核页大小。
- 配置启动大页自动挂载。
- 创建挂载大页目录。
1mkdir /mnt/huge - 在fstab文件中添加大页配置。
1vim /etc/fstab添加如下配置:
1nodev /mnt/huge hugetlbfs defaults,pagesize=2M 0 0

- 创建挂载大页目录。
- 修改Ceph服务,使能tcmalloc大页配置。
1vim /usr/lib/systemd/system/ceph-osd@.service添加如下环境变量。
1TCMALLOC_MEMFS_MALLOC_PATH=/mnt/huge/osd%i

- 重新加载配置。
1systemctl daemon-reload - 配置完成后重启OSD进程。
1systemctl restart ceph-osd.target
父主题: 大页配置调优