内存管理与 page cache

共 19 题
#

1. Linux 虚拟内存的 VMA(Virtual Memory Area)与 page fault 流程

A VMA 描述虚拟地址空间的分段映射,page fault 先查 VMA 再建立页表,minor 命中缓存、major 触发磁盘 I/O ✓ 正确答案
B page fault 发生时一定需要磁盘 I/O
C VMA 只用于匿名内存
D page fault 无法被内核捕获
#

2. OOM killer 的 oom_score_adj 与进程选择启发式

A oom_score_adj 为 -1000 会使进程绝对豁免于 OOM 被杀 ✓ 正确答案
B oom_score 只由进程运行时间决定
C OOM killer 按进程 PID 顺序选择
D oom_score_adj 提高一定不被杀
#

3. page cache 的 radix tree(5.x 转为 xarray)的设计与 dirty page 写回

A xarray 只能存储单个值
B 5.x 内核以 xarray 替换 radix tree 索引 page cache,dirty 页由 writeback 机制按阈值写回磁盘 ✓ 正确答案
C dirty 页永不写回
D page cache 用链表索引所有页
#

4. NUMA 的内存策略(MPOL_BIND、MPOL_PREFERRED)与 per-CPU page cache

A per-CPU page cache 与 NUMA 无关
B MPOL_INTERLEAVE 只在本地节点分配
C 所有 NUMA 策略效果相同
D MPOL_BIND 只在指定节点分配内存,超限时失败或触发回收 ✓ 正确答案
#

5. file-backed 与 anonymous 页的回收优先级

A 内核优先回收 cost 更低的 file-backed 页,anonymous 页需 swap 才能回收 ✓ 正确答案
B anonymous 页可以无代价直接丢弃
C swappiness 只影响 file-backed 页
D file-backed 页无法回收
#

6. page cache 的 drop_caches 操作与缓存可控释放

A 写入 3 可同时释放 page cache 与 dentry/inode 缓存 ✓ 正确答案
B drop_caches 能保证立即释放所有缓存且无副作用
C drop_caches 只影响 swap
D drop_caches 是提升性能的常规优化手段
#

7. page cache 的"双缓冲"机制与共享映射(MAP_SHARED)的写时复制

A MAP_PRIVATE 的写入会共享给其他进程
B MAP_SHARED 的写入不会修改共享页
C MAP_SHARED 下多进程共享同一物理页,MAP_PRIVATE 用 COW 让写操作私有化 ✓ 正确答案
D 双缓冲指用户态与内核态共享同一份数据
#

8. page cache 的"热点"(hot page)与"冷页"(cold page)双链表

A 新页先进入 active 链表
B 双链表与回收无关
C 所有页都只在一个链表
D 回收优先从 inactive 链表尾部回收,活跃页通过提升机制保留在 active 链表 ✓ 正确答案
#

9. page cache 的"穿透"(cache miss)诊断工具,cachestat、mincore 的用法

A cachestat 无法测量页缓存命中
B mincore 能统计全网命中率
C cachestat 提供整体命中率统计,mincore 可检查具体页是否驻留内存 ✓ 正确答案
D 两者完全相同
#

10. cgroup v2 的 memory.events 与 PSI(Pressure Stall Information)指标

A memory.events 记录 OOM、high、max 等内存事件计数,PSI 报告 cpu/memory/io 三类资源压力导致的停滞比例 ✓ 正确答案
B PSI 只报告 cpu 压力
C memory.events 只记录 IO 事件
D 两者无法用于诊断内存压力
#

11. /proc/sys/vm 的关键参数,swappiness、dirty_ratio、dirty_background_ratio

A dirty_ratio 是后台异步写回阈值
B swappiness 控制文件页回收快慢
C dirty_background_ratio 达到后由后台线程异步写回,不阻塞应用 ✓ 正确答案
D 这些参数只影响 swap 设备
#

12. cgroup v2 的 memory.max、memory.low、memory.high 的内存控制层级

A memory.low 是硬性上限
B memory.high 是软性节流,超过后主动回收但不立即 OOM ✓ 正确答案
C memory.max 是软性保护
D 三者语义完全相同
#

13. memory cgroup 的"硬限制"(hard limit)与"软限制"(soft limit)的边界

A 软限制绝对不可突破
B 硬限制(memory.max)强制不可突破,软限制(memory.high/low)弹性尽力执行 ✓ 正确答案
C 硬限制可被短时突破
D 两者无区别
#

14. minor 与 major page fault 的差异,内存未命中但页表未建 vs 需要磁盘 I/O,如何用工具统计两类缺页并定位性能问题?

A major fault 需要磁盘 I/O,是主要性能瓶颈;可用 time -v 或 /proc stat 统计 ✓ 正确答案
B minor fault 需要磁盘 I/O
C major fault 只建立页表
D 两类 fault 无法区分
#

15. 内存碎片化与治理,外部碎片如何影响大页分配(THP 失败),内存规整(compaction)与防碎片策略(MIGRATE_* 页类型)如何?

A compaction 会销毁用户数据
B 外部碎片不影响 THP 分配
C MIGRATE_UNMOVABLE 页可被自由移动
D compaction 通过移动可移动页聚合连续空间,MIGRATE_* 类型按页性质分类以减少碎片 ✓ 正确答案
#

16. 直接回收与内存压力,分配路径上的 direct reclaim 与 kswapd 异步回收如何分工,直接回收导致延迟尖刺时如何排查?

A kswapd 会阻塞分配路径
B direct reclaim 是后台异步的
C kswapd 后台异步回收,direct reclaim 在分配路径上同步回收,后者会导致延迟尖刺 ✓ 正确答案
D 两者互不相关
#

17. 内存监控工具箱,free/vmstat/sar/cachestat 与 PSI 各提供什么信息,如何综合判断内存是否真正紧张而非缓存占比高?

A PSI 与内存压力无关
B buff/cache 高就意味着内存紧张
C free 的 used 即真实可用
D 判断内存是否紧张应看 available 与回收/swap/PSI 指标,而非仅看 buff/cache 占比 ✓ 正确答案
#

18. transparent hugepage(THP)与 madvise(MADV_HUGEPAGE) 的应用

A madvise 模式会让所有映射使用大页
B THP 必须通过 hugetlb 显式配置
C madvise(MADV_HUGEPAGE) 让应用按需提示内核为特定映射使用大页,避免 always 模式的全局开销 ✓ 正确答案
D THP 无法关闭
#

19. swap 的 zswap(压缩)、zram(内存设备)、传统 swapfile 的取舍

A zswap 与 zram 完全相同
B zram 会立即释放物理内存
C zswap 压缩缓存换出页减少磁盘写,zram 用内存压缩块设备避免磁盘 IO,传统 swapfile 真释放内存但慢 ✓ 正确答案
D 传统 swapfile 不涉及磁盘