记一次磁盘性能测试
作者:网络转载 发布时间:[ 2013/12/17 10:56:43 ] 推荐标签:
磁盘测试的目的及概述
尽管随着业界发展,处理器速度、内存大小以及I/O执行速度在快速增长,但I/O操作的吞吐量和响应时间仍然比内存访问操作要慢得多。此外,由于很多工作负载都涉及到I/O操作,磁盘I/O很容易成为系统的瓶颈。因此,磁盘读写性能往往是性能测试中一向需要考量的环节。
本次测试目标
本次磁盘性能测试对宿主机和各个规格云主机的磁盘性能做出加压。并重点关注云主机之间的互相影响,以及云主机与宿主机之间的影响。
根据这个思路,设计以下四个测试点。
测试点一:单独测试各规格云主机的性能。一来将测试结果作为基准数据,二来通过对比IOPS与磁盘空间的比例关系来验证磁盘QoS是否起作用。
测试点二:设计宿主机磁盘使用率成梯度负载,测试一台云主机、多台云主机混合场景下的云主机磁盘性能变化。用于得出宿主机磁盘负载对其上云主机磁盘性能的影响。
测试点三:宿主机空闲,云主机之间的互相影响。一台云主机磁盘设计成梯度负载,测试另一台云主机的磁盘变化情况。
测试点四:多台云主机组合加压,使得宿主机的磁盘使用率呈现梯度,在这种场景下,测试宿主机磁盘性能。用于得出云主机磁盘压力对宿主机磁盘性能的影响。
设计测试用例时,应当时刻记住测试目的。先想好要得到什么样的结果,要得到什么样的对比,然后再有针对性的设计用例。做对比时,要保证只有一个参数再变动,如此才能得出这个参数对结果的影响。
工具选取与调研
考虑到用例设计中的各种场景以及想要掌握的资源指标,后选取了Fio作为本次测试的工具。Fio是一个用来对硬件I/O进行压力测试和验证的工具。支持13种不同的I/O引擎,包括:sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等。
在Fio中,可以设置的选项有:
读写方式:随机读、随机写、顺序读、顺序写、随机读写、顺序读写。
文件大小:Fio进行I/O操作时使用的文件大小。
运行时间:一次测试执行的时间,在该时间段内,Fio将不断执行I/O操作。
混合场景读写比例:如果指定为读写操作(读与写操作都有),那么可以指定读与写占的时间比例。
线程数:指定多线程同时执行相同的测试任务。
Fio输出结果中含有iops、延迟时间、磁盘占用率等指标数据。
在本次测试中,通过指定Fio的rate_iops参数,即限定云主机读写的负载,来达到用例中设计的组合场景。
在使用Fio时,可以通过设定job文件,可以实现多条访问规则的顺序执行,进而缩减命令行中的选项长度。
一个job文件可以控制产生特定数目的线程和文件。典型的job文件有global段,一个或多少job段。
运行时,fio从文件读这些参数,做处理,并根据这些参数描述,启动这些仿真线程/进程。
运行job的方式: fio job_file
job文件采用经典的ini文件,[]中的值表示一项job的名称。
监控指标的确定
磁盘I/O的性能经常基于吞吐率和延迟来评估。磁盘驱动器对大数据量顺序传输的处理常常优于小数据量随机传输操作。对于磁盘的监控指标,主要集中在以下三个方面:
测试工具Fio统计的指标:iops,bps(传输速度),延迟时间。
系统cpu相关的指标:%usr,%sys,%iowait,中断次数,上下文切换次数。特别关注cpu0的使用情况。
系统磁盘I/O相关的指标:tps,await,svctm,%util。
上述各项指标含义如下:
IOPS:每秒钟处理的磁盘IO次数,由fio工具统计得出。
BPS:每秒钟处理的数据量大小,由fio工具统计得出。
延迟时间:
%usr:在用户级别运行所使用的CPU的百分比,由mpstat命令统计得出。
%sys:在系统级别(kernel)运行所使用CPU的百分比,由mpstat命令统计得出。
%iowait:因IO导致的进程等待,由mpstat命令统计得出。
中断:CPU中断次数,由vmstat命令统计得出。
上下文切换:CPU的控制权由运行任务转移到另外一个绪任务时所发生的事件次数,由vmstat命令统计得出。
tps:每秒从物理磁盘I/O的次数,由iostat命令统计得出。
await:从设备流出的平均I/O请求时间,包括请求在队列和服务时的时间,由iostat命令统计得出。
svctm:平均I/O请求的服务时间,由iostat命令统计得出。
磁盘util%:磁盘利用率,由iostat命令统计得出。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南