[转帖]INTEL MLC(Memory Latency Checker)介绍

intel,mlc,memory,latency,checker,介绍 · 浏览次数 : 0

小编点评

**内存访问速度检查工具:Intel® Memory Latency Checker v3.9** **功能:** * 测量机器内存访问速度矩阵。 * 观察内存访问延迟和带宽随机器负载变化。 * 提供一些命令参数,以控制测试模式。 **使用方法:** 1. 下载并安装工具:`sudo wget -O mlc_v3.9.tgz software.intel.com/content/dam/develop/external/us/en/protected/mlc_v3.9.tgz` 2. 执行工具:`./mlc --latency_matrix` 3. 按回车键运行,工具将输出内存访问延迟和带宽矩阵。 **输出格式:** * `# ./mlc Intel(R) Memory Latency Checker - v3.9Measuring idle latencies (in ns)...\t\tNuma nodeNuma node\t 0\t 1\t 0\t 82.2\t 129.6\t 1\t 131.1\t 81.6 **分析指标:** * **内存访问延迟:**指从内存中访问数据的延迟时间。 * **内存带宽:**指从内存中读取或写入数据的速率。 **异常数据:** * 如果内存访问带宽矩阵出现不平衡,可能存在负载压力或内存故障。 **注意:** * 此工具需要使用 root 权限。 * 为了获得更准确的结果,可以多次运行工具并记录平均值。 * 使用 `--bandwidth_matrix` 参数可以查看内存访问带宽和内存延迟之间的关系。

正文

https://zhuanlan.zhihu.com/p/359823092

 

在定位机器性能问题的时候,有时会觉得机器莫名其妙地跑的慢,怎么也看不出来问题。CPU频率也正常,程序热点也没问题,可就是慢。这时候可以检查一下内存的访问速度,看看是不是机器的内存存在什么问题。Intel Memory Latency Checker就是实现这个目标的一大利器。

尤其现在的很多机器都使用了NUMA架构,本节点内和跨节点的内存访问的速度会有差异。另外,内存带宽也有可能成为机器的性能瓶颈。

下载地址:

包里有文档,或者看在线版本的: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)介绍相似的内容:

[转帖]INTEL MLC(Memory Latency Checker)介绍

https://zhuanlan.zhihu.com/p/359823092 在定位机器性能问题的时候,有时会觉得机器莫名其妙地跑的慢,怎么也看不出来问题。CPU频率也正常,程序热点也没问题,可就是慢。这时候可以检查一下内存的访问速度,看看是不是机器的内存存在什么问题。Intel Memory La

[转帖]Intel至强可扩展处理器 Skylake-SP(Purley 最新一代至强)购买指南

前言 Intel Purley平台,Skylake-SP,至强可扩展处理器(铂金、黄金、白银、青铜)发售了,共58颗处理器。 这些处理器里哪些值得购买?哪些是骗小白的?它们各自的定位如何?本文将帮助你解决问题。 本文将会按照使用场景将这58颗处理器分类,并通过不同处理器在各自应用场景的性价比剔除一些

[转帖]Intel/英特尔、Mellanox/迈络斯 infiniband交换机型号对比及参数描述

Intel/英特尔、Mellanox/迈络斯 infiniband交换机型号对比及参数描述http://qlogic.blog.bokee.net/bloggermodule/blog_viewblog.do?id=17662812 字体大小:大 | 中 | 小2014-05-09 12:14 阅读

[转帖]Intel正式发布第三代至强可扩展处理器,单芯最多可达40核

https://baijiahao.baidu.com/s?id=1673640229820868010&wfr=spider&for=pc 今天晚上Intel正式发布了第三代至强可扩展处理器,也就是说了很久的Ice Lake-SP,这是他们首款10nm工艺的数据中心处理器,现在个处理器最多拥有40

[转帖]Intel关NUMA的内存编址

https://zhuanlan.zhihu.com/p/454928730 最近在做某国产化平台相关的适配, 不管NUMA的性能和实现方式都和Intel有较大不同, 作为比较对象, 理解Intel的NUMA实现是很有必要的. 虽然从软件角度, 打开NUMA会带来额外的复杂度, 但是从硬件角度, 关

[转帖]Intel寄存器的艺术

https://www.oschina.net/translate/the-art-of-picking-intel-registers?print 我为一本名为Scene Zine的在线杂志写了这篇文章。 Scene Zine 致力于 Demo Scene,它是一个数字艺术社区,致力于通过音乐,艺

[转帖]Intel VROC: 高性能的NVMe SSD软RAID功能

https://www.modb.pro/db/586867 在前面的文章 LSI/Broadcom的Tri-Mode 里介绍过Broadcom新推出的Tri-Mode芯片已经可以支持NVMe SSD了,SAS3500 ROC(RAID On Chip)芯片还支持多块NVMe SSD的硬RAID功能

[转帖]Intel PAUSE指令变化如何影响MySQL的性能

https://zhuanlan.zhihu.com/p/581200704 导读 x86、arm指令都很多,无论是应用程序员还是数据库内核研发大多时候都不需要对这些指令深入理解,但是 Pause 指令和数据库操作太紧密了,本文通过一次非常有趣的性能优化来引入对 Pause 指令的理解,期望可以事半

[转帖]Intel、海光、鲲鹏920、飞腾2500 CPU性能对比

https://plantegg.github.io/2021/06/18/%E5%87%A0%E6%AC%BECPU%E6%80%A7%E8%83%BD%E5%AF%B9%E6%AF%94/ Intel 海光 鲲鹏920 飞腾2500 CPU性能对比 为了让程序能快点,特意了解了CPU的各种原理,

[转帖]Intel甘拜下风,挤牙膏比不过兆芯CPU

https://baijiahao.baidu.com/s?id=1735997557665412214 本文比较长,有万字左右,因此在前面先把小标题集中亮个相。 即使大家一晃而过,我也要让精心拟定的各个小标题有个露脸机会。 兆芯承运应时生,抢得先机石成金, 架海擎天担重任,同德一心报国恩。 多核增