Stream的简单学习
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的简单学习的更多相关文章
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- html css的简单学习(三)
html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...
- html css的简单学习(二)
html css的简单学习(二) <!Doctype html>告诉浏览器,这是一个html文档.lang="en" 默认是en,表示英语:zh-Hans 中文简体:z ...
随机推荐
- 能够让机器狗学会灭火, ModelArts3.0让AI离我们又近一步
摘要:训练.标注成本节省90%!华为云自动化AI开发平台ModelArts 3.0发布,从训练数据到模型落地一站式打通. 今年的华为,着实遭遇了不小的困难. 尤其是供应链,包括芯片方面的打击,让华为轮 ...
- 一文带你解读Volcano架构设计与原理
摘要:Volcano主要是基于Kubernetes做的一个批处理系统,希望上层的HPC.中间层大数据的应用以及最下面一层AI能够在统一Kubernetes上面运行的更高效. Volcano产生的背景 ...
- 华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快?
摘要:GaussDB(for MySQL)并行查询为何快人一步?华为云数据库内核专家这样说 本文分享自华为云社区<华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快 ...
- Linux 升级安装 Python 3
百度飞桨 PaddlePaddle 2.4.0 => Python 3.7.4 PaddlePaddle 2.4.1+ => Python 3.9.0 下载 # 安装依赖 [root@lo ...
- JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
JProfiler(Java性能分析神器) v11.1.4 下载 安装目录不要有空格 安装成功后,在 Intellij 里面选择对应的 jprofiler.exe 路径 点击下图JProfiler图标 ...
- MyBatis Mapper.XML 标签使用说明
直接将值返回给对象 <select id="list" resultType="com.vipsoft.base.entity.UserInfo"> ...
- 浅谈sql执行流程、innodb架构设计、buffer pool缓冲池
一.从服务端到数据库sql执行流程: 1.SQL接口:负责处理接收到sql的语句 2.查询解析器:负责将sql变成数据库可以看懂的语言 3.查询优化器:选择最优的查询路径(针对你编写的复杂sql语句生 ...
- Go--统计数组中重复的元素及重复次数
代码: package main import ( "fmt" ) func main() { //创建有重复数值的数组 a1 := []int{1, 2, 3, 1, 4, 5, ...
- WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba
WebRTC 无疑推动和改变了互联网视频,而这仅仅是刚刚开始,除了大家熟悉的 WebRTC-PC.Simulcast 和 SVC,有太多的新技术和新架构出现在 WebRTC 新的标准中,比如 WebT ...
- 文心一言 VS 讯飞星火 VS chatgpt (182)-- 算法导论13.4 6题
六.用go语言,Skelton 和 Baron 教授担心在 RB-DELETE-FIXUP 的情况1开始时,结点 x.p 可能不是黑色的.如果这两位教授是对的,则第5~6行就是错的.证明:x.p 在情 ...