本博文为原创,遵循CC3.0协议,转载请注明出处:http://blog.csdn.net/lux_veritas/article/details/24766015

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Bandwidth是一款内存带宽基准測试程序,主要针对x86及x86_64平台,通过顺序读写与随机读写不同大小的数据块,測试系统的内存带宽性能。

项目地址

Bandwidth提供了一套汇编语言实现的支持库,用来完毕体系结构相关的特定操作,比如读取某些寄存器的内容。

利用该汇编库,检測当前系统CPU的型号及支持的特性,并选择对应的工作模式,如笔者机器的CPU为:

  1. CPU family: GenuineIntel
  2. CPU features: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 XD Intel64

在主程序执行时,依据CPU特性选择工作模式:

  1. if (mode == SSE2) {
  2. print (L"(128-bit), size = ");
  3. }
  4. else if (mode == AVX) {
  5. print (L"(256-bit), size = ");
  6. }
  7. else {
  8. #ifdef __x86_64__
  9. print (L"(64-bit), size = ");
  10. #else
  11. print (L"(32-bit), size = ");
  12. #endif
  13. }

笔者的CPU支持SSE2,不支持AVX,故採用128bit的数据位宽进行对应的内存读写操作。



以笔者的机器为例,測试主要分为下面几个部分:



|-------|128bit    |64bit |

|:-----:|:-----:|:----:|

|顺序读  |    |      |

|随机读    |    |      |

|顺序写    |    |      |

|随机写    |    |      |

能够选择是否旁路掉各级cache,笔者机器的CPU cache情况例如以下:

  1. Cache 0: L1 data cache, line size 64, 8-ways, 64 sets, size 32k
  2. Cache 1: L1 instruction cache, line size 64, 8-ways, 64 sets, size 32k
  3. Cache 2: L2 unified cache, line size 64, 16-ways, 4096 sets, size 4096k

用于读写的数据块大小从128B逐渐增大到128MB,因为各级cache的大小不同,进行内存读写时,较小的数据块会存放在cache中,较大的数据块则会经过cache存放在主存中。所以,随着数据块大小的添加,在几个节点上带宽的大小会有明显的跳变,主要原因就是到达了各级cache的容量上限,而转向下层存储。bandwidth会将測试结果生成一个日志文件,一张图表,这样的带宽的跳变在图表中有最直观的表现。如图,在32KB与4MB处带宽有明显的下降趋势

Bandwidth内存带宽測试工具的更多相关文章

  1. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  2. ubuntu 14.04 LTS 安装webbentch压力測试工具

    近期在做 压力測试工具,除了apache的ab測试工具外,发现webbentch工具也不错,这里简介下这两个工具. 一.webbentch安装: wget http://blog.s135.com/s ...

  3. MySQL Study之--MySQL压力測试工具mysqlslap

    MySQL Study之--MySQL压力測试工具mysqlslap 一.Mysqlslap介绍     mysqlslap是MySQL5.1之后自带的benchmark基准測试工具,类似Apache ...

  4. Android性能測试 一些适用于Android Studio的代码审查和性能測试工具

    导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,因为QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进 ...

  5. 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)

    作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...

  6. php性能优化(一)压力測试工具篇

    ab使用 Apache附带的压力測试工具ab,很easy使用,而且全然能够摸你各种条件对Webserver发起測试请求.ab能够直接在Webserver本地发起測试请求.这对于须要了解server的处 ...

  7. UnityTestTools測试工具

    由于工作关系,要了解Unity上的測试工具,该工具基于Nunit框架.通过查阅资料了解到在Unity5.3中做出了一些改变,自带的仅仅剩下单元測试工具,假设想用其它的工具比方断言.集成測试,就须要前往 ...

  8. Java单元測试工具JUnit 5新特性一览

    Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ...

  9. webbench压力測试工具

    apache的測试工具ab 在并发100个以上后会出现错误.网上也有非常多改ab源代码来解禁的. 只是还是推荐一款比較好用的压力測试工具webbench wget http://blog.zyan.c ...

随机推荐

  1. 微软http api说明书地址

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa364622(v=vs.85).aspx https://msdn.microso ...

  2. hibernate Annotation 以及注解版的数据关联 4.4

    目的是不写xxx.hbm.xml映射文件,使用注解 主配置文件还是要有hibernate.cfg.xml <?xml version="1.0" encoding=" ...

  3. php 判断是否登录

    <?php // 本类由系统自动生成,仅供测试用途 class IndexAction extends Action { public function _before_index(){ //做 ...

  4. cocos2D(二)---- cocos2D文档的使用

    在使用cocos2d进行游戏开发的过程中,难免要查阅cocos2d的API文档.搞清楚怎么使用某个类或者某个方法.幸运的是,cocos2d的作者已经在源码里面加入了文档凝视,我们仅仅须要使用文档生成工 ...

  5. 异常关闭MyEclipse 8.6后,不能重启

    删掉这两个文件.

  6. js模态窗口

    最近在看js,正好公司用的框架中用到了模态窗口,以前没有接触过,现在把模态窗口的用法先记下来. 常用的浏览器chrome,Firefox,ie11,这三种分别支持document.open(),win ...

  7. .NET C#操作文件系统数据的常用方法总结 part1

    目录导航 1.0开启文件隐藏属性 1.1开启文件夹只读属性 1.2输出子文件夹路径 1.3统计文件数目 1.4批量重命名文件 1.5分割文件 1.6拼接文件 1.7读取用逗号分割的值 1.8读写压缩数 ...

  8. 06-C语言运算符2

    目录: 一.类型转换 二.条件运算符 三.逗号运算符 四.运算符优先级 回到顶部 一.类型转换 1.类型升级,浮点型高于整型,长整型高于整型,有符号与无符号取有符号. 2.在C语言中,类型转换没有提示 ...

  9. 关于jsonp(~~原理和理解)

    JSON和JSONP 与XML相比,JSON是一个轻量级的数据交换格式.JSON对于JavaScript开发人员充满魅力的原因在于JSON本身就是Javascript中的对象. 例如一个ticker对 ...

  10. Cognos 图表用图片取代”没有数据显示”

    在Cognos中做出来报表展示的时候因为没有数据感觉显示“没有可用数据”感觉很不美观.所以想用一张图片代替. 在图表的属性里面有一个“无数据内容”,点击打开之后有三个选项: 默认就是显示“没有可用数据 ...