Linux-Stream内存带宽及MLC内存延迟性能测试方法
1、Stream内存带宽测试
Stream是业界主流的内存带宽测试程序,测试行为相对简单可控。该程序对CPU的计算能力要求很小,对CPU内存带宽压力很大。随着处理器核心数量的增大,而内存带宽并没有随之成线性增长,因此内存带宽对提升多核心的处理能力就越发重要。Stream具有良好的空间局部性,是对TLB友好,Cache友好的一款测试程序,其分为Copy、Scale、Add和Triad四个更基本的测试功能。
Copy为最简单的操作,即从一个内存单元中读取一个数,并复制到另一个内存单元,有2次访存操作。
Scale是乘法操作,从一个内存单元中读取一个数,与常数scale相乘,得到的结果写入另一个内存单元,有2次访存。
Add是加法操作,从两个内存单元中分别读取两个数,将其进行加法操作,得到的结果写入另一个内存单元中,有2次读和1次写共3次访存。
Triad是前面三种的结合,先从内存中读取一个数,与scale相乘得到一个乘积,然后从另一个内存单元中读取一个数与之前的乘积相加,得到的结果再写入内存。所以,有2次读和1次写共3次访存操作。
从上述的结果我们可以看出,测试的内存带宽Add>Triad>Copy>Scale。这是因为访存次数越多,内隐藏的访存延迟越大,得到的带宽越大。同理,运算的操作越复杂,操作时间就越长,程序运行时间就越长,得到的访存带宽就相应减少。这就是为什么3次访存的操作得到的带宽比2次访存操作得到的要大,而相同访存次数的操作,加法要比乘法得到的结果要好。
2、MLC内存延迟测试
影响应用程序性能的一个关键因素是应用程序从处理器缓存和从内存子系统获取数据所消耗的时间,(Intel Memory Latency Checker(Intel MLC) 是一个用于测试延迟和带宽随着系统负载增加而变化的工具; 支持 Linux 、Windows;实现方法是: MLC 创建压测主机逻辑处理器数量减 1 个线程,然后使用这些线程生成压测流量,余下的 1 个 vCPU 用于运行一个测量延迟的线程。
|
类型 |
预期结果 |
测试步骤 |
|
stream内存带宽测试 |
Best Rate数值越高越好 |
1、安装gcc下载http://www.cs.virginia.edu/stream/FTP/Code/stream.c |
|
MLC内存延迟测试 |
ns的值越低越好 |
1、下载wget https://downloadmirror.intel.com/736634/mlc_v3.9a.tgz 并解压tar -zxvf mlc_v3.9.tgz |
Linux-Stream内存带宽及MLC内存延迟性能测试方法的更多相关文章
- Linux系统性能测试工具(一)——内存带宽测试工具mbw
本文介绍关于Linux系统(适用于centos/ubuntu等)的内存带宽测试工具-mbw.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: 内存综合性能 ...
- Linux内存带宽的一些测试笔记
Linux内存带宽的一些测试笔记 首页 所有文章 2014年10月 GNU/Linux系统 2014-10-21 13:20 GNU/LINUX系统 内存带宽 1k 字 669 次 最近要测一下 ...
- Linux内存带宽的一些测试笔记【转】
转自:https://blog.csdn.net/subfate/article/details/40343497 版权声明:本文为迟思堂主人李迟原创文章,版权所有.可随便任意使用(包括学习研究商用) ...
- Linux按照CPU、内存、磁盘IO、网络性能监测
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书 ...
- Linux按照CPU、内存、磁盘IO、网络性能监测【转载】
本文转载地址:https://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监 ...
- 【转载】linux内核笔记之高端内存映射
原文:linux内核笔记之高端内存映射 在32位的系统上,内核使用第3GB~第4GB的线性地址空间,共1GB大小.内核将其中的前896MB与物理内存的0~896MB进行直接映射,即线性映射,将剩余的1 ...
- Linux内存点滴 用户进程内存空间
Linux内存点滴 用户进程内存空间 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的. VIRT, Virtual Image (kb) RES, Re ...
- Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制
Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制 http://w ...
- linux下使用free命令查看实际内存占用(可用内存)
转:http://blog.is36.com/linux_free_command_for_memory/ linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m ...
- Linux使用free命令查看实际内存占用
转自:http://www.cnblogs.com/pengdonglin137/p/3315124.html Linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free ...
随机推荐
- HttpURLConnection调用webservice,c#、java、python等HTTP调用webservice,简单的webservice调用
以前调用webservice一般使用axis.axis2先生成java类后,直接引用,多方便.但是有的webservice接口非常的函数,生成的java类非常多,有没有一种非常简化的方法. axis2 ...
- 沉思篇-剖析Jetpack的LiveData
上一篇我们讲到了架构组件中的Lifecycle,由于缺少具体的运用,可能缺少直观的感受,今天我们就用Lifecycle实战一回,看看Lifecycle是怎样运用到LiveData中的. LiveDat ...
- 国标GB28181协议客户端开发(一)整体流程和技术选型
国标GB28181协议客户端开发(一)整体流程和技术选型 本系列文章将介绍国标GB28181协议设备端的开发过程.本文旨在探讨整体设计和技术选型方面的考虑,为开发人员提供指导和参考.文章将从设备端开发 ...
- 【.NET 深呼吸】全代码编写WPF程序
学习 Code 总有这样一个过程:入门时候比较依赖设计器.标记语言等辅助工具:等到玩熟练了就会发现纯代码写 UI 其实更高效.而且,纯代码编写也是最灵活的.Windows Forms 项目是肯定可以全 ...
- Git使用教程(带你玩转GitHub)
Git使用教程(理论实体结合体系版) 下载安装: 按照这个博客来就好 Windows系统Git安装教程(详解Git安装过程) - 学为所用 - 博客园 (cnblogs.com) Git命令大全: G ...
- 深入JS——理解闭包可以看作是某种意义上的重生
JS中有一个非常重要但又难以完全掌握的概念,那就是闭包.很多JS程序员自以为已经掌握了闭包,但实质上是一知半解,就像"JS中万物皆为对象"这个常见的错误说法一样,很多前端开发者到现 ...
- Hexo博客Next主题valine评论系统邮件提醒
简介 Valine:一款快速.简洁且高效的无后端评论系统. Valine-Admin Github 项目地址,具体教程以 最新版 为准 Valine-Admin项目地址 简介 Valine Admin ...
- Java相关小知识_6_15
实体完整性要求每个表都有唯一标识符,每一个表中的主键字段不能为空或者重复的值. 参照完整性要求关系中不允许引用不存在的实体.设定相应的更新删除插入规则来更新参考表. Java语言使用的是Unicode ...
- 使用docker安装的tomcat部署activiti-app.war、activiti-admin.war失败(ClassNotFoundException)
背景 一直以来习惯用docker配置一些本地学习环境,许多教程配置activiti的方式都是通过复制activiti的war包部署在tomcat中,我尝试了一下通过docker的方式遇到了一些不易察觉 ...
- 智能制造之路—从0开始打造一套轻量级MOM平台
一.概述 面对数字化浪潮,MOM需求迈入上升期,数字化从"可选项"变成了企业竞争"必选项".制造行业每个工厂的生产逻辑都不尽相同,流程的梳理.数据统一化都需要调 ...