首页 > 其他分享 >intel-RDT技术浅析

intel-RDT技术浅析

时间:2023-10-07 10:37:49浏览次数:35  
标签:RDT intel IA32 带宽 CLOSID 内存 寄存器 浅析

前言

本文适合于想要了解RDT技术的人阅读,会涉及到RDT技术的硬件机制,需要对CPU的socket、core、thread等概念有一定的了解。

RDT技术简介

RDT技术全称 Resource Director Technology,RDT技术提供了LLC(Last level cache)以及MB(Memory Bandwidth)内存带宽的分配和监控能力。

RDT的主要功能有以下几个:

  1. CAT(Cache Allocation Technology):LLC的cache分配
  2. CMT(Cache Monitor Technology):LLC的cache使用情况监控
  3. MBA(Memory Bandwidth Allocation):内存带宽分配技术
  4. MBM(Memory Bandwidth Monitor):内存带宽监控技术
  5. CDP(Code&Data Prioritization):细化的Code Cache和Data Cache的分配

在混合部署场景,cgroup提供了粗粒度的CPU、内存、IO等资源的隔离和分配,但是对于每个CPU,这些核心会独占自己的L1 Cache、L2 Cache,对于LLC则是共享的,cgroup无法解决llc的竞争问题,因此需要提供细粒度的LLC资源的分配和监控。

Intel RDT

硬件能力

RDT技术提供了MSR(Model Specific Register)寄存器作为编程接口,主要包括三个寄存器IA32_PQR_ASSOC、IA32_QM_EVTSEL和IA32_QM_CTR。

IA32_PQR_ASSOC

IA32_PQR_ASSOC寄存器

负责指示当前物理线程所属的COS以及RMID,COS(Class of service)是一组资源控制策略,高32bit用于指示所属的策略组,RMID(Resource Monitor ID)则是监控组ID,指示当前物理线程所属的监控组。

IA32_QM_EVTSEL

IA32_QM_EVTSEL寄存器
是一个查询寄存器,在记录了查询的监控组的RMID以及想要查询的event以后,通过IA32_QM_CTR寄存器获取数据。
支持的查询事件包括:

  • L3 occupancy:Last-level-cache的占有量
  • Total memory bandwidth:全部的内存带宽(local的内存带宽+remote内存带宽)
  • Local memory bandwidth:本地的内存带宽

IA32_QM_CTR

IA32_QM_CTR寄存器
用于获取监控的事件值。

CLOSID和RMID

Intel 提供了内存带宽和llc的分配和监控能力,其核心就在于CLOSID(Class of Service ID)RMID(Resource Monitor ID)。每一个物理线程的IA32_PQR_ASSOC寄存器指示着当前线程访问资源的限制方式以及事件监控累积到的具体监控组。每一个core上的每一个物理线程(可能存在超线程情况)都包含一组RDT的MSR寄存器。

CLOSID是一组资源分配策略的索引,由硬件支持,当物理线程发起对llc的访问时通过CLOSID作为偏移在IA32_L3_QoS_MASK_n中找到CBM(Cap Bit Mask),CBM是位掩码,表示对llc的分配策略,按照CBM访问限定区域的cache。同时CLOSID也作为IA32_L2_QoS_Ext_BW_Thrtl_n的偏移得到Delay Value,Delay Value限定当前物理线程访问共享的LLC时的速率,通过增加对LLC的访问延迟来改变实际访问的内存带宽。可以参考下图:

CAT和MBM实现

RMID则是用于标记当前物理线程上的事件应该统计到的具体监控组。

Note:在这里有几个需要注意的点:

  1. IA32_PQR_ASSOC、IA32_QM_EVTSEL和IA32_QM_CTR三个寄存器是RDT技术的可编程接口寄存器,用于配置分配策略和读取监控事件,需要注意这组寄存器是per-thread的,因此可以在per-thread粒度上进行资源配置和监控。
  2. IA32_L3_QoS_MASK_n和IA32_L2_QoS_Ext_BW_Thrtl_n是具体存储内存带宽和llc分配策略的寄存器组,是per-socket的,每个socket的多个core上的多个thread共享该组,很明显这两组寄存器的数量是有限的,因此CLOSID的数量也是有限的,如何分配CLOSID、如何切换thread的CLOSID这是上层软件需要关注的事情。
  3. RMID与CLOSID类似,硬件不可能支持无限的监控组,因此RMID的数量也是有限的。
  4. 第2条中提到,IA32_L3_QoS_MASK_n与IA32_L2_QoS_Ext_BW_Thrtl_n是per-socket的硬件寄存器,因此RMID和CLOSID自然也是per-socket的,不同socket上的相同ID完全独立
  5. 上文在描述内存带宽限制时提到了可编程的请求控制器,该控制器比较特殊,在某些CPU上是per-core的,因此在特定的CPU上同core上的不同thread即使具备不同的delay value,会按照两个thread中最大程度的内存带宽限制进行压制。当然也有一些CPU支持per-thread的细粒度内存带宽限制

RDT技术应用

RDT技术作为intel提供硬件特性,自然也存在一些相应的上层软件用于用户使用RDT能力,比如pqos、pcm等等。Linux内核在4.10版本也提供了resctrl文件系统用于操控RDT。关于resctrl的机制和实现后续再写。

标签:RDT,intel,IA32,带宽,CLOSID,内存,寄存器,浅析
From: https://www.cnblogs.com/wodemia/p/17745661.html

相关文章

  • Intel 18A工艺稳了!16代酷睿Lunar Lake现身SiSoftware Sandra
    近日,在SiSoftwareSandra数据库中出现了LunarLake处理器的信息,这可是Intel第16代酷睿处理器的代号,要知道第14代酷睿处理器也要等到2个月后发布。上面这张图展示了非常多的信息:1、处理器型号Intel(R)00001.00GHz表明还是非常早期的ES工程样品,离上市还早。2、4x2.5MB+4MB......
  • pig4cloud框架系列二:表结构浅析
    继系列一后,此篇简单讲一下表结构及每个表的作用1,sys_user:用户表,存储用户信息。2,sys_role:角色表3,sys_user_role:用户角色的定义,一个用户可以有多个角色,1对多的关系。4,sys_menu:菜单表,项目所有的菜单都维护在该表中。5,sys_role_menu:角色菜单表,定义每种角色具有哪些菜单,用户权限的......
  • intellijidea下载-intellijidea软件下载 安装包下载方式
    intellijidea官方版特色丰富的导航模式IDEA提供了丰富的导航查看模式,例如Ctrl+E显示最近打开过的文件,Ctrl+N显示你希望显示的类名查找框(该框同样有智能补充功能,当你输入字母后IDEA将显示所有候选类名)。在最基本的project视图中,你还可以选择多种的视图方式。智能的选取在很多时候我......
  • IntelliJ IDEA下载-IntelliJ IDEA中文下载安装 安装包下载
    IntelliJIDEA2022是一款市面上最好的JAVAIDE编程工具,该工具支持git、svn、github等版本控制工具,整合了智能代码助手、代码自动提示等功能,IntelliJIDEA强大的静态代码分析和人体工程学设计,让你的开发设计简单轻松,IntelliJIDEA将您的源代码编入索引之后,通过在各个环境中提供相......
  • intellij idea如何查看项目maven依赖关系图
    文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享?踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。1、打开maven项目依赖打开后的效果图2、选择缩放可以选择1:1缩放、下方是效果图。3、查看......
  • 第四节人工智能 考点13 人工智能的概述 1.人工智能的概念 人工智能 (Artificial Int
    第四节人工智能考点13人工智能的概述1.人工智能的概念 人工智能(ArtificialIntelligence,AI)是研究怎样让计算机做一些通常认为需要智能才能做的事情,又称机器智能主要研究智能机器所执行的通常与人类智能有关的功能,如判断推理、证明、识别、感知、理解、设计、思考、规划、学......
  • IntelliJ IDEA 解决连接MYSQL失败问题
    省流版:mysql-connector-java-8.0.13.jar应该出现在下面三个地方:①web-WEB-INF-lib②Database连接时(一般会自动下载)③apache-tomcat-8.0.32-lib 在自己的项目里找到web-WEB-INF-lib,检查一下有没有驱动包  如果没有mysql-connector-java-8.0.13.jar需要下载一个然后在F......
  • VMWare 虚拟机 CPU 设置里针对 CPU 的 Intel VT-x 选项功能介绍
    虚拟化技术是现代计算的关键组成部分,它使多个虚拟机(VM)可以在单个物理主机上运行,每个虚拟机都似乎是独立的计算机。VMware作为虚拟化技术领域的领导者之一,提供了强大的虚拟化解决方案,其中一个重要的组成部分就是对CPU虚拟化的支持。在VMware虚拟机设置选项中,选择启用虚拟化引擎的......
  • 使用 Gradle:将项目代码导入 IntelliJ
    1.将项目导入IntelliJ打开IntelliJ,如果还打开了其他程序,请关闭它们,再次进入欢迎屏幕。这次,不选择“创建新项目”,而是选择导入项目(ImportProject)。点击导入项目(ImportProject)后,会弹出一个窗口,提示你从某个文件夹导入项目。转到保存ud282-master的文件......
  • IntelliJ 中的 Hello World
    你已经下载了IntelliJ,我们现在来看看如何使用它。下面是在IntelliJ中创建 Helloworld 程序的文本说明!1.打开IntelliJ第一次打开IntelliJ时,你将看到一个这样的欢迎界面和选项,可以利用这些选项创建一个新项目、导入或打开一个项目。我们来开始一个新项目,选择创建新项目......