相信大家都知道固态硬盘(SSD)的优势在于速度比传统的机械硬盘(HDD)要快,所以现在线上服务器里越来越多看到固态硬盘的出现。不过作为一个对性能数字斤斤计较的开发,我想更精确地弄明白搭载SSD的服务器在IO性能上比搭载HDD的究竟快多少,顺序IO情况下快多少,随机IO情况下又能快多少?终于在最近抽空搞了一次性能测试对比。

1

测试环境

分别找了两台服务器,其磁盘都是Raid阵列,分别是搭载SSD和HDD,更详细的配置如下:

HDD实机:Raid卡型号是PERC H730 Mini,1GB RAM缓存;4块500GB SSD组成的raid5,可用容量1.3TSSD实机:Raid卡型号同上,7块300G HDD硬盘组成的Raid5,可用容量1.6T

好了,比赛选手已经就位,再选择压测工具fio。指定比(压)赛(测)规(参)则(数)如下:IO引擎:为了给硬盘充分施压,选用异步方式libaio

PageCache:为了更接近磁盘本身性能,开启Direct参数绕开Linux系统的内存缓存

压测对象:稳妥起见,没有使用裸设备,用的文件

文件大小:100GB,因为我的Raid 卡缓存是1G,保证远远大于缓存

调度策略:选择常见的noop

对比测试正式开始。

2顺序读取PK

我们先进行顺序访问下的测试,因为这个环境下无论是机械硬盘,还是固态硬盘,性能都将会是最优的。IO大小从512K一直到1M。

先来看一下机械硬盘:

在固态硬盘下:

这个数据看来,在顺序IO情况下,其实搭载HDD的服务器IO性能并没有被搭载ssd的落下太多。这是因为顺序IO的情况下,RAID卡的命中率高,尤其是设置了RAID预取

本身顺序IO也是机械磁盘工作最擅长的状态

所以,现代在服务器领域里,SSD只是应用越来越多了,但并没有能够全面替代HDD。原因之一是因为机械硬盘的顺序IO其实并不慢,再加上Raid的加持,所以还有很大的市场占比。比较完了顺序IO,我们再来比较另外一个应用场景,随机IO。

3随机读取PK

还记得开头的fio压测参数中我们把Page Cache给禁用了,再加上测试文件的大小定的是100GB,这个大大超过了Raid卡的缓存大小。所以基于这个前提下的随机IO,各级缓存基本都失去用武之地了,IO表现速度就完全看硬盘自身了。

在《机械硬盘随机IO慢的超乎你的想象》中,我们看来机械硬盘的随机IO的表现真的是太糟糕了。

再来看搭载SSD的服务器IO表现:

对比来看,机械硬盘的随机IO的速度可真的不是一般的慢,我们挑选上述结果中最被业务认可的4K IO size来看。带宽角度看,只有不到1M的吞吐,

延迟角度看,在4.4ms左右

再看固态硬盘下的4K IO Size下的表现。带宽角度看,仍然有32M,比HDD能快几十倍

延迟角度看,大约120us左右。比HDD,就是4400:120,也是几十倍的提升

4结论

在服务器级别的机器上,因为有Raid卡缓存的加持,顺序IO的情况下,基于HDD组成的Raid阵列服务器在IO性能上并没有太落下风。

但是在随机读取的场景下,无论带宽还是延迟指标,SSD都要比HDD快几十倍以上。所以在服务器中应用SSD,更主要解决的是随机IO的问题。所以如果你的服务器里存在过多的Page Cache,Raid卡缓存都兜不住的随机IO请求,那么请把HDD更换成SSD吧。

java开发用固态还是机械硬盘_搭载固态硬盘的服务器究竟比搭机械硬盘快多少?...相关推荐

  1. 服务器机械硬盘速度快,搭载固态硬盘的服务器究竟比机械硬盘快多少

    相信大家都知道固态硬盘(SSD)的优势在于速度比传统的机械硬盘(HDD)要快,所以现在线上服务器里越来越多看到固态硬盘的出现.不过作为一个对性能数字斤斤计较的开发,我想更精确地弄明白搭载SSD的服务器 ...

  2. java开发可重用代码包工具包_[Java教程]彻底搞懂Java开发工具包(JDK)安装及环境变量配置...

    [Java教程]彻底搞懂Java开发工具包(JDK)安装及环境变量配置 0 2021-01-04 04:00:04 安装并配置JDK环境变量,不但要知道怎样做,也要知道为什么这样做,知其然知其所以然. ...

  3. Java开发专业通过swot分析岗位_掌起智能科技 | 你们要的安卓岗位来了,还有JAVA,技术经理等岗位...

    成都IT内推圈成立于2016年,专注成都IT互联网领域的招聘与求职;覆盖精准IT人群10W+,通过内推圈推荐且已入职人数超过5000+,合作公司均系成都知名或靠谱公司. 此公众号每天7:30AM准时推 ...

  4. Java开发专业通过swot分析岗位_南昌招聘 | 江西江中食疗科技公司9大岗位招聘(月薪6000+、五险一金等福利)...

    点击  南昌招聘通关注哦 ☀关注南昌招聘通,汇集南昌招聘信息,含盖南昌人才网,南昌招聘会,南昌招聘网.南昌优秀企业.事业单位.店铺.团体等优质工作岗位及招聘信息,南昌求职找工作和南昌兼职资讯平台- 温 ...

  5. 虚拟机黑裙加载硬盘_虚拟机黑群晖拯救实体黑群晖硬盘数据-全网首发。

    来吧兄弟,一起玩一起讨论! 您需要 登录 才可以下载或查看,没有帐号?注册 x 本帖最后由 woshiwaxiu 于 2015-8-5 15:01 编辑 昨天,黑群晖突然监测不到了,反复重启,发现原来 ...

  6. java开发有不加班的吗_千万不要相信程序员在加班时间写的代码!

    作为一个最底层的程序员,我先记录一些只有底层程序员才会知道的事情.如果多年后,我违背自己进入这个行业的初心,走上管理岗位,也能回想起一些禁忌,避免一些错误. 其中最重要的就是这条:不要相信一个程序员在 ...

  7. java开发微信如何维护登录状态_微信小程序中做用户登录与登录态维护的实现详解...

    总结 大家都知道,在开发中提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户 ...

  8. java开发是否用数字表示是_每日一学之Java开发技巧(一)

    BigDecimal运算 浮点数运算的典型实例是货币运算,在商品金额的计算中,经常会设计小数运算由于计算机中所有数字都是使用二进制进行存储,而二进制无法精确的表示所有的小数,因此常使用BigDecim ...

  9. java开发的增查改删_在Java中实现增、删、改、查功能?

    //添加操作    public void btnInsert_actionPerformed(ActionEvent e) {        String name = this.txtName.g ...

  10. java开发有必要刷leetcode吗_刷 leetcode 需要哪些基础?

    首先要知道 基础的数据结构:数组.字符串.树.堆.栈.队列.哈希表 基础的算法: 枚举遍历, 二分查找,递归,回溯 明白基础的数据结构之后,我们可以发现 leetcode上已经做好了分类, 首先我们要 ...

最新文章

  1. Tensorflow学习资源
  2. 这 100 个心理学知识你必须了解
  3. Curl中的参数知多少
  4. 软件工程第二次作业——模仿主流网站:搜狗输入法
  5. python中双冒号[::]切片的作用
  6. 培训第二弹 全国大学生智能汽车竞赛百度竞速组预告
  7. 数据库框架的log4j日志配置
  8. 吴晓然:实时通信需要Codec和网络模块结合
  9. php程序里的configini_PHP: 配置文件 - Manual
  10. c#中判断对象为空的几种方式(字符串等)
  11. iOS开发--添加定位功能
  12. wordpress如何去掉顶部工具条
  13. 采集侠-免费采集侠-免费采集侠插件
  14. 【大咖有约】58同城孙玄:58同城从MongoDB到MySQL迁移之路
  15. C语言自学笔记(16)
  16. 第一章课后习题源代码(笔记自用)
  17. 计算机的系统更新速度,Windows 10更新后变慢了?5种方法解决Windows变慢问题
  18. 每天一大杯可乐,会不会骨质酥松哇?
  19. flex布局: 每行显示n个div块,第n+1个自动换行显示
  20. 怎样查询自己正在上网的路由器的IP地址?网络节点跟踪命令tracert的用法

热门文章

  1. C++实现端口扫描器
  2. STM32CubeMX | | 使用小熊派串口驱动峰汇ETH-01以太网模块上传数据到OneNet
  3. 深入理解Flash的沙箱 – Application Domains
  4. 电脑测网速c语言,C层实现多线程测网速
  5. mysql删除表数据及其关联数据_MYSQL中delete删除多表数据与删除关联数据
  6. 波士顿大学 计算机专业,波士顿大学本科计算机专业课程设置是怎样的?
  7. 移动SI:如何开拓企业客户市场?
  8. ligerUI合并单元格
  9. jave wed 2
  10. 【史玉柱自述:我的营销心得】-成功的牛人其实都有许多你不知道的技能