前沿

英特尔至强 E5-2600 v4在对外宣传时候号称“为云而生”的,除了其强大的性能和众多核心外,主要亮点就是Resource Director Technology(RDT)新技术的加入。使得其有理由宣称“为云而生”。

我们知道在一个虚拟化环境中,宿主机的资源(包括CPU cache和内存带宽)都是共享的。但是如果有一个消耗cache的应用快速消耗了L3缓存,或者一个应用消耗了系统大量内存带宽,那么如何保证其他虚拟机应用呢?如何限制这些“可恶”的邻居呢?
针对上诉问题,以前都是通过控制虚拟机逻辑资源来实现,但是调整的粒度实在太粗,针对处理器缓存这样敏感而稀缺的资源,几乎是无能为力的。为此英特尔推出了RDT技术,希望可以解决这个问题。
那么看下RDT到底是什么神奇技术。

技术组成

RDT技术有其实有5个功能模块,分别是

  • Cache Monitoring Technology (CMT)缓存监测技术
  • Cache Allocation Technology (CAT)缓存分配技术
  • Memory Bandwidth Monitoring (MBM)内存带宽监测技术
  • Memory Bandwidth Allocation (MBA)内存带宽分配技术
  • Code and Data Prioritization (CDP)代码和数据分区技术

5个模块可以分为监控和控制两大类,CMT和MBM为监控技术,而CAT、MBA和CDP为控制技术。
RDT允许OS或VMM来监控线程,应用或VM使用的cache/内存带宽空间。通过分析cache/内存带宽使用率,OS或VMM可以优化调度策略提高效能,使得高级优化技术可以实现。

为什么需要RDT

配合这几个技术,OS能够知道应用使用了多少CACHE空间,内存带宽,从而给虚拟机的虚拟处理器分配真实的CPU资源。结合CMT和CAT,缓存可做到实时监测和使用,能够让处理器的资源向虚拟机中最重要、最紧迫的任务分配。CDP可以限制数据在LLC中的存储,从而将空间节省出来给代码存储。

具体功能

下面我们来看下RDT的一个具体功能。
以下方截图来说明,如下:

我们可以发现cores 0-5关联到了RMID 47-42,进 行了每个核监控,提供了CMT/MBM数据。

RMID

OS或VMM会给每个应用或虚拟机标记一个软件定义的ID,叫做RMID(Resource Monitoring ID),通过RMID可以同时监控运行在多处理器上相互独立的线程。

RDT的使用

工具软件

使用Intel开源的工具来实现,不需要内核支持。通过这个软件包可以使用CAT,CMT,MBM,CDP功能。
工具软件下载链接
(注:下面的指令均在root下运行)

  • make && make install

WARN: Error opening file ‘/dev/cpu/0/msr’!
ERROR: CDP detection error!
ERROR: Fatal error encounter in CAT discovery!
ERROR: discover_capabilities() error 1
Error initializing PQoS library!
出现上述错误,则执行如下指令:

  • modprobe msr

具体使用教程参考Usage Examples


参考资料:

  1. Intel RDT特性详解
  2. Kernel 4.14的RDT配置
  3. Intel RDT
  4. Linux 4.10中CAT的使用
  5. intel_rdt_ui.txt
  6. intel-cmt-cat
  7. intel-cmt-cat wiki