[转帖]INTEL MLC(Memory Latency Checker)介绍
https://zhuanlan.zhihu.com/p/359823092
在定位机器性能问题的时候,有时会觉得机器莫名其妙地跑的慢,怎么也看不出来问题。CPU频率也正常,程序热点也没问题,可就是慢。这时候可以检查一下内存的访问速度,看看是不是机器的内存存在什么问题。Intel Memory Latency Checker就是实现这个目标的一大利器。
尤其现在的很多机器都使用了NUMA架构,本节点内和跨节点的内存访问的速度会有差异。另外,内存带宽也有可能成为机器的性能瓶颈。
下载地址:https://software.intel.com/content/dam/develop/external/us/en/protected/mlc_v3.9.tgz
包里有文档,或者看在线版本的:Intel Memory Latency Checker v3.9
INTEL MLC可以测量出机器的内存访问延迟和带宽,并且可以观察出它们是如何随着机器负载的增加而变化的。Intel的处理器有一些内存预取功能,可能会影响测试结果,所以在Linux下需要使用root权限来运行mlc。
运行一下mlc,输出如下:
# ./mlc
Intel(R) Memory Latency Checker - v3.9
Measuring idle latencies (in ns)...
Numa node
Numa node 0 1
0 82.2 129.6
1 131.1 81.6
这一部分内容表示任意两个Numa node之间的空闲内存访问延迟矩阵,以ns为单位。访问本node的内存延迟是低于访问跨node的内存延迟的。所以观察这个矩阵,它的数值大致关于对角线对称,node 0访问node 1与node 1访问node 0的速度大致相同,可以判断numa节点间的内存访问应该正常。这个功能也是我最常使用的,可以在命令行中使用:
./mlc --latency_matrix
以单独执行内存访问延迟矩阵。
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
这一部分内容表示不同读写比下的内存带宽。一般来说,内存的写速度是略慢于读速度的。有时候内存会出一些奇奇怪怪的问题,比如读取一切正常,但写的特别慢。这时候观察数据,随着写比例的上升,如果带宽急剧下降,那么有可能出现了这种情况。
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
这一部分内容表示显示内存访问带宽矩阵。单独判断numa节点间内存访问是否正常还可以使用 :
./mlc --bandwidth_matrix
判断方法与延迟矩阵类似,如下列异常数据,node 1访问node 0的带宽与node 0访问node 1的带宽相差较大。出现不平衡的时候一般从内存插法、内存是否故障以及numa平衡等角度进行排查。
异常数据:
Using buffer size of 100.000MB/thread for reads and an additional 100.000MB/thread for writes
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 51999.2 30097.0
1 11091.6 58205.7
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
这一部分内容展示了内存访问带宽和内存延迟的之间的关系,全部是读操作。随着机器负载的增加,内存访问带宽增加,内存响应也会相应变慢。根据这里的数据可以判断出内存在负载压力下的响应变化,可以观察是否在达到一定带宽的时候,出现了不可接受的内存响应时间。
除了这些以外,MLC还提供了其他一些功能,可以使用命令参数进行开启,功能包括:
- 测量指定node之间的访问延迟
- 测量CPU cache的访问延迟
- 测量cores/Socket的指定子集内的访问带宽
- 测量不同读写比下的带宽
- 指定随机的访问模式以替换默认的顺序模式进行测量
- 指定测试时的步幅
- 测量CPU cache到CPU cache之间的访问延迟
[转帖]INTEL MLC(Memory Latency Checker)介绍的更多相关文章
- 【转帖】互联网加密及OpenSSL介绍和简单使用
转帖:https://mritd.me/2016/07/02/%E4%BA%92%E8%81%94%E7%BD%91%E5%8A%A0%E5%AF%86%E5%8F%8AOpenSSL%E4%BB%8 ...
- 【Linux】Linux中Swap与Memory内存简单介绍
背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...
- [svc]Linux中Swap与Memory内存简单介绍
swap区域是干嘛的 cpu 内存(不常用到的进程swap区) 磁盘 当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去.但是踢到哪里去,这时候swap就出现了. 背景介绍 对于Linux来说 ...
- [转帖]Intel为何吊打AMD,先进半导体工艺带来什么?
Intel为何吊打AMD,先进半导体工艺带来什么? 2016-3-10 15:38 | 作者:Strike | 关键字:超能课堂,半导体工艺,CPU制程 分享到 按照摩尔定律的发 ...
- Linux中Swap与Memory内存简单介绍
1.背景介绍 这篇文章介绍一下Linux中swap与memory.对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的 ...
- [转帖]新一代IBM Z14主机技术介绍
新一代IBM Z14主机技术介绍 https://cloud.tencent.com/developer/news/268909 IBM最新的已经有IBM Z15 主机了.. 文章来源:企鹅号 - 云 ...
- [转帖]Intel Xeon路线图:7nm处理器要上DDR5、PCIe 5.0
Intel Xeon路线图:7nm处理器要上DDR5.PCIe 5.0 https://www.cnbeta.com/articles/tech/849631.htm 在月初的投资者会议上,Intel ...
- Linux中Swap与Memory内存简单介绍 (转)
https://blog.csdn.net/zwan0518/article/details/12059213 一.背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇 ...
- [转帖]Windows Server 2016各种版本介绍
Windows Server 2016各种版本介绍 http://www.5sharing.com/js/zx/872.html windows server的版本 时间:2018-10-06 10: ...
- mysql 开发基础系列11 存储引擎memory和merge介绍
一. memory存储引擎 memoery存储引擎是在内存中来创建表,每个memory表只实际对应一个磁盘文件格式是.frm. 该引擎的表访问非常得快,因为数据是放在内存中,且默认是hash索引, ...
随机推荐
- 华为云GaussDB城市沙龙活动走进安徽,助力金融行业数字化转型
本文分享自华为云社区<华为云GaussDB城市沙龙活动走进安徽,助力金融行业数字化转型>,作者: GaussDB 数据库 . 近日,华为云GaussDB数据库城市沙龙·安徽站圈层活动顺利举 ...
- 5步教你将MRS数据导入DWS
摘要:GaussDB(DWS)支持在相同网络中,配置一个GaussDB(DWS)集群连接到一个MRS集群,然后将数据从HDFS中的文件读取到GaussDB(DWS). MapReduce服务(MapR ...
- 中秋节,华为云AI送上超级大月亮制作教程,体验赢开发者键鼠套装
摘要:一键"Run in ModelArts",无需考虑计算资源.环境的搭建,简单运行代码,即可拥有你的超级大月亮,打造专属于你的梦幻中秋月夜. 本文分享自华为云社区<中秋节 ...
- Hive查看,删除分区
查看所有分区 show partitions 表名; 删除一般会有两种方案 1.直接删除hdfs文件 亲测删除hdfs路径后 查看分区还是能看到此分区 可能会引起其他问题 此方法不建议 2. 使用删除 ...
- 从 Uber 数据泄露事件我们可以学到什么?
Uber 数据泄露始于一名黑客从暗网市场购买属于一名 Uber 员工的被盗凭证.最初尝试使用这些凭据连接到 Uber 的网络失败,因为该帐户受 MFA 保护.为了克服这一安全障碍,黑客通过 What' ...
- Axure Axhub Charts 数据编辑、显示
Axhub Charts图表元件库: https://www.axureshop.com/a/100749.html
- 发布会回放|Gradio 4.0 正式发布!
Gradio 的目标是使机器学习模型的演示更容易定制和访问,以满足不同用户的需求.在 4.0 正式版的发布活动上,Hugging Face 的 Gradio 团队介绍了自己为了提高机器学习模型的可访问 ...
- 【短道速滑二】古老的基于亮度平均值的自动Gamma校正算法。
在github上搜索代码Auto Gamma Correction,找到一个比较古老的代码,详见:https://github.com/PedramBabakhani/Automatic-Gamma- ...
- 成为一个合格程序员所必备的三种常见LeetCode排序算法
排序算法是一种通过特定的算法因式将一组或多组数据按照既定模式进行重新排序的方法.通过排序,我们可以得到一个新的序列,该序列遵循一定的规则并展现出一定的规律.经过排序处理后的数据可以更方便地进行筛选和计 ...
- 使用BAPI_NETWORK_COMP_*实现生产订单组件的增删改查
1.文档说明 对于生产订单组件的增删改有多种办法,比较常用的有使用内部函数CO_XT_COMPONENT_*,有改造BAPI_ALM_ORDER_MAINTAIN来实现,各有千秋. 本文档介绍,通过P ...