MLC——内存延迟及带宽测试工具_mlc内存测试-程序员宅基地

技术标签: 测试工具  云测试  

why MLC

影响程序性能的两个重要因素:

①应用程序从处理器缓存和从内存子系统获取数据所消耗的时间,其中存在各种延迟

带宽b/w(bandwidth 非Bilibili World)

mlc正是做这个的

测试内容

Node访问速度

NUMA(Non-Uniform Memory Access 非一致性内存访问)构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrated Memory Controller),解决了“每个处理器共享相同的地址空间问题”,避免总线带宽,内存冲突问题。

(补充:core=物理cpu,独立的物理执行单元;thread=逻辑cpu,线程

socket = node 相当于主板上的cpu插槽。node内部,不同核心间使用IMC Bus通信;不同node间通过QPI(Quick Path Interconnect)进行通信

同城速达的速度肯定与国际邮件不同,所以QPI(remote)延迟明显高于IMC Bus(local

测试样例:

查询内存访问延迟 指令

./mlc --latency_matrix

结果

        Numa node
Numa node        0       1  
       0      82.2   129.6  
       1     131.1    81.6

表示node之间/内部的空闲内存访问延迟矩阵,以ns为单位

带宽

带宽反映了单位时间的传输速率马路越宽,就不会堵车了。带宽反映了单位时间的传输速率

Measuring Peak Injection Memory Bandwidths for the system
Bandwidths are in MB/sec (1 MB/sec = 1,000,000 Bytes/sec)
Using all the threads from each core if Hyper-threading is enabled
Using traffic with the following read-write ratios
ALL Reads        :  69143.9 
3:1 Reads-Writes :  61908.4 
2:1 Reads-Writes :  60040.5 
1:1 Reads-Writes :  54517.6 
Stream-triad like:  57473.4 

r:w 表示不同读写比下的内存带宽

一般情况下,内存的写速度慢于读取速度(Talk is easy, show me the CODE)

所以当读写比下降时,带宽会下降(路窄了,塞车了)

问题分析:如果带宽急剧下降,可能是写入程序增多;或者是写入程序出问题,速度太慢了

测试样例

查询存访问带宽 指令(单独判断numa节点间内存访问是否正常还可以使用 )

./mlc --bandwidth_matrix

结果

Measuring Memory Bandwidths between nodes within system 
Bandwidths are in MB/sec (1 MB/sec = 1,000,000 Bytes/sec)
Using all the threads from each core if Hyper-threading is enabled
Using Read-only traffic type
        Numa node
Numa node        0       1  
       0    35216.6 32537.9 
       1    31875.1 35048.5 

问题分析:如果副对角线数值相差过大,表明两个node相互访问的带宽差距较大

解决方法:出现不平衡的时候一般从内存插法、内存是否故障以及numa平衡等角度进行排查

内存访问带宽和内存延迟的关系(读操作)

Measuring Loaded Latencies for the system
Using all the threads from each core if Hyper-threading is enabled
Using Read-only traffic type
Inject  Latency Bandwidth
Delay   (ns)    MB/sec
==========================
 00000  523.74    69057.4
 00002  589.55    68668.7
 00008  686.99    68571.4
 00015  549.87    68873.6
 00050  575.48    68673.0
 00100  524.74    68877.5
 00200  197.61    64225.8
 00300  131.60    47141.0
 00400  110.39    36803.0
 00500  117.32    30135.2
 00700  100.90    22179.1
 01000  100.93    15762.8
 01300   91.74    12351.6
 01700   98.61     9475.2
 02500   86.66     6927.8
 03500   88.13     5132.6
 05000   87.68     3818.6
 09000   85.36     2473.5
 20000   84.83     1538.7

可以观察内存在负载压力下的响应变化,以及是否在到达一定带宽时,出现不可接受的内存响应时间

测量CPU cache到CPU cache之间的访问延迟

Measuring cache-to-cache transfer latency (in ns)...
Local Socket L2->L2 HIT  latency    38.6
Local Socket L2->L2 HITM latency    43.6
Remote Socket L2->L2 HITM latency (data address homed in writer socket)
        Reader Socket
Writer Socket         0         1
            0         -     133.4
            1     133.7         -
Remote Socket L2->L2 HITM latency (data address homed in reader socket)
        Reader Socket
Writer Socket         0         1
            0         -     133.5
            1     133.7         -

峰值带宽

指令

mlc --peak_bandwidth

结果

Using buffer size of 100.000MB/thread for reads and an additional 100.000MB/thread for writes

Measuring Peak Memory Bandwidths for the system
Bandwidths are in MB/sec (1 MB/sec = 1,000,000 Bytes/sec)
Using all the threads from each core if Hyper-threading is enabled
Using traffic with the following read-write ratios
ALL Reads        :    50035.2
3:1 Reads-Writes :    48119.3
2:1 Reads-Writes :    47434.3
1:1 Reads-Writes :    48325.5
Stream-triad like:    44029.0

空闲内存延迟

指令

mlc --idle_latency

结果

Using buffer size of 200.000MB
Each iteration took 260.5 core clocks (    113.3    ns)

有负载内存延时

指令

mlc --loaded_latency

结果

Using buffer size of 100.000MB/thread for reads and an additional 100.000MB/thread for writes

Measuring Loaded Latencies for the system
Using all the threads from each core if Hyper-threading is enabled
Using Read-only traffic type
Inject    Latency    Bandwidth
Delay    (ns)    MB/sec
==========================
 00000    217.32      49703.4
 00002    258.98      49482.4
 00008    217.48      49908.1
 00015    220.12      49973.7
 00050    206.33      49185.7
 00100    174.02      43811.8
 00200    141.63      27651.1
 00300    130.65      19614.6
 00400    126.05      15217.0
 00500    122.70      12506.0
 00700    121.46       9253.0
 01000    120.55       6690.6
 01300    118.75       5314.9
 01700    120.18       4148.7
 02500    119.53       3055.7
 03500    119.60       2349.4
 05000    116.60       1816.9
 09000    116.17       1257.8
 20000    116.87        867.6

其余操作(未完待续

  • 测量指定node之间的访问延迟

  • 测量CPU cache的访问延迟

  • 测量cores/Socket的指定子集内的访问带宽

  • 测量不同读写比下的带宽

  • 指定随机的访问模式以替换默认的顺序模式进行测量

  • 指定测试时的步幅

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_53169429/article/details/121296269

智能推荐

240320俄罗斯方块java,JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_2-程序员宅基地

文章浏览阅读202次。packagecode;//importjava.awt.*;//importjava.awt.Canvas;//importjava.awt.event.*;//importjavax.swing.*;importjava.util.Random;importjavax.microedition.lcdui.*;//写界面所需要的包/***//***俄罗斯方块*高雷*2007年1..._240×320java游戏

在线电影院售票平台(源码+开题报告)-程序员宅基地

文章浏览阅读779次,点赞14次,收藏19次。然后,实现系统的数据管理和服务功能,包括用户的注册与登录、电影的分类与展示、电影信息的查询与推荐、座位的选择与预订、在线支付与电子票生成等。此外,随着在线视频平台的兴起,越来越多的人选择在线观看电影,这对传统电影院产生了巨大的冲击。研究意义: 开发在线电影院售票平台对于提升用户的观影体验、优化电影院的运营效率、促进电影产业的发展具有重要的意义。该系统旨在通过技术手段解决传统电影院售票中的问题,提供一个集成化的电影信息展示、座位选择、在线支付和用户评价平台,同时也为电影院和电影制作方提供有效的工具。

程序员熬夜写代码,用C/C++打造一个安全的即时聊天系统!_基于c++的即时聊天系统设计-程序员宅基地

文章浏览阅读509次。保护我们剩下的人的通话信息安全,使用TOX可以让你在和家人,朋友,爱人交流时保护你的隐私不受政府无孔不入的的偷窥.关于TOX:其他牛逼的软件因为一些细化服务问你要钱的时候, TOX分文不取 . 你用了TOX, 想干嘛就干嘛.网友评论:项目源码展示:源码测试效果:最后,如果你学C/C++编程有什么不懂的,可以来问问我哦,或许我能够..._基于c++的即时聊天系统设计

linux Java服务swap分区被占用内存泄露问题故障及解决方法_linux swap占用很高-程序员宅基地

文章浏览阅读584次。鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)当Java服务在Linux系统中运行时,可能会出现swap分区被占用的内存泄露问题,导致系统性能下降或者崩溃。下面是该问题的故障及解决方法、底层结构、架构图、工作原理、使用场景详解和实际应用方式、原理详细描述、相关命令使用示例以及文献材料链接。_linux swap占用很高

word中利用宏替换标点标点全角与半角-程序员宅基地

文章浏览阅读662次。Alt+F11,然后插入-模块:复制下面代码到编辑窗口:Sub 半角标点符号转换为全角标点符号()'中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragraph, ChineseInterpunction() As Variant, EnglishInterpunction() As Variant Dim MyRange..._替换半角宏

Android WebView使用总结_android webview真正加载完成-程序员宅基地

文章浏览阅读2.8k次。#.简介: WebView是Android提供的用来展示展示web页面的View,内部使用webkit浏览器引擎(一个轻量级的浏览器引擎),除了展示Web页面外,还可与Web页面内的JS脚本交互调用。WebView内部的WebSetting对象负责管理WebView的参数配置; WebViewClient负责处理WebView的各种请求和通知事件,在对应事件发生时会执行WebViewClient的对应回调; ChromeWebviewClient辅助Webview处理与JS一些交互......_android webview真正加载完成

随便推点

bitcoin 调试环境搭建-程序员宅基地

文章浏览阅读1.6k次。_bitcoin 调试环境搭建

曲线生成 | 图解B样条曲线生成原理(基本概念与节点生成算法)-程序员宅基地

文章浏览阅读4.3k次,点赞93次,收藏94次。为了解决贝塞尔曲线无法局部修正、控制性减弱、曲线次数过高、不易拼接的缺陷,引入B样条曲线(B-Spline)。本文介绍B样条曲线的基本概念:节点向量、支撑性、次数阶数、加权性质、节点生成算法等,为后续曲线计算打下基础。_样条曲线生成

CDH安装宝典之ClouderaManager_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line -程序员宅基地

文章浏览阅读902次。配置本地repo库下载我的阿里云盘文件文件放置#创建目录mkdir -p /opt/cloudera/parcel-repo/mkdir -p /opt/cloudera/cm/yum install createrepoCDH 6.2.0 的三个文件放到/opt/cloudera/parcel-repo/中,并且注意把sha256后缀的文件名修改为sha#执行createrepo命令生成rpm元数据 最终/opt/cloudera/parcel-repo/会多一个repodata目录_/opt/cloudera/cm-agent/service/mgmt/mgmt.sh: line 76: /usr/java/jdk1.8.0_181

uni.canvasToTempFilePath在app正常,微信小程序报错: fail canvas is empty-程序员宅基地

文章浏览阅读943次,点赞2次,收藏2次。uni.canvasToTempFilePath_uni.canvastotempfilepath

SDRAM笔记_sdram 干扰-程序员宅基地

文章浏览阅读3.1k次。SRAM :静态RAM,不用刷新,速度可以非常快,像CPU内部的cache,都是静态RAM,缺点是一个内存单元需要的晶体管数量多,因而价格昂贵,容量不大。DRAM:动态RAM,需要刷新,容量大。SDRAM:同步动态RAM,需要刷新,速度较快,容量大。DDR SDRAM:双通道同步动态RAM,需要刷新,速度快,容量大。........................_sdram 干扰

Excel转SQL语句_excel数据怎么生成sql语句-程序员宅基地

文章浏览阅读7.3k次。假设表格有A、B、C、D四列数据,希望导入到你的数据库中表格table,对应的字段分别是col1、col2、col3、col4。_excel数据怎么生成sql语句

推荐文章

热门文章

相关标签