测试环境:

CPU:Kunpeng 920 8Core
MEM:16G
Storage:200G
OS:openEuler 20.03 (LTS-SP3)

1 服务器资源监控工具——Stream

1.1 编译安装——Stream

  1. 源码编译安装

​ 下载源码:

wget http://www.cs.virginia.edu/stream/FTP/Code/stream.c

​ 解压编译:

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

​ 参数说明:

-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:

数组的偏移,一般可以不定义

1.2 验证与运行——Stream

  1. 运行

​ 使用命令指定运行线程为X:

export OMP_NUM_THREADS=X
  • 1

​ 在编译输出的可执行文件(stream)所在目录下运行:

./stream

​ 返回结果:

[root@controller ~]# export OMP_NUM_THREADS=4
[root@controller ~]# ./stream
-------------------------------------------------------------
STREAM version $Revision: 5.10 $
-------------------------------------------------------------
This system uses 8 bytes per array element.
-------------------------------------------------------------
***** WARNING: ******
It appears that you set the preprocessor variable N when compiling this code.
This version of the code uses the preprocesor variable STREAM_ARRAY_SIZE to control the array size
Reverting to default value of STREAM_ARRAY_SIZE=10000000
***** WARNING: ******
Array size = 10000000 (elements), Offset = 0 (elements)
Memory per array = 76.3 MiB (= 0.1 GiB).
Total memory required = 228.9 MiB (= 0.2 GiB).
Each kernel will be executed 10 times.
The *best* time for each kernel (excluding the first iteration)
will be used to compute the reported bandwidth.
-------------------------------------------------------------
Number of Threads requested = 4
Number of Threads counted = 4
-------------------------------------------------------------
Your clock granularity/precision appears to be 1 microseconds.
Each test below will take on the order of 4240 microseconds.
(= 4240 clock ticks)
Increase the size of the arrays if this shows that
you are not getting at least 20 clock ticks per test.
-------------------------------------------------------------
WARNING -- The above is only a rough guideline.
For best results, please be sure you know the
precision of your system timer.
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 31305.2 0.005203 0.005111 0.005255
Scale: 36232.0 0.004490 0.004416 0.004747
Add: 36457.7 0.006733 0.006583 0.007083
Triad: 36933.9 0.006661 0.006498 0.006960
-------------------------------------------------------------
Solution Validates: avg error less than 1.000000e-13 on all three arrays
-------------------------------------------------------------

1.3 其他——Stream

  1. Steam源码
http://www.cs.virginia.edu/stream/FTP/Code/
  1. Git仓库
https://github.com/jeffhammond/STREAM

</article>

[转帖]记录自己安装内存带宽测试工具——Stream过程的更多相关文章

  1. Linux系统性能测试工具(一)——内存带宽测试工具mbw

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存带宽测试工具-mbw.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: 内存综合性能 ...

  2. Linux系统性能测试工具(二)——内存压力测试工具memtester

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存压力测试工具-memtester.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: ...

  3. 【工具】 memtester内存压力测试工具

    作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14497838.html 目录 一.简介 二.Memtester安装 三.使用说明 四.测试示例 一.简介 mem ...

  4. MAC系统上安装Apache ab测试工具

    第一步:下载 Apache HTTP Server http://httpd.apache.org/download.cgi#apache24 第二步:安装brew工具 https://brew.sh ...

  5. mac安装浏览器同步测试工具

    1.安装node.js (1)打开终端,输入以下命令安装Homebrew ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebre ...

  6. Ubuntu 16.04下安装Apache压力测试工具ab

    安装 sudo apt-get install apache2-utils 简单使用 # 对http://www.baidu.com/进行100次请求,10个并发请求压力测试结果. ab -n 100 ...

  7. mac使用brew安装配置常见测试工具

    Homebrew 包管理工具可以让你安装和更新程序变得更方便,目前在 OS X 系统中最受欢迎的包管理工具是 Homebrew. 安装 在安装 Homebrew 之前,需要将 Xcode Comman ...

  8. Linux系统性能测试工具(三)——内存性能综合测试工具lmbench

    本文介绍关于Linux系统(适用于centos/ubuntu等)的内存性能综合测试工具-lmbench.内存性能测试工具包括: 内存带宽测试工具——mbw: 内存压力测试工具——memtester: ...

  9. show processlist,sysbench压力测试工具

    processlist.sh 记录数据库的状态 #!/bin/bash while true do mysql -uroot -pwangxiaohu -e 'show processlist\G'| ...

  10. 常见Android测试工具简介

    在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...

随机推荐

  1. 云图说|一张图看懂一站式DevOps利器——华为云DevCloud

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 华为云DevCl ...

  2. 跟我学AI建模:分子动力学仿真模拟之DeepMD-kit框架

    摘要:分子动力学仿真模拟的重点就在于如何建立模型描述分子间的相互作用. 本文分享自华为云社区<AI建模-分子动力学仿真>,作者: 木子_007 . 一.背景 分子动力学的仿真模拟广泛应用于 ...

  3. maven中引入CDH依赖包,Cannot resolve org.apache.hadoop:hadoop-hdfs:3.0.0-cdh6.3.2

    POM文件加入仓库 cloudera https://repository.cloudera.com/artifactory/cloudera-repos/ 修改MAVEN配置文件 nexus-ali ...

  4. 火山引擎DataLeap数据调度实例的 DAG 优化方案(三):技术实现

    在原始数据中,是以一个数组的形式返回节点信息及依赖关系.所以,需要对数据进行处理形成图所需要的数据,同时,利用多个 map 对数据进行存储,方便后续对数据进行检索,减少时间复杂度. 实例节点的样式需要 ...

  5. 火山引擎云原生数据仓库 ByteHouse 技术白皮书 V1.0 (Ⅳ)

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,<火山引擎云原生数据仓库 ByteHouse 技术白皮书>正式发布.白皮书简述了 ByteHou ...

  6. 【原理篇】WebView 实现嵌套滑动,丝滑般实现吸顶效果,完美兼容 X5 webview

    本文首发我的微信公众号徐公,收录于 Github·AndroidGuide,这里有 Android 进阶成长知识体系, 希望我们能够一起学习进步,关注公众号徐公,5 年中大厂程序员,一起建立核心竞争力 ...

  7. Java | VS Code 如何导入外部 jar 包源

    Java Extension Pack里的Project Manager for Java扩展,安装后在文档查看的下方会有"JAVA PROJECTS",在Referenced L ...

  8. AtCoder Beginner Contest 187 题解

    A - Large Digits 按要求求出两个数的每位之和,进行比较即可. 时间复杂度 \(\mathcal{O}(\log(AB))\). B - Gentle Pairs 枚举所有点对求斜率. ...

  9. 项目管理之问,ChatGPT作答

    项目管理 帮我列一份<项目管理>的大纲 当然可以!以下是一个典型的<项目管理>大纲: I. 项目管理概述 A. 项目管理定义和目标 B. 项目管理的重要性和价值 C. 项目管理 ...

  10. 如何在vim创建的脚本内添加固定的头部信息

    编辑以下的文件: vim /etc/vimrc 在脚本的结尾添加如下内容: autocmd BufNewFile *.sh,*.script exec ":call WESTOS()&quo ...