MT^2: Memory Bandwidth Regulation on Hybrid NVM/DRAM Platforms
Introduction
近年来,非易失性内存正在被引入到数据中心中使用。例如:谷歌云就使用了2019年发布的傲腾内存,当前情况,NVM(Non-volatile memory)在数据中心中主要与DRAM并列使用,作为字节可寻址以及大容量的内存,这样数据中心就存在NVM/DRAM的混合内存结构。
在服务器中虚拟机、应用程序、容器共享着内存带宽,一个应用程序过多的使用了内存带宽,就会成为一个噪声邻居,影响干扰其他的程序,这就是邻居问题(noisy neighbor problem)。在多租户的云服务环境中,混合内存架构下,NVM和DRAM共同连接在总线上,使用不同内存的流量竞争带宽,加剧了邻居问题。
上图就是混合内存架构下,干扰问题的情况,其中最左边一列代表负载单独运行所占用的带宽,A代表被干扰线程,B是干扰线程。NVM类型内存的访问在占用内存非常低的情况下仍对其他线程干扰严重。
同时,被干扰的A任务,可使用的带宽就会下降,带宽的下降就会导致性能下降,如下图所示。
对混合内存的带宽进行管理是解决干扰问题的一种普遍方法。
challenge
- 混合内存带宽的不对称问题
- DRAM带宽 > NVM带宽
- 内存带宽取决于内存访问,不再静态
- NVM和DRAM共享总线带宽,为每个进程去追踪内存的访问类型非常困难
- 调节带宽的硬件/软件支持机制不足,为每次访问去监视,开销太大了
design
MT^2将线程分组管理,将线程分为一个个Tgroups。MT^2主要分为两个部分,一个是监视器(Monitor),一个是管理器(Regulator)。监视器利用现存的软硬件机制(可以参考原文背景知识部分),得到各个Tgroups的带宽使用情况,同时会去测试各种类型内存访问的延迟,从而确定干扰情况。管理器得到监视器的信息,通过限制NVM带宽占比高的Tgroups的方式解决干扰问题。
Monitor
监视各种内存访问类型的带宽
- DRAM Read –PMU
- DRAM Write –Total - others
- NVM Read –PMU
- NVM Write
- file API –遍历VFS
- memory-mapped access
- trusted app –modify PMDK, thread count
- untrusted app –PBES
Regulator
- NVM –CPU cores
- DRAM –MBA
evaluation
这里给出fio测试的结果,原文还有其他负载的测试结果,与之前的图相比,干扰问题获得了缓解。