Stream的简单学习


前言

https://github.com/jeffhammond/STREAM

unzip STREAM-master.zip
cd /STREAM-master/
make
就可以编译完成

含义

STREAM 是业界广为流行的综合性内存带宽实际性能 测量 工具之一。
随着处理器处理核心数量的增多,内存带宽对于提升整个系统性能越发重要,
如果某个系统不能够足够迅速地将内存中的数据传输到处理器当中,
若干处理核心就会处于等待数据的闲置状态,
而这其中所产生的闲置时间不仅会降低系统的效率还会抵消多核心和高主频所带来的性能提升因素。
STREAM 具有良好的空间局部性,是对 TLB 友好、Cache友好的一款测试。
STREAM支持Copy 、Scale 、 Add、 Triad四种操作,下面分别介绍四种操作的含义: 1. Copy操作最为简单,它先访问一个内存单元读出其中的值,再将值写入到另一个内存单元。
2. Scale操作先从内存单元读出其中的值,作一个乘法运算,再将结果写入到另一个内存单元。
3. Add操作先从内存单元读出两个值,做加法运算, 再将结果写入到另一个内存单元。
4. Triad的中文含义是将三个组合起来

测试说明

编译处理
gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=102400000 -DNTIMES=10 stream.c -o stream 注意需要说明一下
-O3 是最高优化级别。
-fopenmp 打开多线程,默认是CPU进程棵树个进行测试。
-DNTIMES 是测试次数
-DSTREAM_ARRAY_SIZE 是数据大小, 一般越大了测出来的带宽值越高, 但是太高了无法编译通过。

numa节点验证

CPU的内存宽带于延时于numa节点是比较关联的。
此时可以使用taskset的方式进行测试与验证。
自己进行了下简单验证(没有看源码的情况)
最大的编译参数为:
gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=133000000 -DNTIMES=10 stream.c -o stream07 可以利用stream07 进行带宽和延迟的确认
比如我有一个四路18核心,超线程一共144核心的机器。
lscpu的信息为: Model name: Intel(R) Xeon(R) Gold 6150 CPU @ 2.70GHz
NUMA node0 CPU(s): 0-17,72-89
NUMA node1 CPU(s): 18-35,90-107
NUMA node2 CPU(s): 36-53,108-125
NUMA node3 CPU(s): 54-71,126-143

所以可以基于此进行一下内存带宽测试
taskset -c 0-17 ./stream07
Function Best Rate MB/s Avg time Min time Max time
Copy: 80698.3 0.038024 0.026370 0.050407
Scale: 71702.7 0.045104 0.029678 0.063957
Add: 82799.7 0.049889 0.038551 0.061930
Triad: 79870.1 0.050717 0.039965 0.061486 taskset -c 0-17,72-89 ./stream07
Function Best Rate MB/s Avg time Min time Max time
Copy: 80909.8 0.041473 0.026301 0.050996
Scale: 66545.5 0.044492 0.031978 0.054915
Add: 74106.9 0.057651 0.043073 0.080074
Triad: 74125.3 0.052560 0.043062 0.067384 taskset -c 8-25 ./stream07
Function Best Rate MB/s Avg time Min time Max time
Copy: 77104.0 0.032293 0.027599 0.041383
Scale: 73651.1 0.039079 0.028893 0.044384
Add: 94898.7 0.044708 0.033636 0.051819
Triad: 74424.5 0.051721 0.042889 0.053071

云海物理机和虚拟机的情况

8核心虚拟机:
-------------------------------------------------------------
Function Best Rate MB/s Avg time Min time Max time
Copy: 55348.7 0.039446 0.038447 0.040298
Scale: 51103.5 0.042791 0.041641 0.044352
Add: 56728.5 0.058115 0.056268 0.061302
Triad: 55520.8 0.058673 0.057492 0.062518 仅使用物理机器上面8个核心的服务器的情况
Function Best Rate MB/s Avg time Min time Max time
Copy: 48413.5 0.091299 0.044153 0.244530
Scale: 41152.8 0.078635 0.051943 0.114169
Add: 37340.2 0.122306 0.085870 0.175331
Triad: 47968.4 0.119108 0.066844 0.235003 发现云海OS的宿主机可能内核较早性能不是特别好。不建议用虚拟机作为生产
Model name: Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
NUMA node0 CPU(s): 0-11,24-35
NUMA node1 CPU(s): 12-23,36-47 机器信息为:
Linux node-653-137 3.10.0-957.1.1.el7.x86_64 #1 SMP Wed Jul 28 14:46:37 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux

看看国产化设备的数据-飞腾

飞腾S2500
NUMA 节点0 CPU: 0-7
NUMA 节点1 CPU: 8-15
NUMA 节点2 CPU: 16-23
NUMA 节点3 CPU: 24-31
NUMA 节点4 CPU: 32-39
NUMA 节点5 CPU: 40-47
NUMA 节点6 CPU: 48-55
NUMA 节点7 CPU: 56-63
NUMA 节点8 CPU: 64-71
NUMA 节点9 CPU: 72-79
NUMA 节点10 CPU: 80-87
NUMA 节点11 CPU: 88-95
NUMA 节点12 CPU: 96-103
NUMA 节点13 CPU: 104-111
NUMA 节点14 CPU: 112-119
NUMA 节点15 CPU: 120-127

测试情况:
taskset -c 0-7 ./stream07
Function Best Rate MB/s Avg time Min time Max time
Copy: 3758.6 0.567231 0.566170 0.569430
Scale: 3845.8 0.553693 0.553331 0.554323
Add: 3765.9 0.850122 0.847612 0.853893
Triad: 3725.3 0.858621 0.856852 0.861436 taskset -c 0-15 ./stream07
Function Best Rate MB/s Avg time Min time Max time
Copy: 5259.5 0.407384 0.404602 0.410021
Scale: 5268.6 0.417937 0.403900 0.423356
Add: 5797.0 0.565010 0.550634 0.577339
Triad: 5650.2 0.576209 0.564937 0.586471 全核心的带宽为:
Function Best Rate MB/s Avg time Min time Max time
Copy: 49553.0 0.078493 0.042944 0.110835
Scale: 52869.5 0.072087 0.040250 0.102296
Add: 49359.7 0.107320 0.064668 0.147577
Triad: 49677.1 0.104581 0.064255 0.147939 说明:
飞腾128核心的内存带看不如Intel 6150
速度也比较差一些。 访存性能差距较大。

国产设备内存性能-海光

NUMA 节点0 CPU:                 0-7,64-71
NUMA 节点1 CPU: 8-15,72-79
NUMA 节点2 CPU: 16-23,80-87
NUMA 节点3 CPU: 24-31,88-95
NUMA 节点4 CPU: 32-39,96-103
NUMA 节点5 CPU: 40-47,104-111
NUMA 节点6 CPU: 48-55,112-119
NUMA 节点7 CPU: 56-63,120-127 taskset -c 0-7 ./stream07
Function Best Rate MB/s Avg time Min time Max time
Copy: 31427.2 0.067976 0.067712 0.069821
Scale: 20904.3 0.102741 0.101797 0.109792
Add: 23203.4 0.139136 0.137566 0.144384
Triad: 23167.7 0.138510 0.137778 0.142723 全核心性能为:
Function Best Rate MB/s Avg time Min time Max time
Copy: 113820.7 0.022691 0.018696 0.045123
Scale: 101512.4 0.022498 0.020963 0.023655
Add: 101659.3 0.033122 0.031399 0.033853
Triad: 105336.1 0.031282 0.030303 0.033287 海光机器的性能还是非常可观的。

AMD9T34 虚拟机

16核心的虚拟机,内存带宽56GB左右。 不管是1-8核心还是全部核心结果比较相近。

Function    Best Rate MB/s  Avg time     Min time     Max time
Copy: 56055.8 0.038005 0.037962 0.038032
Scale: 52517.3 0.040593 0.040520 0.040656
Add: 52852.9 0.060418 0.060394 0.060440
Triad: 52811.0 0.060483 0.060442 0.060538

倚天710 虚拟机

8核心的倚天虚拟机 内存带宽爆表 基本上是最高的档次,时间基本上也是最低的。
Function Best Rate MB/s Avg time Min time Max time
Copy: 98614.3 0.022174 0.021579 0.026098
Scale: 99152.2 0.022183 0.021462 0.026906
Add: 98223.9 0.033475 0.032497 0.040199
Triad: 98640.1 0.033317 0.032360 0.039705

Stream的简单学习的更多相关文章

  1. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  2. shiro简单学习的简单总结

    权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...

  3. CentOS 简单学习 firewalld的使用

    1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...

  4. Windows 下 Docker 的简单学习使用过程之一 dockertoolbox

    1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...

  5. 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习

    嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...

  6. Linux——帮助命令简单学习笔记

    Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...

  7. OI数学 简单学习笔记

    基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...

  8. mongodb,redis简单学习

     2.mongodb安装配置简单学习                   配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作                 ...

  9. html css的简单学习(三)

    html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...

  10. html css的简单学习(二)

    html css的简单学习(二) <!Doctype html>告诉浏览器,这是一个html文档.lang="en" 默认是en,表示英语:zh-Hans 中文简体:z ...

随机推荐

  1. EFCore CodeFirst DBFirst Demo

    1.简单Demo单独记录一下使用过程,Nuget对应.Net环境版本数据库包.EF Core 的 PMC 工具包. 2.CodeFirst 包管理器控制台(PMC)输入命令,迁移创建数据库: Add- ...

  2. Java 编辑、删除Excel中的超链接

    本文介绍如何编辑Excel文档中的超链接,包括编辑超链接显示文本.链接地址及删除指定超链接.使用免费版Excel类库工具,Free Spire.XLS for Java.Jar包获取可在官方网站下载, ...

  3. openGauss内核分析:执行计划生成

    摘要:SQL语句解析完成后被解析成Query结构,在进行优化时是以Query为单位进行的,Query的优化分为基于规则的逻辑优化(查询重写)和基于代价的物理优化(计划生成),主入口函数为subquer ...

  4. 云图说:云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期

    摘要:华为云数据库 RDS for MySQL提供一键开通读写分离功能,只需要一个连接地址,让您在业务高峰期不再迷茫,不再慌乱,so easy 的应对业务. 本文分享自华为云社区<云图说 | 第 ...

  5. 高性能 Jsonpath 框架,Snack3 3.2.57 发布

    Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计.其下一切数据都以ONode表示,ONode也 ...

  6. PPT 玩转形状

    形状 https://www.cnblogs.com/vipsoft/p/16943810.html 形状也可以非常复杂 形状的神奇功能--合并形状 编辑顶点 https://www.cnblogs. ...

  7. 在 SDXL 上用 T2I-Adapter 实现高效可控的文生图

    T2I-Adapter 是一种高效的即插即用模型,其能对冻结的预训练大型文生图模型提供额外引导.T2I-Adapter 将 T2I 模型中的内部知识与外部控制信号结合起来.我们可以根据不同的情况训练各 ...

  8. 又拍云邵海杨 - 25年Linux老兵,聊聊运维的“术”与“道”

    您好邵总,请您先做个自我介绍吧,聊聊您的履历和现状,让大家更好的认识您,了解您的背景也有助于读者理解后面的采访内容 我是来自又拍云的邵海杨,从1998年开始使用Linux至今快25年了,资深(老鸟)L ...

  9. 国内加速访问Github的办法

    说明 自从GitHub私有库免费后,又涌入了一大批开发爱好者. 但国内访问GitHub的速度实在是慢得一匹,在clone仓库时甚至只有10k以下的速度,大大影响了程序员的交友效率. 国内加速访问Git ...

  10. IntelliJ JSP 格式化问题

    Q: 当我尝试在 IntelliJ 中格式化一些 JSP 文件时,所有行都从头开始. A: 因为JSP是有关HTML和HTML以下标签的孩子html,body,thead,tbody,tfoot默认情 ...