# 1. TLB shootdown 在多核页表修改时跨核 invalidate 的 IPI 风暴工程价值? A TLB 是全局共享的,无需跨核失效 B IPI 风暴只影响单核系统 C 页表修改后需通过 IPI 让其他核失效对应 TLB,频繁操作会形成 IPI 风暴,工程上通过批处理与按需失效缓解 ✓ 正确答案 D TLB shootdown 只发生在你主动调用时,与页表修改无关
# 2. ARM64 TLB invalidation by VA(TLBI)指令与 x86 INVLPGB / INVPCID 的实现差异? A INVPCID 负责广播失效所有地址 B 两者都完全依赖软件 IPI C ARM64 靠硬件广播的 TLBI 完成跨核失效,x86 传统依赖软件 IPI,INVLPGB 是 x86 的硬件广播演进 ✓ 正确答案 D ARM64 的 TLBI 无法按虚拟地址失效
# 3. mm-tlb shootdown 在 Linux kernel 的 mm_tlb_flush_nested vs mm_tlb_flush_sync 接口? A flush_sync 强制同步失效,flush_nested 用嵌套计数避免重复 shootdown ✓ 正确答案 B 两者都用于非同步失效,从不等待 C flush_nested 会强制发出更多 IPI D 两者只在 ARM64 上存在
# 4. ASID 复用与 broadcast TLB flush 在频繁进程切换的开销? A ASID 复用不需要任何 flush,直接切换 B ASID 复用前需广播失效旧 ASID 的 TLB 条目,频繁复用会产生跨核 flush 开销 ✓ 正确答案 C ASID 数量无限,永不复用 D broadcast flush 只在单核系统上发生
# 5. TLB shootdown 在 cgroup v2 memory 压力下的延迟放大? A cgroup 内存压力不会触发任何回收 B 内存压力下 TLB 会自动失效,无需 shootdown C shootdown 只发生在空闲核上,不影响延迟 D 回收触发的 unmap 会引发大量 shootdown 与 IPI,叠加延迟形成放大效应 ✓ 正确答案
# 6. Linux 的 lazy TLB 与 deferred shootdown,为什么切换回原进程时若 TLB 未失效可以跳过 IPI,mm refcount 如何辅助判断? A 进程切出后 TLB 必须立即全量失效 B 进程切出后其 TLB 可保持 lazy,若切回前无其他核修改该 mm 则复用旧 TLB 跳过 IPI,mm refcount 帮助判断是否仍有活跃核 ✓ 正确答案 C mm refcount 无法用于判断是否需要 flush D lazy TLB 只在单核系统上有效
# 7. shrinker API(如 struct shrinker)注册 callback 减少 cache 的工程价值? A 它只在系统启动时调用一次 B 它允许子系统注册回调,在内存压力下统一回收各自缓存 ✓ 正确答案 C 它只用于回收进程页,不涉及缓存 D 它禁止内核在内存紧张时回收缓存
# 8. slab shrinker(kmem_cache_reclaim)与 page cache shrinker(drop_pagecache)的工程差异? A slab shrinker 回收内核对象缓存,page cache shrinker 回收文件页缓存,两者实现粒度不同 ✓ 正确答案 B 两者回收完全相同的对象 C page cache shrinker 只回收内核对象 D slab shrinker 不参与内存回收
# 9. vmscan 的 scan balance(anon vs file inactive)策略? A vmscan 总是先回收 anon 页,与 file 无关 B swappiness 决定 anon 与 file 的扫描倾斜,默认倾向优先回收 file 页而少 swap anon 页 ✓ 正确答案 C swappiness 只影响文件缓存大小,不影响 anon D vmscan 从不回收文件页
# 10. memory.events 的 low、high、max、oom 计数在 SLA 监控的工程价值? A 通过 low/high/max/oom 事件计数量化内存压力,用于 SLA 监控与告警 ✓ 正确答案 B 它只记录 CPU 使用率,与内存无关 C 它每个事件只记录一次,无法统计 D 它只在 OOM 时才有意义
# 11. memory.lowmax(保护等级上限)的工程边界? A memory.lowmax 与 memory.low 无关 B memory.lowmax 是硬上限,超过即 OOM C memory.lowmax 限制 cgroup 可获得保护量的上限,防止保护无限放大挤占兄弟 cgroup ✓ 正确答案 D memory.lowmax 只影响文件缓存
# 12. cgroup v2 memory.low(soft guarantee)与 memory.high(soft limit)的边界? A 两者含义完全相同 B low 是硬保证,内存再缺也不回收 C high 超过立即 OOM 杀进程 D low 是软保护下限,high 是软上限(超了触发回收与 throttle),两者都非强制 OOM ✓ 正确答案
# 13. memory.low 的"protection"语义与 memory.min 的强制 guarantee 差异? A min 只在超过后触发回收 B low 比 min 更强制 C 两者都允许任何情况下被回收 D min 是强制保证不可回收,low 是软保护尽力而为 ✓ 正确答案
# 14. memory.high 触发 reclaim(throttle)vs memory.max 触发 OOM kill 的工程价值? A 两者都只影响文件缓存 B 两者都在超限时立即 OOM kill C high 是硬上限,max 是软上限 D high 触发 reclaim + throttle 减速,max 触发 OOM kill,形成从慢到停的分级策略 ✓ 正确答案
# 15. flush_tlb_range 与 flush_tlb_mm 的代价差异,为什么只失效部分地址空间可能比全量失效更复杂,何时应选择全量失效? A 全量失效总是比范围失效代价高 B 范围失效需精确逐条定位、实现更复杂,范围很大时全量失效反而更简单高效 ✓ 正确答案 C 范围失效无法按地址失效 TLB D flush_tlb_mm 只失效一个页面
# 16. ARM64 为何能用硬件广播的 TLBI 免去软件 IPI,与 x86 软件 shootdown 在可扩展性上的差异? A 两者在可扩展性上完全相同 B x86 完全没有软件 IPI,全靠硬件广播 C ARM64 的 TLBI 不能广播,需逐核发 IPI D ARM64 用硬件广播 TLBI 免去软件 IPI,x86 传统靠软件 IPI 精确选择核,两者在广播/精确间取舍 ✓ 正确答案
# 17. cgroup v2 memory reclaim 在 hierarchical 的逐级传播? A 每个 cgroup 独立回收,互不影响 B reclaim 只作用于叶子 cgroup,忽略父级 C reclaim 沿 cgroup 树逐级传播,按各子 cgroup 的保护等级分配回收压力 ✓ 正确答案 D 层级化 reclaim 不支持继承限制
# 18. Linux 直接回收(direct reclaim)触发 shrink_inactive_list 与 kswapd 的协同? A direct reclaim 是后台线程,kswapd 是同步回收 B kswapd 后台提前回收维持水位,direct reclaim 在分配失败时由分配线程同步回收兜底 ✓ 正确答案 C 两者从不共享扫描逻辑 D kswapd 只在进程退出时运行