鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

CentOS系统下内存页Page size如何从64K切换到4K

本节内容主要指导用户完成CentOS系统下如何修改内存页Page size的大小。

  1. 查看当前内存页大小。
    getconf PAGESIZE

    回显信息为“65536”,表示为64K。

  2. 下载内核源码。
    wget https://git.centos.org/sources/kernel/c8/a857effa0971fa1b6790bf8df25f69dda20acdd3

    如果环境上已经有内核源码,则可以跳过本步骤和3。如果下载时提示“ERROR: cannot verify git.centos.org's certificate”,则可以在命令最后增加--no-check-certificate解决。

  3. 解压文件获得内核源码linux-4.18.0-193.28.1.el8_2,将源码目录移动到“/usr/src”目录下。
    tar -xf a857effa0971fa1b6790bf8df25f69dda20acdd3
    ll
    mv linux-4.18.0-193.28.1.el8_2 /usr/src​

  4. 安装内核编译依赖的软件包。
    yum install -y vim rpm-build net-tools bc xmlto asciidoc openssl-devel hmaccalc python-devel newt-devel perl elfutils-devel zlib-devel binutils-devel audit-libs-devel java-devel numactl-devel pciutils-devel ncurses-devel perl-ExtUtils-Embed git
  5. 进入内核源码目录,复制当前系统的内核编译文件,保证内核其他配置项和当前系统保持一致。
    cd /usr/src/linux-4.18.0-193.28.1.el8_2
    cp /boot/config-`uname -r` ./.config
  6. 修改内核Page size大小为4KB。
    1. 打开menuconfig。
      make menuconfig
    2. 选择Kernel Features

    3. “Enter”键进入下一级菜单,选择Page size(64KB)

    4. “Enter”键进入选择,按“Space”键选择4KB。

    5. 选择两次“Exit”保存并退出。

  7. 查看“.config”配置文件中内存页配置,确认修改是否生效。
    grep -i pages .config

    从下面的回显信息中可以看到,4K配置项已开启,64K配置项已注释。

  8. 修改内核版本。

    需要保证修改的内核版本大于当前系统的内核版本。您可以通过执行uname -a命令查看内核版本。

    1. 打开Makefile文件。
      vim Makefile
    2. 修改EXTRAVERSION参数。

    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  9. 编译内核二进制包,在编译时会加载修改后的config配置文件,会提醒用户确认部分修改配置项,Page size务必选择为4KB,后面的选项建议根据业务实际需求调整。
    1. 执行以下命令,编译内核,根据回显提示输入1,选择Page size大小为4KB。
      make binrpm-pkg -j`nproc`

    2. 根据实际情况设置虚拟地址空间大小,此处输入1,设置为39bit。

    3. 根据实际情况设置ELF文件配置信息。

    4. 根据实际情况设置网络驱动信息。

      命令执行完成后,可以通过回显信息看到已生成的RPM包所在路径。

    5. “/root/rpmbuild/RPMS/aarch64/”目录下可以查看生成的内核RPM包。
      ll /root/rpmbuild/RPMS/aarch64/

  10. 安装内核RPM包。
    rpm -ivh /root/rpmbuild/RPMS/aarch64/kernel-4.18.0_3-7.aarch64.rpm

  11. 查看内核是否安装成功。
    rpm -qa | grep kernel

    如果回显信息中出现上述安装的内核版本号,则表明内核安装成功。

  12. 重启系统,进入编译安装的内核。
    reboot

    出现如下信息时,请选择已安装的内核。

    若无法通过BMC进入远程控制台选择启动内核,可执行下列命令选择内核。

    1. 查看当前系统内的所有内核。
      awk -F\' '$1=="menuentry " {print i++ " : "$2}' /boot/efi/EFI/*/grub.cfg
    2. 通过grub2-set-default选择新安装的内核为默认内核。
      grub2-set-default 0
    3. 重启服务器。
      reboot
  13. 检查内核版本号。
    uname -a

    如果回显信息中的内核版本号与上面安装的版本号一致,则表明无问题。

  14. 查看当前的内存页。
    getconf PAGESIZE

    如果回显结果显示4096,则表示内存页已成功切换为4K。