openEuler系统下内存页Page Size如何从64K切换到4K
内核版本为4.19对应的openEuler 20.03系列操作系统默认pagesize为64KB,可以通过执行getconf PAGESIZE命令查看。您可以根据业务需要进行修改。具体修改方法如下:
- 查看当前内存页大小。
getconf PAGESIZE
回显信息为“65536”,表示为64K。
- 获取内核源码。
- 创建目录并进入该目录。
mkdir -p /home/kernel-bcache cd /home/kernel-bcache
- 下载内核源码包至“/home/kernel-bcache”目录。
下载路径:https://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/Packages/
- 解压源码包。
rpm2cpio kernel-4.19.90-2109.1.0.0108.oe1.src.rpm | cpio -divm tar -zxvf kernel.tar.gz
- 配置镜像源。
- 通过SFTP工具将“openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso”上传到服务器上“/root”目录下。
openEuler 20.03 LTS SP1镜像下载地址:
https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP1/ISO/aarch64/openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso
- 创建一个本地文件夹用于挂载本地镜像。
mkdir -p /iso
- 将iso文件挂载到本地文件夹。
mount /root/openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso /iso
- 通过SFTP工具将“openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso”上传到服务器上“/root”目录下。
- 创建镜像Yum源。
- 打开配置文件。
vi /etc/yum.repos.d/openEuler.repo
- 按“i”进入编辑模式,在文件中加入以下内容。
[Base] name=Base baseurl=file:///iso enabled=1 gpgcheck=0 priority=1 [openEuler-source] name=openEuler-source baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/ enabled=1 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/source/RPM-GPG-KEY-openEuler [openEuler-os] name=openEuler-os baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/aarch64/ enabled=0 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/OS/aarch64/RPM-GPG-KEY-openEuler [openEuler-everything] name=openEuler-everything baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/aarch64/ enabled=0 gpgcheck=1 gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/everything/aarch64/RPM-GPG-KEY-openEuler [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/EPOL/aarch64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP1/update/aarch64/ enabled=1 gpgcheck=0
- 按“Esc”键退出编辑模式,输入“:wq!”后按“Enter”键保存并退出文件。
- 打开配置文件。
- 安装依赖。
dnf -y install ncurses-devel bison m4 flex rpm-build rpmdevtools asciidoc audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel gtk2-devel java-1.8.0-openjdk-devel xz-devel libbabeltrace-devel libunwind-devel newt-devel numactl-devel openssl-devel pciutils-devel perl-generators python3-devel python3-docutils xmlto zlib-devel createrepo genisoimage
- 创建目录并进入该目录。
- 修改内核配置文件。
1 2 3
cd /home/kernel-bcache/kernel cp arch/arm64/configs/openeuler_defconfig .config make menuconfig
- 修改内核Page Size大小为4KB。
- 确认Page Size是否已修改为4K。
vi .config
如果回显信息中“CONFIG_ARM64_4K_PAGES=y”,则表示已正确配置。
- 覆盖默认配置文件。
cp .config arch/arm64/configs/openeuler_defconfig
输入“y”确认。
- 生成内核RPM包。
- 安装依赖包。
yum install -y ncurses-devel bc openssl-devel rpm-build bison flex
- 切换到源码根目录下。
cp /boot/config-$(uname -r) .
- 编译RPM包。
make binrpm-pkg -j48
建议不要满核编译,例如对于64核处理器,建议运行make binrpm-pkg -j48;对于96核处理器,建议运行make binrpm-pkg -j72,编译过程中尽量不要做其他操作,避免卡死。
- 查看生成的内核RPM包。
ls /home/rpmbuild/RPMS/aarch64/
- 安装依赖包。
- 安装内核。
- 将生成的内核RPM包上传至服务器的“/home/kernel-rpm”目录。
mkdir -p /home/kernel-rpm cd /home/kernel-rpm dnf -y install kernel-4.19.90-1.aarch64.rpm
- 查看默认内核启动项。
grub2-editenv list
- 修改默认内核启动项。
cat /etc/grub2-efi.cfg | grep openEuler
其中“openEuler (4.19.90) 20.03 (LTS-SP1)”为新安装内核版本。
grub2-set-default "openEuler (4.19.90) 20.03 (LTS-SP1)"
- 重启系统。
1
reboot
- 将生成的内核RPM包上传至服务器的“/home/kernel-rpm”目录。
- 系统重启后通过执行getconf PAGESIZE命令,确认Page Size是否为4K。