Linux 常见系统进程及参数说明

Memory

内存管理相关的系统关键进程

Name Path Info Demonstrate
[kswapd0] 由内核启动 Linux 内核中的一个内存管理守护进程,负责内存交换(swap).当系统内存不足时,触发内存回收机制,释放不常用的内存页。
内存回收使用 Page Replacement 算法(新版本使用)
kswapd

kswapd

kswapd 是 Linux 内核中的一个内存管理守护进程,负责系统内存不足时进行页面回收(即将不活跃的页面移至内存交换(Swap)空间)。它确保系统有足够的可用内存,以维持系统稳定性和性能。主要功能包括:

  • 监控系统的内存使用情况。
  • 当系统内存不足时(低于设定的阈值),触发内存回收机制,释放不常用的内存页。
  • 将内存页交换到交换分区(swap space),以确保系统有足够的可用内存。

kswapd 进程是由内核自动启动的,不需要用户手动启动。它的代码位于 Linux 内核源代码的内存管理部分,主要文件包括:

  • mm/vmscan.ckswapd 相关功能的实现。
  • mm/page_alloc.c :内存分配和回收的相关代码。

目前大多数内核使用 Page Replacement Algorithm(页面置换算法),常用算法实现包括:

  • LRU (Least Recently Used) : 最常用的算法,基于页面最近使用的时间进行置换。
  • FIFO (First In, First Out) : 基于页面进入内存的顺序进行置换。
  • Clock Algorithm : 一种改进的 LRU 算法,使用一个 ‘时钟’ 指针循环扫描页面。

kswapd 相关配置

  • swappiness 参数 控制系统在内存不足时使用交换空间的频率,值越高,系统越倾向于使用交换空间。默认值通常为60,取值范围是 0 到 100
    echo 60 > /proc/sys/vm/swappiness
    持久化配置,写入 /etc/sysctl.conf 配置中:
    /etc/sysctl.conf
    vm.swappiness = 60
  • min_free_kbytes 参数 设置内核保持的最小空闲内存量,该值确保系统始终有一定的空闲内存,防止内存耗尽
    echo 65536 > /proc/sys/vm/min_free_kbytes
    持久化配置,写入 /etc/sysctl.conf 配置中:
    /etc/sysctl.conf
    vm.min_free_kbytes = 65536