核心前提:只要独占 cache size 足够大,业务的性能是可以得到保证的
we can conclude that whether CAT can provide perfor mance isolation between workloads is highly dependent on the size of the dedicated cache
思路:基于CPI的动态反馈,来动态调整每个容器的独占 cache 和共享 cache 容量,达到每个容器都可以得到很好的性能
难点:预测 wss(业务真正需要的cache size)。这里面有一个容量失效和冲突失效的问题,冲突失效和容量失效是 有一定的overlap的,冲突失效是因为多条cache数据映射到同一个cache line上,导致的miss,这个问题会导致wss难以预估。这个问题没有什么太好的思路,所以dCat的思路是基于feedback来动态扩大cache size
dCat 的状态机是这样的:
简单来说,是一个实时feedback的过程
Reclaim:初始状态
Recevier:减少cache退化,增加cache会提升
keeper:减少cache退化,增加cache不提升
Donor:减少cache不退化,增加cache不提升
Streaming:增加cache不断提升
系统流程:
备注:
- baseline是基准性能,但是每个阶段,都有不同的 baseline,会动态变化 Baseline performance is only defined for a specifi workload phase, so it has to be determined again at every phase change.
- Categonize workloads,就是识别容器的状态,对应到上面的几个状态机上,Reciver、keeper、Doner
问题:
- 论文中CAT隔离,使用的是qpos,qpos是CAT的前身,只支持core级别的cache隔离,也就是cache隔离相当于是通过绑核实现的