昇腾社区首页
中文
注册
开发者
下载

OS配置

本节将介绍基于openEuler操作系统,进行Linux内核Page Size调优操作

原理

页表在操作系统中作为最基础的内存分配结构,ARM64 支持 4K、16K、64K 不同大小的页表。当前页表大小只支持静态配置,不支持动态修改。页表大小与服务器性能息息相关,针对推理场景下,不同业务要求调整页表大小,可以得到可观的性能收益。

调优配置

以在Atlas 900 Pod A2上安装openEuler 22.03 LTS SP4为例演示调优操作。

openEuler 22.03 LTS SP4默认使用的是4k页表,现将页表调整为64k,并测试调整前后常见的NLP模型的推理性能。

Linux内核页表大小查询命令:

getconf PAGESIZE

可以通过以下两种方式调整Linux内核页表大小:

方式一:下载官网提供的64k内核安装包,执行如下命令安装:
rpm -ivh --nodeps --force *.rpm 

方式二:源码编译安装。

  1. 安装所需依赖。
    yum install -y ncurses-devel bc openssl-devel rpm-build bison flex rsync dwarves elfutils-libelf-devel 
  2. 获取内核源码
    yum -y install kernel-source 

    下载的内核源码保存在/usr/src目录下:

  3. 编译内核。
    1. 修改.config文件,执行以下命令打开配置文件。
      cd /usr/src/linux-5.10.0-254.0.0.158.oe2203sp4.aarch64
      vim .config

      在.config文件中,修改为CONFIG_LOCALVERSION="64k"。主要用于新内核版本号显示,便于区分默认内核和64k内核。

    2. 使配置文件生效,修改内核参数:
      make menuconfig
    3. 进入图形化界面,进入以下路径Kernel Features ->Page Size,将Page Size设置为64k,并保存退出。

    4. 执行编译命令:
      make rpm-pkg -j 

      编译结束后,生成的内核rpm安装包保存在/root/rpmbuild/RPMS/aarch64路径下。

  4. 安装内核包。
    cd /root/rpmbuild/RPMS/aarch64
    rpm -ivh --nodeps --force *.rpm 
  5. 重启服务器:
    reboot 
  6. 检查page size。

    重启之后,执行命令查看内核,

    uname -a

    查看结果已修改为64k。

性能测试结果

本次测试模型均来自MindSpeed-LLM,详见官网

表1 实验数据

os

模型

实验次数

推理时长(S)

page size 4K

推理时长(S)

page size 64k

性能提升(%)

openEuler 22.03 SP4

llama2_7b

实验1

15.49

13.83

10.7166

实验2

16.02

14.18

11.4856

实验3

15.73

13.99

11.0617

平均

15.75

14

11.0923

deepsek_r1

实验1

10.91

9.79

10.2658

实验2

11.03

9.79

11.2421

实验3

10.99

9.36

14.8317

平均

10.98

9.65

12.1166