设为首页 收藏本站
查看: 1293|回复: 0

[经验分享] AWS EBS Magnetic(standard)磁盘性能测试

[复制链接]

尚未签到

发表于 2019-2-3 11:57:06 | 显示全部楼层 |阅读模式
  背景
  最近公司的一台实例类型为m5.2xlarge(8个vCPU,32G的Memory)的机器磁盘性能不行,于是需要做个磁盘性能测试。这里使用fio测试工具。
  

  1.AWS磁盘类型简介
  AWS EC2 instance 目前EBS有5种类型,分别是gp2,io1,st1,sc1,standard. 笔者只介绍standard,其他四种可自行上网了解。
  
  standard是AWS上一代的volumn HDD类型,卷大小1G-1T,最大IOPS 40-200,最大吞吐量40-90M/s;
  

Previous Generation VolumesVolume TypeEBS MagneticDescriptionPrevious generation HDDUse CasesWorkloads where data is infrequently accessedAPI NamestandardVolume Size1 GiB-1 TiBMax. IOPS/Volume40–200Max. Throughput/Volume40–90 MiB/sMax. IOPS/Instance80,000Max. Throughput/Instance1,750 MiB/sDominant Performance AttributeIOPS  

  2.fio工具简介,安装
  (1)fio是专门用来测试磁盘性能的一种好用工具,有顺序读,顺序写,顺序读写,随机读,随机写,随机读写等模式,本篇只测试顺序读和随机读,不测试写。
  
安装fio非常简单,直接使用yum install -y fio即可。
  注意
  使用fio测试写的时候,会损害磁盘上已经存在的数据,严重的话会导致系统奔溃,起不来。
  (不要问我为什么知道,因为这是血和泪的教训,笔者曾把一台已有数据的EC2实例磁盘测试死掉,包括根磁盘和数据盘两块盘,最后怎么都起不来,辛亏有AMI可以恢复。)
  (2)常用参数介绍
  filename=/dev/sdb1       指定测试的文件设备
  directory 存储文件的目录
  direct=1                 测试过程绕过机器自带的buffer,使测试结果更真实。
  bs=16k                   单次io的块文件大小为16k
  size=2g                  指定测试文件大小为2g,不指定这个参数,默认是当前磁盘的全部大小
  numjobs=30               指定测试线程为30.
  runtime=1000 测试时间为1000秒
  time_based=1              : Keep running until runtime/timeout is met
  ioengine=psync           io引擎使用pync方式
  rw=randwrite             测试随机写的I/O
  name  指定这次job的名称
  iodepth : Number of IO buffers to keep in flight
  randrepeat            : Use repeatable random IO pattern
  --output=test.sql  将结果输出到指定文件中
  allow_mounted_write=1 允许写入测试
  rwmixread               : Percentage of mixed workload that is reads
  rwmixwrite              : Percentage of mixed workload that is writes
  rw值:
  read 顺序读
  write 顺序写
  randread 随机读
  randwrite 随机写
  rw或readwrite 顺序混合读写
  randrw 随机混合读写
  
3.测试脚本

  为了便于测试和收集结果,笔者写了个简单的测试脚本如下:
#!/bin/bash
. ~/.bash_profile
set -u
set -x
set -e
BASEDIR=/usr/local/fio
cd $BASEDIR
exec 3>&1 4>&2 1>> fio.log 2>&1
FILENAME=/dev/nvme2n1p1
DIRECT=1
#RW=read
RWS="read randread"
RANDREPEAT=0
IOENGINE=libaio
BSS="8 16 32 64 128 256 1024"
IODEPTH=8
TIME_BASED=1
RUNTIME=180
NAME=read
for rw in `echo "${RWS}"`
do
  for bs in `echo "${BSS}"`
  do
  /bin/fio --filename=${FILENAME} --direct=${DIRECT} --rw=${rw} --randrepeat=${RANDREPEAT} --ioengine=${IOENGINE} --bs=${bs}k --iodepth=${IODEPTH} --time_based=${TIME_BASED} --runtime=${RUNTIME} --name=${NAME} --output=${rw}_${bs}.txt
  sleep 3
  done
done  

  4.测试结果整理分析
bs(K)Read_IOPSRead_BW(MIB/s)Randread_IOPSRandread_BW(MIB/s)
8159312.4168713.2
1696615.195514.9
3295629.991528.6
649115698161.4
12874693.378698.3
256686172711178
1024242243246246
  (1)顺序读和随机读的IOPS对比图

  


  
(2)顺序读和随机读的吞吐量对比图

  
  5.结论
  (本结论仅针对本次实验结果,因为测试样本不足可能导致测试结果不准)
  (1)吞吐量=IOPS*bs/1024
  (2)顺序读和顺序写IOPS和吞吐量差距不大。
  (3)磁盘的吞吐量存在瓶颈250MIB/s,如果需要更高性能的BW,可以考虑使用AWS推荐的gp2。
  

  参考链接
  Amazon EBS Volume Types
  Benchmark EBS Volumes




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-671267-1-1.html 上篇帖子: EBS 替代接收实例、sql查询及接口程序 下篇帖子: Oracle metalink 中文文档列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表