欧拉 Page Cache 的内核编译
PageCache提供了一种限制page cache的能力,能够对page cache的总量进行控制, 增强系统在数据库等page cache占比较高场景下的稳定性,积极释放缓存。
它提供了以下sysctl接口:
- vm.pagecache_limit_ratio:pagecache占系统总内存的百分比,[0, 100],0和100都表示功能关闭。
- vm.pagecache_limit_reclaim_ratio:针对pagecache真实回收的比例,在实际回收时,总是比pagecache_limit_ratio的多回收一些,默认比例是2%。
- vm.pagecache_limit_ignore_dirty:在回收时是否忽略脏页,默认忽略。因为对脏页的回收较耗时。
补丁是基于 openEuler-22.03-LTS 的,不适用于 24.03-LTS,代码都已不同了
编译过程如下:
一、安装好openEuler-22.03-LTS,磁盘留够空间,最少留20G
二、安装编译已经所需软件
1dnf install -y rpm-build openssl-devel bc rsync gcc gcc-c++ flex bison m4 elfutils-libelf-devel
2dnf install -y python
3dnf install -y ncurses-devel
4dnf install -y dwarves
三、安装内核源代码
1dnf install -y kernel-source
现在是2024年11月4日,内核版本是 linux-5.10.0-60.139.0.166.oe2203.x86_64,注意补丁的适用范围
四、打补丁
将page.patch 放到 /usr/src
1cd /usr/src/linux-5.10.0-60.139.0.166.oe2203.x86_64
2patch -p1 < ../page.patch
五、编辑内核版本号,EXTRAVERSION的版本号要大于当前内核版本,否则无法安装。当前是166,改成+1,167
1cd /usr/src/linux-5.10.0-60.139.0.166.oe2203.x86_64
2
3vi Makefile
4# SPDX-License-Identifier: GPL-2.0
5VERSION = 5
6PATCHLEVEL = 10
7SUBLEVEL = 0
8EXTRAVERSION = -60.139.0.167.oe2203.x86_64
9NAME = Kleptomaniac Octopus
10OPENEULER_MAJOR = 2203
11OPENEULER_MINOR = 0
六、编译
1cd /usr/src/linux-5.10.0-60.139.0.166.oe2203.x86_64
2
3make openeuler_defconfig
4
5#根据cpu的核数来调整-j后面的参数
6make binrpm-pkg -j8
7
8#报两个错,ignore
9mm/vmscan.c:4306:22: warning: ‘global_reclaimable_pages’ defined but not used [-Wunused-function]
10 4306 | static unsigned long global_reclaimable_pages(void)
11 | ^~~~~~~~~~~~~~~~~~~~~~~~
12
13kernel/sysctl.c: In function ‘pc_reclaim_limit_proc_dointvec’:
14kernel/sysctl.c:715:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
15 715 | int pre_reclaim_ratio = vm_pagecache_limit_reclaim_ratio;
16 | ^~~
17
18#生成的包放在如下目录下
19/root/rpmbuild
七、安装编译好的内核
1rpm -ivh /root/rpmbuild/RPMS/x86_64/kernel-headers-5.10.0_60.139.0.167.oe2203.x86_64-1.x86_64.rpm
八、修改启动项
1cat /boot/grub2/grub.cfg | grep -E "menuentry '"
2
3grub2-set-default 0
九、查看新内核
1uname -a
2Linux localhost.localdomain 5.10.0-60.139.0.167.oe2203.x86_64 #1 SMP Mon Nov 4 15:49:50 CST 2024 x86_64 x86_64 x86_64 GNU/Linux