首页 > 系统相关 >mpam linux kernel源码分析

mpam linux kernel源码分析

时间:2023-09-12 20:45:14浏览次数:50  
标签:kernel tasks mpam cache 源码 schemata 100

MPAM (Memory System Resource Partitioning and Monitoring)是Armv8.4的feature,用于cache和内存带宽的监控和限制。截至现在,该feature在linux kernel的实现还在推进,最新一版参见https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git/log/?h=mpam/snapshot/v6.5-rc1。要了解mpam的原理参见https://developer.arm.com/documentation/ddi0598/latest/

MPAM原理

mpam是和intel rdt类似的feature。mpam的目的是在进程级别对cache和内存带宽的使用做限制。要实现这个目标就要搞清楚几个问题:

  1. 谁来发出限制请求?
  2. 谁来执行?
  3. 限制谁?
  4. 怎么限制?

计算机里干活的是PE,这个请求自然由它来担任,当然也可以是device。具体执行部件是cache和MSC(Memory-System Component)。被限制的主体自然是前面提到的进程。怎么限制是指策略,比如按百分比限制内存带宽,按way限制cache。搞清楚这几个问题,mpam实现的基本框架也就出来了:首先构建进程ID与限制策略的映射,这里对于每个需要限制的pid都对应一个PARTID;将PARTID保存在PE的某个寄存器里(MPAMn_ELx),当PE访问cache或MSC时携带该信息,cache或MSC收到该信息就会找到对应的策略进行限制。为了可以在用户态使用mpam,kernel复用了intel rdt的resctlfs。下面简单展示一下如何使用mpam。放一张图在这里:

MPAM的使用

目前只有最新的arm机器可能带有MPAM的硬件支持,能够支持MPAM的OS可能只有欧拉和龙蜥。本测试基于倚天+龙蜥。

1. 安装龙蜥OS;

2. 查看是否存在/sys/fs/resctrl/,如果没有可能时没kernel config没打开;

3. 如果resctrlfs里面是空的,需要先mount,

mount -t resctrl resctrl /sys/fs/resctrl

之后会看到在该目录下自动生成多个文件。

4,在resctrl下创建一个目录

# mkdir test
# ls test
cpus  cpus_list  id  mode  mon_data  mon_groups  schemata  size  tasks

这里最重要的是tasks和schemata,tasks用于存放需要做限制的进程pid,schemata用于设置限制策略。

查看schemata:

# cat schemata
MB:0= 100;1= 100
L3:0=ffff;1=ffff

  MB代表memory bandwidth,后面0,1代表numa node,100代表100%,也就是内存带宽的百分比; L3代表L3cache,0,1代表numa node,f代表bitmap,也就是每个cache有16way,全1代表占用所有way。

5. 修改schemata

# echo "MB:0= 50;1= 50" > schemata
# echo "L3:0=1;1=1" > schemata

现在我改成占用50%的内存带宽和1路cache。

6. 加入进程ID

准备工作好了,现在开始对task进行限制。

当前所有的pid默认都放在resctrl top dir下面的tasks里面,我们可以从那里面找一个进程写到本层目录的tasks里面。

比如100

# cat ../tasks | grep 100
100
1000
1001
# echo 100 > tasks
# cat tasks
100 # cat ../tasks | grep 100 1000 1001

可见一旦我们把一个pid写到某个tasks里面,pid就从原来的tasks里面消失了。这是正确的,毕竟对一个task实施两种策略是不合理的。

 这样就完成了对task的限制操作,非常简单。

MPAM源码分析

进入到最难的部分,源码分析。首先clone代码:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git
git checkout mpam_6.5_rc1

Jams的patch有上百个,看patch非常耗时,参考https://neoverse-reference-design.docs.arm.com/en/main/mpam/mpam-resctrl.html可以更好的理解mpam的实现脉络。

未完待续。。。

 

标签:kernel,tasks,mpam,cache,源码,schemata,100
From: https://www.cnblogs.com/banshanjushi/p/17696429.html

相关文章

  • 基于自定义表编写认证类、django-jwt源码分析、权限介绍、simpleui的使用
    基于自定义表编写认证类补充:翻译函数只要做了国际化,就会显示当前国家的语言fromdjango.utils.translationimportgettext_lazyas_msg=_('Signaturehasexpired.')#_是个函数的别名,这个函数是翻译函数,只要做了国际化,它就是中文认证类fromrest_framework_jwt......
  • 《Flask Web开发:基于Python的Web应用开发实战》高清高质量PDF电子书+源码
    网盘下载:https://pan.quark.cn/s/cc9dc7402cdb......
  • 《Python数据分析基础教程:NumPy学习指南.第2版》高清高质量PDF电子书+源码
    罕见的NumPy中文入门教程,Python数据分析首选从最基础的知识讲起,手把手带你进入大数据挖掘领域囊括大量具有启发性与实用价值的实战案例下载:https://pan.quark.cn/s/730b594117c0......
  • 基于自定义表编写认证类、django-jwt源码分析、权限介绍
    一、基于自定义表编写认证类认证类:auth.py:#写一个类继承BaseAuthentication,重写authenticate方法fromrest_framework.authenticationimportBaseAuthenticationfromrest_framework_jwt.authenticationimportJSONWebTokenAuthenticationfromrest_framework.exception......
  • Spring源码分析(六)容器的扩展点(BeanFactoryPostProcessor)
    之前的文章我写了BeanDefinition的基本概念和合并,其中很对次提到了容器的扩展点,这篇文章就写这方面的知识。这部分的内容主要涉及到官网的1.8小节。按照官网介绍来说,容器的扩展点可以分为三类,BeanPostProcessor,BeanFactoryPostProcessor以及FactoryBean。本文主要讲BeanFactoryPost......
  • 【玩转鲲鹏 DevKit系列】如何快速迁移无源码应用?
    本文分享自华为云社区《【玩转鲲鹏DevKit系列】如何快速迁移无源码应用?》,作者:华为云社区精选。为了帮助广大用户和开发者快速将无源码应用从x86迁移到鲲鹏,鲲鹏DevKit提供了动态二进制翻译工具ExaGear,它能在运行时将x86二进制指令翻译成鲲鹏二进制指令,使得大部分x86应用无需......
  • 开源即时通讯(IM)项目OpenIM源码部署流程
    由于OpenIM依赖的组件较多,开发者需求不一,导致OpenIM部署一直被人诟病,经过几次迭代优化,包括依赖的组件compose的一键部署,环境变量设置一次,全局生效,以及脚本重构,目前OpenIM部署比较丝滑,特写文章分享给大家。OpenIM是什么OpenIM不是一个独立的聊天产品,它不像telegram、S......
  • [SpringSecurity5.2.2源码分析七]:WebAsyncManagerIntegrationFilter
    1、作用• 是为了接口返回异步对象,然后执行异步任务也能通过SecurityContextHolder获取SecurityContext• 比如说返回值是WebAsyncTask的时候2、WebAsyncManagerIntegrationFilter• 源码很短就是在WebAsyncManager中注册了SecurityContextCallableProcessingInterceptorpublic......
  • 基于微信小程序的高校宿舍报修系统-计算机毕业设计源码+LW文档
    一、研究背景及意义研究背景:学生宿舍是学生学习,生活,休息,交往的重要场所,做好宿舍管理工作,构建安全校园,是校园管理的一项重要任务。目前我们传统的宿舍管理存在一些弊端,传统考勤制度,信息传达不及时,依赖人工管理,人员管理过程冗杂,无精准数据分析,宿舍安全隐患,家校无法互通等问题。在我......
  • 综合性养老服务平台的设计与实现-计算机毕业设计源码+LW文档
    一、研究的背景意义当前,随着我国老龄化程度加急,各地纷纷构建高品质的养老院来适应城市的发展,养老院品质的上升并不等于养老院服务质量的上升,这就对养老院管理提出更高的要求。在传统的养老院管理中,许多工作都是依靠人力去解决。比如老人管理、水电费管理需要通过工人进行记录,往往积......