欧拉PageCache的内核编译

欧拉 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

将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

为极客天成改写一套CSI存储插件
K3s的安装
comments powered by Disqus