麒麟操作系统不记录内存回收独立日志,但可通过dmesg查看内核缓冲区中的reclaim/kswapd/oom相关记录、journalctl检索systemd-oomd干预日志、/proc/vmstat统计值变化趋势间接追溯内存回收行为。

麒麟操作系统不记录内存回收的独立日志,但可通过内核消息缓冲区、系统日志及/proc接口间接追溯内存回收行为发生的时间、触发条件与释放量。
查看内核消息中的内存回收事件
内存回收(如kswapd线程唤醒、直接回收、OOM killer触发)会写入内核环形缓冲区,使用dmesg可提取带时间戳的关键记录。
打开终端,执行:dmesg | grep -i "reclaim\|kswapd\|oom\|pagevec"。
重点关注含“reclaimed”字样的行,例如:[12345.678901] kswapd0: pagevec reclaim 124 pages,该行表明kswapd在某时刻回收了124页内存;若出现“Triggering reclaim”,说明内核主动启动了内存回收流程。
若需持续监控新发生的回收事件,运行:dmesg -w | grep -i "reclaim\|kswapd",按Ctrl+C退出。
从系统日志中检索内存压力相关条目
systemd-journald会将部分内核消息和用户空间内存管理事件(如systemd-oomd干预)存入结构化日志,比dmesg更易按时间筛选。
方法一:查看最近1小时内与内存回收强相关的日志条目
执行:journalctl --since "1 hour ago" | grep -E "(reclaim|kswapd|oomd|lowmemory)"。
方法二:精确匹配systemd-oomd的自动回收动作(仅Kylin V10 SP3+启用该服务时有效)
执行:journalctl -u systemd-oomd --no-pager | tail -n 20,观察是否出现“Reclaiming memory from process”或“Killing process due to memory pressure”等语句。
注意:systemd-oomd默认未启用,需先确认服务状态——运行 systemctl is-active systemd-oomd;若返回inactive,则此方法无输出。
检查/proc/vmstat中的累计回收计数
/proc/vmstat提供内核内存子系统的原子级统计值,其中pgpgin/pgpgout、pgmajfault、pgpgin等字段虽不直接命名“reclaim”,但其变化趋势可反推回收强度。
第一步:获取当前回收相关计数快照
执行:grep -E "pgpgin|pgpgout|pgmajfault|pgpgin|pgpgout|pgmajfault|pgpgin|pgpgout|pgmajfault" /proc/vmstat。
第二步:等待30秒后再次执行相同命令,对比两组数值差值:
若pgmajfault大幅上升,说明大量缺页触发了页回收;
若pgpgin与pgpgout同步激增,表明页面换入换出频繁,常伴随后台回收压力。
第三步:将两次结果保存为文件便于比对
执行:grep -E "pgpgin|pgpgout|pgmajfault" /proc/vmstat > vmstat_before.txt → 等待 → grep -E "pgpgin|pgpgout|pgmajfault" /proc/vmstat > vmstat_after.txt → diff vmstat_before.txt vmstat_after.txt。











