Bandwidth内存带宽測试工具
本博文为原创,遵循CC3.0协议,转载请注明出处:http://blog.csdn.net/lux_veritas/article/details/24766015
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bandwidth是一款内存带宽基准測试程序,主要针对x86及x86_64平台,通过顺序读写与随机读写不同大小的数据块,測试系统的内存带宽性能。
Bandwidth提供了一套汇编语言实现的支持库,用来完毕体系结构相关的特定操作,比如读取某些寄存器的内容。
利用该汇编库,检測当前系统CPU的型号及支持的特性,并选择对应的工作模式,如笔者机器的CPU为:
CPU family: GenuineIntel
CPU features: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 XD Intel64
在主程序执行时,依据CPU特性选择工作模式:
    if (mode == SSE2) {
        print (L"(128-bit), size = ");
    }
    else if (mode == AVX) {
        print (L"(256-bit), size = ");
    }
    else {
#ifdef __x86_64__
        print (L"(64-bit), size = ");
#else
        print (L"(32-bit), size = ");
#endif
    }
笔者的CPU支持SSE2,不支持AVX,故採用128bit的数据位宽进行对应的内存读写操作。
以笔者的机器为例,測试主要分为下面几个部分:
|-------|128bit    |64bit |
|:-----:|:-----:|:----:|
|顺序读  |    |      |
|随机读    |    |      |
|顺序写    |    |      |
|随机写    |    |      |
能够选择是否旁路掉各级cache,笔者机器的CPU cache情况例如以下:
Cache 0: L1 data cache, line size 64, 8-ways, 64 sets, size 32k
Cache 1: L1 instruction cache, line size 64, 8-ways, 64 sets, size 32k
Cache 2: L2 unified cache, line size 64, 16-ways, 4096 sets, size 4096k
用于读写的数据块大小从128B逐渐增大到128MB,因为各级cache的大小不同,进行内存读写时,较小的数据块会存放在cache中,较大的数据块则会经过cache存放在主存中。所以,随着数据块大小的添加,在几个节点上带宽的大小会有明显的跳变,主要原因就是到达了各级cache的容量上限,而转向下层存储。bandwidth会将測试结果生成一个日志文件,一张图表,这样的带宽的跳变在图表中有最直观的表现。如图,在32KB与4MB处带宽有明显的下降趋势
Bandwidth内存带宽測试工具的更多相关文章
- Linux 性能測试工具
		Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ... 
- ubuntu 14.04 LTS 安装webbentch压力測试工具
		近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ... 
- MySQL Study之--MySQL压力測试工具mysqlslap
		MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍 mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ... 
- Android性能測试  一些适用于Android Studio的代码审查和性能測试工具
		导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ... 
- 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)
		作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ... 
- php性能优化(一)压力測试工具篇
		ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ... 
- UnityTestTools測试工具
		由于工作关系,要了解Unity上的測试工具,该工具基于Nunit框架.通过查阅资料了解到在Unity5.3中做出了一些改变,自带的仅仅剩下单元測试工具,假设想用其它的工具比方断言.集成測试,就须要前往 ... 
- Java单元測试工具JUnit 5新特性一览
		Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ... 
- webbench压力測试工具
		apache的測试工具ab 在并发100个以上后会出现错误.网上也有非常多改ab源代码来解禁的. 只是还是推荐一款比較好用的压力測试工具webbench wget http://blog.zyan.c ... 
随机推荐
- Android 的平台碎片化问题
			Android 的平台碎片化问题 看到篇不错的文章,转载过来. -------------------------------------- 与iOS开发相比,Android开发平添了不小的工作量,因 ... 
- Kali Linux 安全渗透教程<第三更>1.2  安全渗透所需工具
			了解了渗透測试的概念后.接下来就要学习进行渗透測试所使用的各种工具.在做渗透測试之前.须要先了解渗透所需的工具.渗透測试所需的工具如表1-1所看到的: 表1-1 渗透所需工具 splint unhi ... 
- android 项目中log信息的正确处理
			我们在做项目中,调试程序的时候通常是debug或者打log,特别是看一些json数据之类的,都喜欢打log看看,可是在项目上线时log信息一定不能被打印出来,大家能够平时下载一些做的烂的app,连接e ... 
- Android短彩信源码解析-短信发送流程(二)
			转载请注明出处:http://blog.csdn.net/droyon/article/details/11699935 2,短彩信发送framework逻辑 短信在SmsSingleRecipien ... 
- cygwin中vim的使用方法
			vim类似Windows中的记事本,功能非常强大. vim的使用技巧 1.vim text.txt text存在则打开,不存在则类似新建一个叫text的txt文件 2.退出 按esc切换到命令模式,然 ... 
- error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR”
			在使用VS2010编写运行时动态链接dll文件时出现的一个问题,问题解决得益于此文章: http://blog.sina.com.cn/s/blog_6a2236590100xbgl.html 通过调 ... 
- MacBook外接显示器设置方法(新手入门贴)
			小屏幕的MacBook/MacBook Pro放在桌上长时间使用,眼睛比较累,而且,长时间低头看屏幕,易得颈椎病,绝对有损健康.配一台大屏幕的外置显示器不失为两全其美的好办法. 首先,得买一台中意的大 ... 
- fastxml Jackson JsonNode (ObjectNode) 转 List
			做环聊开发, Java 后台示例 用的 fastxml Jackson 解析json(擦, 狗屎, 不能支持下国产吗?) 有的json字段是数组, 发现不会解析了, 谷歌了下, 用以下方法可行,(不知 ... 
- jQuery prop 全选和全不全
			$('#ckAll').click(function() { var value = $(this).is(':checked') ? true : false; $("input[name ... 
- .NET通过PowerShell操作ExChange为用户开通邮箱账号
			最近工作中一个web项目需要集成exchange邮箱服务,注册用户时需要动态创建邮箱用户,终于在http://www.cnblogs.com/gongguo/archive/2012/03/12/23 ... 
