zoukankan      html  css  js  c++  java
  • Steam内存测试工具

    Stream测试是内存测试中业界公认的内存带宽性能测试基准工具。

    Stream安装

    官方源码地址:http://www.cs.virginia.edu/stream/FTP/Code/stream.c

    配好软件源,安装编译器:

    yum -y install gcc

    上传Stream.c(stream.c版本为5.9)到待测试机器。编译:

    gcc -O3 -fopenmp -DN=2000000 -DNTIMES=10 stream.c -o stream

    编译参数解释:

    • -O3:指定最高编译优化级别,即3
    • -fopenmp:启用OpenMP,适应多处理器环境,更能得到内存带宽实际最大值。开启后,程序默认运行线程为CPU线程数
    • -DN=2000000:指定测试数组a[]、b[]、c[]的大小(Array size)。该值对测试结果影响较大(5.9版本默认值2000000,。若stream.c为5.10版本,参数名变为-DSTREAM_ARRAY_SIZE,默认值10000000)。注意:必须设置测试数组大小远大于CPU 最高级缓存(一般为L3 Cache)的大小,否则就是测试CPU缓存的吞吐性能,而非内存吞吐性能。

    推荐计算公式:

    {最高级缓存X MB}×1024×1024×4.1×CPU路数/8,结果取整数

    解释:由于stream.c源码推荐设置至少4倍最高级缓存,且STREAM_ARRAY_SIZE为double类型=8 Byte。所以公式为:最高级缓存(单位:Byte)×4.1倍×CPU路数/8

    例如:测试机器是双路CPU,最高级缓存32MB,则计算值为32×1024×1024×4.1×2/8≈34393292

    Stream测试原理

    • -DNTIMES=10:执行的次数,并从这些结果中选最优值。
    • stream.c:待编译的源码文件
    • stream:输出的可执行文件名

    其他参数:

    • -mtune=native -march=native:针对CPU指令的优化,此处由于编译机即运行机器。故采用native的优化方法。更多编译器对CPU的优化参考
    • -mcmodel=medium ;当单个Memory Array Size 大于2GB时需要设置此参数
    • -DOFFSET=4096 ;数组的偏移,一般可以不定义

    Stream使用

    使用命令指定运行线程为X:
    export OMP_NUM_THREADS=X

    在编译输出的可执行文件(stream)所在目录下运行:
    ./stream
    Stream测试结果示例:

    Stream测试结果示例

    附stream.c v5.10源码中的介绍:

    附stream.c v5.10源码中的介绍

    参考:

    内存性能的正确解读

    内存测试Stream程序分析

  • 相关阅读:
    Linux/Unix 新手和专家教程
    恢复Ext3下被删除的文件
    如何调试bash脚本
    8个实用而有趣Bash命令提示行
    使用grep恢复被删文件内容
    一些非常有意思的杂项资源
    chmod -x chmod的N种解法
    纯文本配置还是注册表
    面向对象的Shell脚本
    你可能不知道的Shell
  • 原文地址:https://www.cnblogs.com/iouwenbo/p/14377478.html
Copyright © 2011-2022 走看看