Linux下内存性能测试

  • 简介
    • 下载并解压
    • 编译
    • 运行
    • 运行结果
    • 结果分析

简介

Stream测试是内存测试中业界公认的内存带宽性能测试基准工具,stream由Virginia University提供,通过生成四种不同模式下的内存读写操作,用于测试高性能计算机的内存带宽。 现代计算机中都是用缓存技术,为了保证测试正确反映计算机内存的读写性能,测试中使用的数据量应远大于缓存大小。

下载并解压

Stream

tar -xvf stream.tar.gz

编译

根据使用的平台选择不同的gcc编译器。

# 参数介绍
# -mtune=native -march=native 针对CPU指令的优化,此处由于编译机即运行机器。故采用native的优化方法。
# -O3 编译器编译优化级别。
# -mcmodel=medium 当单个Memory Array Size 大于2GB时需要设置此参数(小于2GB时设置无效)。
# -fopenmp 适应多处理器环境,开启后,程序默认线程为CPU线程数。也可以在运行前设置进程数
# 设置方法: export OMP_NUM_THREADS=x  x为你想设置的线程数
# -DSTREAM_ARRAY_SIZE=100000000:这个参数是对测试结果影响最大,也是最需要关注的一个参数,指定计算中a[],b[],c[]数组的大小。
# -DNTIMES=40:执行的次数,并且从这些结果中选最优值
gcc -mtune=native -march=native -O3 -mcmodel=medium  -fopenmp -DSTREAM_ARRAY_SIZE=100000000 -DNTIMES=40 stream.c -o stream.o

运行

./stream.o

运行结果

结果分析

Copy:是复制操作,即从内存单元中读取一个数,并复制到其他内存单元中,两次访问内存操作。
Scale:是乘法操作,即从内存单元中读取一个数,与常数相乘,得到的记过存到其他内存单元,两次访问内存操作。
Add:是加法操作,从两个内存单元中分别读取两个数,将其进行加法操作后,得到的结果写入另一个内存单元中,3次访问内存操作。
Triad:是前面三种的结合,先从内存中读取一个数,与一个常数相乘得到一个乘积,然后从另一个内存单元中读取一个数与刚才乘积结果相加,得到的结果写入内存。3次访问内存操作。

测试结果一般的规律是Add > Triad > Copy > Scale。一次Add操作需要访问三次内存(两个读操作,一个写操作),Triad操作也需要三次访问内存, Copy和Scale操作需要两次访问内存。单位操作内,访问内存次数越多,越能够掩盖访存延迟,带宽越大。

linux下内存性能测试工具STREAM相关推荐

  1. Linux下内存检测工具:asan

    Linux下内存检测工具:asan ASAN(Address-Sanitizier)早先是LLVM中的特性,后被加入GCC 4.8,在GCC 4.9后加入对ARM平台的支持.因此GCC 4.8以上版本 ...

  2. Linux下内存泄露工具

    概述 内存泄露(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,这时就出现了内存泄露.尽管优秀的编程实践可以确保最少的泄露,但是根据经验, ...

  3. Linux如何安装iperf软件,Linux 下网络性能测试工具 iperf 的安装和使用

    很久没写文章,iperf 也一直有用,感受不错就记录一下html 说明: OS :CentOS 6.4 x86_64 Server: 192.168.100.55 Client: 192.168.10 ...

  4. linux下 C++性能测试工具 gprof 和 gprof2dot

    http://www.4ucode.com/Study/Topic/1909519 http://coolaj86.info/articles/super-simple-gprof.html http ...

  5. arm linux下交叉编译valgrind工具进行内存泄露检测和性能分析

    C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题.如果crash的地方正是内存使用错误的地方,说明你人品好.如果crash的地方内存明显不是consistent的 ...

  6. Linux下内存使用率、CPU使用率、以及运行原理-转

    Linux下内存使用率.CPU使用率.以及运行原理 Linux下怎样查看机器配置啊?cpu/内存/硬盘 dmesg 显示开机信息.kernel会将开机信息存储在ring buffer中.您若是开机时来 ...

  7. Linux Wi-Fi连接工具,Linux下Wi-Fi配置工具2

    上回说到,linux下面的Wi-Fi配置工具,说是江湖多事,风起云涌...嗯,这回是真的要动手配置了.各种麻烦啊,想死的心都有了有木有啊. 尝试用iwconfig 话说上回说用iwconfig配置Wi ...

  8. Linux下C++开发工具介绍

    概述     就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, an ...

  9. linux查看设备内存代码,Linux下内存查看命令(示例代码)

    在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们 ...

最新文章

  1. CORBA/DCOM使用协议
  2. 系列(四)—Http协议
  3. 开发中的坑:MQ 也能做 RPC 调用?
  4. Synchronized的实现原理(一)
  5. 关系抽取--CASREL
  6. Linux命令行连接WiFi
  7. 三丰三坐标编程基本步骤_贴片机编程教程,编程步骤,编程怎么编
  8. 个性化的CRM具备的功能有哪些
  9. 《树莓派4B家庭服务器搭建指南》第六期:将RSSHub私有化部署到树莓派,并通过《嘎!RSS》订阅自己的信息流...
  10. cocos2d-x 移动MM平台SDK接入
  11. 东航mu座位分布图机翼_东航MU2357飞机座位大概几号座位在飞机机翼边上
  12. android 推送图标大小,设计方法论:一种统一图标大小的方法
  13. Redis学习总结(数据类型、持久化、事务、数据删除策略、主从复制、哨兵、缓存雪崩等)
  14. 详解Windows PE(Windows预安装环境)
  15. AutoCAD中ObjectARX C++常用的方法
  16. java二进制文件下载到浏览器默认路径
  17. QT之model-delegat-model---QAbstractListModel QAbstractTableModel 与 QItemDelegate关系
  18. CSS常用技巧(元素显示隐藏、用户界面样式、垂直对齐、溢出文字省略号显示、精灵技术、滑动门、margin负值之美和css三角之美)
  19. 基于python中jieba包的中文分词中详细使用
  20. 2020年下一个创业风口是什么?

热门文章

  1. 互联网也可以这样玩,爱锁屏红包受到广大2级城市用户青睐
  2. [焦点访谈]黄碟竟然出正版
  3. 尼得科Nidec风扇4015风机和G40R风机介绍
  4. wordpress自定义主题
  5. javascript 父子iframe相互传参数
  6. 关于Open SSL高危漏洞整改操作 -- AIX 整改措施
  7. 《数据可视化》之小白学习篇(一)
  8. 自定义MagiskManager更新通道
  9. 5月14日 python学习总结 视图、触发器、事务、存储过程、函数、流程控制、索引...
  10. puzzle java_Java解惑(三) puzzle 24--35