缓存与虚拟化:共享、干扰与侧信道
更新时间:2026-10-01。云上你以为独占了 CPU,微架构层面其实可能和陌生租户共享缓存。
本文要回答的问题
- 多租户如何互相影响缓存性能?
- 缓存为什么会成为安全侧信道?
一、性能干扰
各 VM 的工作集在共享 LLC 上互相 evict,邻居负载变化导致你的延迟抖动;嵌套页表还增加翻译和页表缓存压力。对延迟敏感业务这是风险。
二、安全侧信道
攻击者可利用共享缓存测量命中/缺失时间,推断受害方访问(Flush+Reload、Prime+Probe),跨 VM 泄露密钥等。缓解手段包括缓存分区/限速、独占物理核或主机、避免不同信任级共享缓存。
三、常见坑
- 假设云实例 CPU 完全隔离。
- 高价值密钥服务与不可信负载共驻留。
- 只测孤立性能,未做噪声邻居压测。
小结
虚拟化下共享 LLC 同时带来干扰和侧信道风险,强安全/低延迟场景要用分区、独占实例隔离。下一篇 缓存与分支/代码布局。
总结
虚拟化并不在微架构层面隔离缓存:各 VM 的工作集在共享 LLC 上互相 evict,"吵闹邻居"让你的命中率和延迟不可预测,嵌套页表还额外增加翻译压力;更严重的是共享缓存可被 Flush+Reload、Prime+Probe 等手法利用成跨 VM 时序侧信道,窃取密钥等敏感信息。云实例的"独占"默认只是 vCPU 意义上的——强安全与低延迟业务必须靠缓存分区/QoS 或独占物理核、独占主机来真正隔离。