# 1. NUMA 拓扑中 CPU、内存节点(node)与互连的关系是什么,为什么数据库与 JVM 需要 NUMA 感知? A NUMA 只影响 CPU 频率,不影响内存 B NUMA 中所有节点访存延迟相同 C 本地 node 访问延迟低,远程 node 访问经互连延迟高,数据库与 JVM 大内存高并发特性需 NUMA 感知优化 ✓ 正确答案 D 数据库与 JVM 无需关心 NUMA
# 2. 如何用 numastat、numactl --hardware 诊断跨 NUMA 访存,进程内存分布在多个 node 时如何解读? A numastat 只显示 CPU 频率 B numactl --hardware 给出拓扑与距离,numastat 给出各 node 访问统计,可定位跨 node 访存 ✓ 正确答案 C numactl --hardware 无法显示 node 距离 D 这些工具无法查看进程内存分布
# 3. NUMA 页迁移与自动均衡,migrate_pages 与 NUMA balancing 的触发阈值如何调优,迁移抖动如何控制? A migrate_pages 只能由内核自动调用,无法手动 B 迁移次数越多越好,无需控制 C NUMA balancing 通过扫描速率与阈值控制迁移积极性,并只在访问模式稳定时迁移以抑制抖动 ✓ 正确答案 D 迁移抖动对性能无影响
# 4. first-touch 分配,NUMA 下内存为何默认落在首次触碰的 CPU 所在节点,应用初始化方式如何决定内存分布? A 缺页时页面分配在首次触碰的 CPU 所在 node,初始化线程的 node 分布决定内存落点 ✓ 正确答案 B 内存总在 mmap 时静态分配,与触碰无关 C first-touch 会把内存随机分配到所有 node D first-touch 策略保证内存总在本地 node
# 5. Linux autoNUMA(numa_balancing)如何通过周期性页表标记与缺页采样检测访问模式,并触发页迁移? A 它直接读取硬件计数器,不做缺页采样 B 周期性标记 PTE 触发缺页采样,统计各 node 访问并据此迁移页到访问集中的 node ✓ 正确答案 C 它只标记从不迁移 D 它只在进程启动时检测一次
# 6. numa_balancing 的 two-stage migration 与页扫描速率(numa_balancing_scan_rate)如何权衡迁移收益与开销? A scan_rate 只影响内存大小,不影响迁移 B two-stage 分粗粒度与细粒度两阶段迁移,scan_rate 控制检测频率以权衡迁移收益与开销 ✓ 正确答案 C two-stage 会在一次迁移中完成所有调整 D scan_rate 越高开销越小
# 7. numactl 的 interleave 与 bind 策略分别适合哪类内存分配模式,与自动均衡如何取舍? A bind 与 interleave 效果完全相同 B bind 固定到指定 node 适合强绑定负载,interleave 轮询分配均衡带宽适合多 node 并发访问 ✓ 正确答案 C interleave 只能绑定单个 node D bind 会均衡带宽,interleave 会固定节点
# 8. NUMA 本地与远程访存的延迟/带宽差异如何影响数据库 buffer pool 与 JVM 堆的布局与性能? A 远程访存延迟高带宽低,buffer pool 与 JVM 堆通过分区绑定 node 提升本地命中来改善性能 ✓ 正确答案 B 远程访存与本地访存无差异 C JVM 堆总是单 node 放置,无需 NUMA 感知 D buffer pool 分区只会增加远程访问
# 9. 为何盲目开启 numa_balancing 在访问模式频繁变化的负载上可能因迁移抖动反而降低性能? A numa_balancing 只在启动时迁移一次 B 模式频繁变化不影响自动迁移 C 迁移永远带来收益,不会抖动 D 模式频繁变化会导致页反复迁移(抖动),迁移开销超过本地化收益,反而降低性能 ✓ 正确答案
# 10. 在虚拟机与容器场景下,guest 视角的 NUMA 拓扑与宿主真实拓扑不一致会带来什么伪 NUMA 问题? A 容器不涉及 NUMA 拓扑 B vNUMA 总与真实物理拓扑完全一致 C 伪 NUMA 对性能无任何影响 D guest 视角的 vNUMA 与宿主真实拓扑不一致时,其 NUMA 优化可能失效并产生远程访问 ✓ 正确答案
# 11. 透明大页与 NUMA 的交互,THP 跨节点分配为何会放大远程内存访问,如何规避? A THP 大页整体归属一个 node,归属错误时整个 2MB 都变远程访问,需通过 node 对齐规避 ✓ 正确答案 B THP 大页会均分到所有 node,无远程问题 C THP 与 NUMA 完全无关 D THP 大页总是本地分配,不会远程
# 12. cgroup v2 的 memory.numa_stat 与容器内存绑定实践,如何让容器工作集留在本地节点? A memory.numa_stat 提供 per-node 分布,配合 cpuset 与节点绑定可使容器工作集留在本地 node ✓ 正确答案 B 容器内存无法控制分配到哪个 node C memory.numa_stat 只显示 CPU 使用 D 容器总是单 node 运行,无需绑定
# 13. 应用层 NUMA 优化组合,内存绑定、CPU 绑定与中断亲和性如何协同,典型数据库场景的配置思路如何? A CPU 绑定、内存绑定与中断亲和性协同,使线程、数据与中断处理都落在同一 node,形成本地化 ✓ 正确答案 B 只需绑定 CPU,无需管内存与中断 C 中断亲和性与 NUMA 无关 D 三者互相冲突,不能同时使用
# 14. 虚拟化下的 NUMA,vCPU 与 vNUMA 拓扑如何映射到物理拓扑,vCPU 跨 socket 会带来什么惩罚? A 虚拟化下 NUMA 优化自动完美对齐 B vCPU 跨 socket 无任何惩罚 C vNUMA 永远映射到单一物理 socket D vCPU 跨 socket 或 vNUMA 映射跨物理 socket 时,guest 的本地访问实为远程访问,产生延迟与带宽惩罚 ✓ 正确答案
# 15. 大页与 NUMA 预留,hugepages 如何在节点间分配,预留不均衡如何造成局部内存压力? A 大页按 node 预留,预留不均衡会使部分 node 内存被锁死造成局部压力,需均衡分配 ✓ 正确答案 B 大页预留与 node 无关,总是全局均衡 C 预留大页不会影响普通内存可用性 D 大页只能预留在一个 node
# 16. NUMA 感知数据结构,per-node 锁与计数器为何能减少跨节点 cache line 争用,典型场景如何拆分? A per-node 拆分会增加跨 node 争用 B 拆成 per-node 副本可把 cache line 争用限制在本地 node,减少跨 node 传递 ✓ 正确答案 C 共享单个计数器更利于 NUMA 性能 D per-node 锁与 cache line 无关
# 17. CXL Type-3 内存作为冷层(cold tier)时,内核的分层内存(tiered memory)策略如何决定页的放置与迁移? A 分层内存不会迁移页,只静态分配 B CXL 内存与 DRAM 性能完全相同,无需分层 C 热页放 DRAM、冷页放 CXL 冷层,通过 demotion/promotion 动态迁移以平衡性能与容量 ✓ 正确答案 D CXL 冷层只用于存储,不参与内存
# 18. 内存层(如 DRAM 与 CXL/PMem)在 Linux 中如何通过 node 与 demotion/promotion 机制表达冷热分层? A demotion 只提升热页,不降级冷页 B 所有内存层都合并为单一 node,无分层 C 不同性能内存层建模为不同 node,用 distance 表达差异,demotion/promotion 实现冷热层间迁移 ✓ 正确答案 D Linux 无法区分 DRAM 与 CXL
# 19. zone_reclaim_mode 与本地节点回收,为何默认关闭,开启后对远程分配与回收如何取舍? A 默认开启,优先本地回收 B 默认关闭,因为本地回收(扫描+驱逐)比远程分配更昂贵,开启后以本地回收换取本地性 ✓ 正确答案 C 开启后禁止远程分配,只能回收 D 它只影响文件缓存,不影响匿名页