0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPU共享资源隔离的利器MPAM特性介绍

Linux阅码场 来源:openEuler 作者:汪少博 2021-04-20 11:23 次阅读

MPAM(Memory System Resource Partitioning and Monitoring)[1]特性用于解决混部业务时由于共享资源竞争带来的性能下降问题,MPAM 作为继 x86 RDT[2]技术后的另一个针对 CPU 访存系统资源隔离的全新特性倍受关注,相比其他架构的类似特性,Arm64 架构下的 MPAM 特性采用全新的确定性流控方式,控制手段更加丰富,控制对象覆盖更广,目前在鲲鹏服务器上的应用取得了良好的结果。openEuler kernel 已于 openEuler 21.03 创新版本支持 MPAM,成为首个同时支持 x86 RDT 和 MPAM 的开源平台;MPAM 项目组联合下游各大厂商及研究机构在 POC 场景上做了验证,使能 MPAM 并在云场景下进行了多个测试点的适配和测试,解决了不同虚拟机因为 Cache 和访存干扰带来的性能干扰问题,目前已具备相当的成熟度;为支撑下游厂商使用 MPAM,构建完整端到端基础软件栈,项目组后续还会在 openEuler 推出一系列配套调测工具和部署软件。

特性介绍

如何处理诸如 L3 Cache 等内存系统资源竞争的问题一直是业界研究的焦点,例如 Kpart[3],DICER[4],dcat[5],这些研究为工业界应用共享资源隔离技术打下了基础。MPAM 是 Arm Architecture v8.4 的 Extension 特性,其目的是用于解决服务器系统中,混部不同类型业务时,由于 CPU 访存过程中共享资源的竞争带来的某些关键应用性能下降或者系统整体性能下降的问题。

e81ae754-a100-11eb-8b86-12bb97331649.jpg

MPAM 系统框架参考图 1,相比其他架构的类似特性,MPAM 设计上参考了更多前沿技术,MPAM 最显著的特征是:

提供更多控制手段,针对 Cache 资源以及访存通道,增加了对访存流的优先级控制和完全隔离控制;

按照 Cache way 为粒度,以 bitmap 的形式分配 Cache way,不要求所分配的 Cache way 在 bitmap 中连续;

MPAM 支持在虚拟机内部划分共享资源;

MPAM 增加了对 SMMU 的支持,可以限制 IO 设备对 Cache 和相关内存系统资源的使用;

从体系结构角度优化·最佳配置,在对访存流的限制上,MPAM 流控方式可精确控制访存流百分比,可以确定性地保障访存敏感型业务的性能。

e83288be-a100-11eb-8b86-12bb97331649.jpg

图 2 MPAM 和 RDT L3 Cache 控制方式异同 如图 2,MPAM 规定配置 Cache 主要有两种方式,一种是通过优先级配置,这种情况下,优先级高的业务流将优先使用 Cache 的使用权;第二种是以 Cache way 为粒度,按照 bitmap 形式隔离不同业务对 Cache 的使用,不要求 Cache way 分配连续,这也是目前鲲鹏 920 采取的控制方式。x86 RDT 目前仅支持第二种,且大部分型号要求 Cache way 分配连续[6]。图 3 为鲲鹏 920 和常用 x86 型号 RDT 特性对流量控制的比较,对比其他架构的类似特性,MPAM 在流量控制上的最大特点是参考当前 DDR 通道的传输能力,从而对业务流限制一个明确的上下限,若当前受控流量超过该 DDR 通道设定百分比对应的上限流量时,则限制到该百分比以下,同时在小于下限流量时享有优先访问权。对比 x86 RDT,其限制流量的动作发生在 L2 和 L3 之间,使用给受控流量主动加时延的方式降低目标流量[6]。

e84aa1a6-a100-11eb-8b86-12bb97331649.jpg

图 3 鲲鹏 920 MPAM 与 x86 RDT 流量限制上的异同 除此之外,MPAM 协议规定了额外两种流量控制方式,如图 4 所示,一种是采用 bitmap 的方式完全隔离开不同的业务流,被隔离的业务流将会按照 bitmap 划分的时间片分区间轮询使用访存通道;第二种,在第一种方式的基础上,还可使用优先级方式调整业务流的优先级,在发生访存拥挤时,同一时刻高优先级业务流将优先享有该 DDR 通道。

e88eb378-a100-11eb-8b86-12bb97331649.jpg

图 4 MPAM 带宽的完全隔离和优先级控制方式 MPAM 可以在更多维度灵活配置业务对 Cache 和带宽的使用,适应更多的应用场景,易于获得更大的优化空间。

特性使能

硬件支持:鲲鹏 920[7]

BIOS 支持:Taishan 170 及更新版本

内核支持:openEuler 21.03 或 openEuler 20.03 LTS SP1[8]

用户手册:https://gitee.com/openeuler/openRSO/blob/master/docs/manual/arm_mpam_resctrlfs_user_interface.md

鲲鹏 920 已支持 MPAM 特性的部分功能,如图 5 所示:

e8c0ca8e-a100-11eb-8b86-12bb97331649.jpg

图 5 鲲鹏 920 MPAM 所使能功能

cpbm: Cache Portion Bit Map,按照位图控制分配特定容量和特定位置的 L3 Cache,其中每个 bit 代表一条 Cache way;

max: Memory Bandwidth Maximum Partition,按照能够通过受控 DDR 通道最大带宽的百分比进行访存流量限制;

min: Memory Bandwidth Minimum Partition,提供最小带宽百分比表示允许通过受控 DDR 通道的容量,小于最小百分比将享受较高优先级的通过权;

hdl: Memory Bandwidth Hard Limit,开启会使得分区的带宽使用率降至最大带宽控制的范围之内,参考 Max,否则,只有在通道拥挤时才会做适当限制;

Monitoring: Cache/Memory Bandwidth monitoring,对 L3 Cache 占用大小和访存带宽大小进行实时监控。

性能测试

硬件平台:鲲鹏 920 @CORE 96 2.6GHZ

DDR:Configured Memory Speed: 2666 MT/s

OS:openEuler 21.03

BIOS:Taishan 170

基础功能指标

e8cd24e6-a100-11eb-8b86-12bb97331649.jpg

图 6 实验一 MPAM 单 workload L3 Cache 分配和监控实验一

workload: numactl –m 0 bw_mem –P 8 –N 4 128M rd如图 6 所示,启动一个 workload,workload 也可自行选择,对 L3 Cache 按 cpbm 分配,通过 MPAM 的 monitor 查看 workload 占用的 L3 Cache 容量变化,可见 workload 真实占用的 Cache 容量和理论大小基本一致。

e8d9a342-a100-11eb-8b86-12bb97331649.jpg

图 7 实验二 MPAM 双 workload Cache 隔离实验二

workload1: numactl –m 0 stress-ng –cache 10 --aggressive workload2: numactl –m 0 bw_mem –P 8 –N 4 128M rd如图 7 所示,启动两个 workload,使用 cpbm 方式对两个 workload 做 Cache 隔离测试,通过 MPAM 的 monitor 查看 workload 占用的 L3 Cache 容量变化,该测试分为两部分,前四组为 Cache way 完全隔离测试,后两组为 overlap 测试,可见 Cache 隔离效果与理论值基本一致,后两组实际效果与 workload 对 Cache 的占用强度有关。

e8e5fea8-a100-11eb-8b86-12bb97331649.jpg

图 8 实验三带宽最大百分比调控实验三

workload: numactl –m 0 bw_mem –P 8 –N 4 128M rd如图 8 所示,在大流量下和中小流量下(当前 DDR 通道最大带宽约为 75MB/S)对带宽做最大百分比调控,通过 MPAM monitor 查看 workload 对应流量大小变化,可见流量控制效果基本与预期相符,鲲鹏 920 上 MPAM 设定的带宽控制有效百分比约在 20%-80%。

spec CPU 2006 测试

选用 spec CPU 2006 omnet 测试套和 spec CPU 2006 milc,分析 Cache 干扰:cpu+内存型业务混合部署场景下,通过 CPBM 隔离 L3 Cache 可以削弱不同业务对 Cache 的竞争,提升性能,如图 9 所示,非隔离时两种业务之的 Cache 实际占用大小波动非常大,这是造成性能下降的主要原因。

e9169932-a100-11eb-8b86-12bb97331649.jpg

图 9 MPAM spec 2006 L3 Cache 隔离测试[9] 通过对两组业务的 Cache 进行完全隔离,可以看到隔离后的业务 Cache 实际占用大小波动明显减少,对比不做隔离的情况,omnet 业务最终获得了 10+%的性能提升,milc 业务性能也略有提升。

DPDK 隔离带宽干扰

裸机场景下,使用 pktgen+DPDK 进行试验,并对 DPDK 施加带宽压力,使用 MPAM 对比隔离前后 DPDK 性能变化:

solo加压加压+MPAM限制带宽20%

每秒平均指令数2E+09 + 5E+071.7E+092E+09 + 4E+07

指令数下降比NA22%0.7%

dpdk性能下降NA≈21%≈0

如表 1 所示,可知加压后导致性能退化 22%左右,加压参数参考[9],使用 MPAM 限制压力程序 20%带宽,DPDK 性能恢复正常。

e926fa16-a100-11eb-8b86-12bb97331649.jpg

图 10 RDT 和 MPAM DPDK 场景测试[10][11]

内存大页+Cache 隔离

如图 11 所示,网络转发业务选用 2G 内存大页,左图不同线程之间存在稳定的 Cache 干扰,右图表示性能下降比例,通过隔离 Cache 可消除该干扰,保证关键业务的性能。

e93291c8-a100-11eb-8b86-12bb97331649.jpg

图 11 内存大页和 MPAM Cache 隔离测试网络转发业务[9]

开放生态

资源隔离是 OS 中非常重要的一个组成部分,针对 cpu 核访存侧的隔离技术又是资源隔离中的一个重要组成部分,如何规划好未来对内存系统资源的高效使用,对保障业务在更加复杂的平台上稳定运转至关重要。为减少跨平台成本,丰富调试手段,提升业务部署效率,我们希望归一化不同架构的输出接口,开放应用端到端统一部署框架,针对不同场景定制化通用化的资源隔离调度引擎,构建一整套应用资源管理基础软件栈。

e93be6ec-a100-11eb-8b86-12bb97331649.jpg

图 12 共享资源调控基础软件框架我们计划在 openEuler 开源一套共享资源调控基础软件框架,用于跨平台统一管理业务使用 Cache 及相关内存系统资源,通过引入丰富、实用的调试工具帮助用户排查相关性能问题,并增加通用资源调度引擎处理针对不同场景下的资源动态调控问题,按照部署业务的层级整合和编排共享资源的使用,方便用户部署业务和整合系统资源分配。针对 MPAM 技术,目前已和通信行业、电商、云服务商等合作领域企业进行沟通合作,并已在部分场景上取得成效,欢迎业界专家建言献策,共同打造实用,稳固,开放的底层资源隔离基础软件底座。

原文标题:openEuler 21.03 特性解读 | CPU 共享资源隔离的利器 - MPAM

文章出处:【微信公众号:Linuxer】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206547

原文标题:openEuler 21.03 特性解读 | CPU 共享资源隔离的利器 - MPAM

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AMD Radeon RX 7000M系列显卡特性分析

    AMD RDNA 3架构 – 新的计算单元在渲染、AI和光线追踪之间共享资源,以更有效地利用每个晶体管,实现快速又高效的性能。
    发表于 04-15 11:31 84次阅读
    AMD Radeon RX 7000M系列显卡<b class='flag-5'>特性</b>分析

    如何在Semaphore(信号量)和Mutex(互斥)之间做选择?

    在单CPU系统中,处理器是一个共享资源。在多个进程之间共享处理器时,处理器的使用由调度程序控制,不存在竞争问题。
    的头像 发表于 03-05 11:35 587次阅读
    如何在Semaphore(信号量)和Mutex(互斥)之间做选择?

    请问一下docker是怎么实现cpu隔离的?

    Docker 使用 cgroups(控制组)来实现 CPU 隔离
    的头像 发表于 01-15 10:06 223次阅读

    浅析Redis 分布式锁解决方案

    Redis 分布式锁解决方案是一种基于Redis实现的分布式锁机制,可以确保在分布式环境中对共享资源的访问进行同步控制,避免出现竞态条件和数据不一致的问题。在分布式系统中,多个服务之间需要相互协调来访问共享资源
    的头像 发表于 12-04 14:00 225次阅读

    EC SRAM映射到CPU Memory空间的共享内存设计

    ShareMemory,顾名思义就是共享内存。这个概念在很多计算机系统中都存在,本文特指 EC SRAM 映射到 CPU Memory 空间的共享内存设计。
    的头像 发表于 11-18 15:11 685次阅读
    EC SRAM映射到<b class='flag-5'>CPU</b> Memory空间的<b class='flag-5'>共享</b>内存设计

    redis分布式锁如何实现

    的情况,分布式锁的作用就是确保在同一时间只有一个客户端可以访问共享资源,从而保证数据的一致性和正确性。 下面将详细介绍Redis分布式锁的实现原理和常见的实现方式。 一、实现原理: Redis的SETNX命令:Redis中提供了SETNX命令,用于设置一个键
    的头像 发表于 11-16 11:29 299次阅读

    9个超使用的cmd命令你知道多少?

    Net share 作用:查看共享资源 操作方法:在cmd界面中输入“net share”查看所有已共享资源,然后输入“net share 要删除的共享文件夹 /delete”就可以了。
    的头像 发表于 11-14 09:29 339次阅读
    9个超使用的cmd命令你知道多少?

    用于内存系统资源分区和监控2.0平台的ACPI设计文档

    性能的系统内存资源MPAM表描述了系统中MSC的属性。该表还描述了拓扑MSC和系统中的资源的布置。拓扑结构以系统内的资源以及MSC与其所管理的
    发表于 08-09 06:38

    了解体系结构-内存系统资源分区和监视(MPAM)概述

    本指南介绍了内存系统资源分区和监视(MPAM)Arm体系结构的可选添加,以支持内存系统分区。MPAM记录在内存系统资源分区和监视(
    发表于 08-09 06:08

    ARMv8-A同步原语介绍

    可以通过实现锁函数来保护共享资源,该锁函数允许线程请求资源的所有权。然后,软件可以签订合同,只访问 在声明锁定后共享资源。简单的锁定功能可以扩展到支持多个锁,每个共享资源一个锁。解锁功
    发表于 08-02 13:11

    I2C子系统优先级翻转与优先级继承

    运行。 某一时刻任务 L 想要访问共享资源,在此之前它必须先获得对应该资源的信号量。 任务 L 获得信号量并开始使用该共享资源。 由于任务 H 优先级高,它等待的事件发生后便剥夺了任务 L 的
    的头像 发表于 07-22 15:08 437次阅读
    I2C子系统优先级翻转与优先级继承

    Linux内核处理并发和竞争的几种方法

    Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源
    发表于 07-18 10:01 406次阅读
    Linux内核处理并发和竞争的几种方法

    FreeRTOS信号量介绍

    1、信号量用于控制对共享资源的访问 举一个很常见的例子,某个停车场有100个停车位,这 100 个停车位大家都可以用,对于大家来说这 100 个停车位就是共享资源。假设现在这个停车场正常运行,你要把
    的头像 发表于 07-06 17:09 401次阅读

    Linux内核锁的那点事

    在Linux设备驱动中,我们必须要解决的一个问题是:多个进程对共享资源的并发访问,并发的访问会导致竞态。
    发表于 07-04 11:14 169次阅读
    Linux内核锁的那点事

    DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小

    : 3.1.1 提供动态共享包模板,轻松创建动态共享包HSP HSP是可以用来共享资源和代码的动态共享包,为了方便开发者使用,DevEco Studio提供Shared Library
    发表于 05-19 11:25