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)介绍的更多相关文章

  1. 【转帖】互联网加密及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 ...

  2. 【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  3. [svc]Linux中Swap与Memory内存简单介绍

    swap区域是干嘛的 cpu 内存(不常用到的进程swap区) 磁盘 当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去.但是踢到哪里去,这时候swap就出现了. 背景介绍 对于Linux来说 ...

  4. [转帖]Intel为何吊打AMD,先进半导体工艺带来什么?

    Intel为何吊打AMD,先进半导体工艺带来什么? 2016-3-10 15:38  |  作者:Strike   |  关键字:超能课堂,半导体工艺,CPU制程 分享到       按照摩尔定律的发 ...

  5. Linux中Swap与Memory内存简单介绍

    1.背景介绍   这篇文章介绍一下Linux中swap与memory.对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的 ...

  6. [转帖]新一代IBM Z14主机技术介绍

    新一代IBM Z14主机技术介绍 https://cloud.tencent.com/developer/news/268909 IBM最新的已经有IBM Z15 主机了.. 文章来源:企鹅号 - 云 ...

  7. [转帖]Intel Xeon路线图:7nm处理器要上DDR5、PCIe 5.0

    Intel Xeon路线图:7nm处理器要上DDR5.PCIe 5.0 https://www.cnbeta.com/articles/tech/849631.htm 在月初的投资者会议上,Intel ...

  8. Linux中Swap与Memory内存简单介绍 (转)

    https://blog.csdn.net/zwan0518/article/details/12059213 一.背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇 ...

  9. [转帖]Windows Server 2016各种版本介绍

    Windows Server 2016各种版本介绍 http://www.5sharing.com/js/zx/872.html windows server的版本 时间:2018-10-06 10: ...

  10. mysql 开发基础系列11 存储引擎memory和merge介绍

    一. memory存储引擎 memoery存储引擎是在内存中来创建表,每个memory表只实际对应一个磁盘文件格式是.frm.   该引擎的表访问非常得快,因为数据是放在内存中,且默认是hash索引, ...

随机推荐

  1. 拥抱Serverless释放生产力,探索华为云Serverless车联网最佳实践

    华为云Serverless车联网场景解决方案,以FunctionGraph为核心的Serverless化组合方案,使用FunctionGraph.OBS.DIS等技术,可以实现架构的灵活扩展,在出行高 ...

  2. 网络性能总不好?网络调优专家AOE帮你来“看看”

    摘要:为提升网络性能.降低人工调优成本,CANN推出了自动化网络调优工具AOE,通过子图调优.算子调优与梯度调优的功能,让网络可以在AI硬件上获得最佳性能. 本文分享自华为云社区<网络性能总不好 ...

  3. KubeEdge@MEC:Kubernetes容器生态与5G的结合

    摘要:边缘计算技术快速发展,5G MEC边云协同成为最新的发展趋势. 前言 边缘计算技术快速发展,5G MEC进入商业部署快车道,边云协同成为MEC的普遍诉求,KubeEdge社区洞悉这一趋势,按照C ...

  4. 毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?

    摘要:了解大厂面试流程.要求以及技巧,做好充分准备,赢在职场起跑线. 本文分享自华为云社区<毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?>,作者:华为云社区精选. 同学们 ...

  5. 云图说|初识数据库和应用迁移UGO

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:数据库和应用迁移 ...

  6. JS遍历循环方法性能对比:for/while/for in/for of/map/foreach/every

    这周codeReview例会,又遇到map与foreach到底谁问题.单独图方便,我会选择用map一个函数搞定一切.但是从语义的角度来讲,如果只是单纯遍历,还是推荐选择foreach.其实formap ...

  7. 一文读懂 DevSecOps:工作原理、优势和实现

    由于 DevOps 方法的广泛采用以及由此产生的快速产品交付和部署,许多部门已采用更敏捷的方法来开发生命周期.在满足市场速度和规模要求的同时,设计安全的软件一直是现代 IT 公司共同面临的问题.结果, ...

  8. PPT 模仿力,看到好的设计随意为我所用

    PPT 模仿力,看到好的设计随意为我所用 网上搜索一些作品 Q1: 这一页的设计亮点在哪? Q2: 我能不能用在PPT里面? Q3: 我能不能用PPT模仿出来? 举例 思源黑体

  9. SpringBoot WebService 及 注意项

    SpringBoot WebService 源代码:https://gitee.com/VipSoft/VipWebService SpringBoot 版本 <version>2.3.0 ...

  10. 未来,让我们一起想象 — “Imagine” 阿里云视频云全景创新峰会

    视频云赛道是一条极具想象力的赛道,可以变革商业与社会,成为大视频时代底座. 视频云技术是一项极具创新力的技术,可以突破时间与空间,创造一个全新的世界. 7 月 10 日,"Imagine&q ...