Steam内存测试工具【转】
转自:https://www.cnblogs.com/iouwenbo/p/14377478.html
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
- -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.c v5.10源码中的介绍:
参考:
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2021-06-08 伙伴系统之伙伴系统概述--Linux内存管理(十五)【转】
2020-06-08 Android6.0 RK3399 PWM Backlight 驱动分析 · Younix’s Studio【转】
2020-06-08 Linux PWM framework(二)- 背光子系统【转】
2016-06-08 【分享】博客美化(6)为你的博文自动添加目录【转】
2016-06-08 shell编程学习笔记【原创】
2016-06-08 module加载过程初步分析[更新中]【转】
2016-06-08 try_module_get和module_put【转】