glibc动态库大页

在应用程序执行过程中,许多动态库默认使用4KB小页,进程iTLB miss高,导致CPU执行效率低下。开源的代码段大页方案需要浪费额外的内存,同时影响进程启动速度,而OpenEuler提供的glibc加载动态库方案默认映射大页则可以减少内存开销,同时加快进程启动速度,最终能达到降低iTLB cache miss以提升性能的结果。该方法需要预先分配标准大页内存池,请先参考使能OS开启标准大页内存,确保有足够的标准大页内存空间。

安装方法

  1. 该特性需安装对应版本的glibc和glibc-devel包,详细对应版本要求见如下表格说明。
  2. glibc为Linux核心软件包,不推荐直接安装,容易造成软件兼容性问题,建议安装OpenEuler后使用,也可以通过OpenEuler的docker镜像使用(

    openeuler源地址:https://repo.openeuler.org/,选择下面表格中符合要求的OpenEuler版本,例如:openEuler-22.03-LTS-SP4/docker_img/aarch64/openEuler-docker.aarch64.tar.xz)。

  3. EulerOS使用该特性需要额外配置启动项参数exec_hugepages,具体修改启动项配置可参考“使能OS开启标准大页内存”中的“永久启用标准大页内存池”章节。
    表1 软件版本要求

    操作系统名称

    软件版本要求

    OpenEuler

    操作系统版本:openEuler-22.03-LTS-SP1、openEuler-22.03-LTS-SP3、openEuler-22.03-LTS-SP4

    上述OS版本对应软件版本要求均为,glibc版本和glibc-devel版本大于等于2.34-h157 。

    EulerOS

    操作系统版本:eulerosv2r10、eulerosv2r11、eulerosv2r12、eulerosv2r13

    eulerosv2r10对应glibc和glibc-devel的版本号为大于等于2.28-63.h52。

    eulerosv2r11对应glibc和glibc-devel的版本号为大于等于2.34-70.h8。

    eulerosv2r12对应glibc和glibc-devel的版本号为大于等于2.34-105.h1。

    eulerosv2r13对应glibc和glibc-devel的版本号为大于等于2.34-143.h3。

    建议采用rpm -qa glibc或者rpm -qa glibc-devel命令查询当前glibc版本,使用ldd --version只能看到glibc上游社区的版本,无法看到OpenEuler发行的h版本号。

使用方法

确认glibc和glibc-devel是否安装,版本是否符合要求。
rpm -qa glibc
rpm -qa glibc-devel 

若glibc-devel未安装,可以使用下面命令安装:
yum install glibc-devel 
若glibc版本低于要求,可通过如下命令更新glibc版本:
yum upgrade glibc glibc-devel