文章归档

Intel Cache Allocation Technology: CPU LLC Isolate

LLC是指Last Level cache,目前来说通常也就是L3 Cache,CAT是指Intel架构提供的一组工具&技术,用以支持LLC隔离。隔离的目的是针对Latency sensitive服务程序,提高QoS。可以考虑到两个LS敏感的程序跑在同一个机器上相互影响的程度还是比较大。

相关的一些资料如下:

  1. x86: Intel Cache Allocation Technology support
  2. Intel® 64 and IA-32 Architectures Software Developer Manuals 其中的 17.16 PLATFORM SHARED RESOURCE CONTROL: CACHE ALLOCATION TECHNOLOGY

cpu cache隔离技术的原理基本上就是通过划分LLC,限制进程能使用的cache,前后隔离效果如下:

CAT包含一系列工具:

  • 通过CPUID指令,查询当前cpu架构是否支持CAT技术,以及支持哪些资源类型(目前来看一般就是LLC),同时可以查询CLOS的数量以及CBM,CBM是指bitmask的长度
  • 提供一种机制,可以关联CLOSID和bitmask
  • 提供一个特殊的寄存器,存储CLOSID,硬件根据CLOSID决定当前使用哪些资源

从内核提交的patch来说,目前的做法基本上是这样的:

  • 新增一种cgroup文件系统,cacheqe,在进程组级别上控制。
  • 用户通过cacheqe设置当前进程组使用哪些cache,不同的cgroup之间的cache可以是完全隔离的,也可以是共享的。
  • 进程在schedule()的时候,内核讲当前进程的CLOSID设置到寄存器。

到这里内核以及用户态需要做的事情就完毕了。CPU在执行的指令的时候,就能根据寄存器的值来限制进程只能使用哪些cache。

但是有一点需要注意的是,Intel开发手册里提到,cache的设置必须是连续的,不能间隔的使用。比如一个24路的cache,只能类似于3,4,5这样设置,不能3,6,7这样设置(可能是硬件实现复杂度比较高,不允许这么玩)

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>