浅谈存储负载应用类型和特点
浅谈存储负载应用类型和特点
部署存储系统时,经常需要综合评价工作负载,从而进行存储系统的调优。本文简单总结了几个典型的工作负载及其特点,方便在系统调优时做一些参考。
通常情况下,我们大多数人都会考虑如下几个方面:
IOPS:I/O速率
Latency:时延
I/O Size:I/O块大小
R/W Ratio:读写比
R/S Ratio: 随机顺序比
但是我们经常忽略以下几个方面:
Cache Hit Ratio:缓存命中率,基本上指的是读缓存的命中率,因为写操作基本上都会先写到写缓存上。这个参数将会影响系统的响应时间。
Write Efficiency:写效率,指的是一块数据在落盘之前,被重复写的次数。在一些数据库应用的负载中,有时候数据刚刚被写入,继而又会被读出来,然后再修改,如此反复多次。
典型OLTP负载型应用
Online Transaction Processing联机事务处理过程, 是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。 例如银行的存取款业务,股票交易业务等。 其负载特点是IO size在16k以下,读比例在70%左右,缓存命中率在20%以下,随机比例大于50%。
90% read, 8 - 16 - 32 - 64 KB blocks, 30% sequential, 30 - 40% cache hit
80% read, 16 - 32 - 64 KB blocks, 40 - 50% sequential, 50 - 60% cache hit
Microsoft Exchange Server负载型应用
Exchange的负载类型与OLTP很相似,最大的差异在IO size上。其IO size最大可到128k,写比例可达60%。因此在考虑此应用时,要在OLTP的基础上适当加大IO size和写比例。更加详细的介绍可参考微软官方文档:http://technet.microsoft.com/en-us/exchange/dd203064
顺序读写负载型应用
此负载类型最典型的就是在磁带系统中用到,当然机械硬盘和闪存系统中也会碰到。由于读写是顺序的,因此在数据的预处理和缓存上可以达到很好的优化,而且IO size也会比较大,在256k甚至更大。顺序读写的应用,其实对响应时间要求不高,IOPS也要求不大,反而是对系统带宽有较大的要求。因此测试此类应用时,应该着重测试系统的带宽。以下几个场景中比较符合顺序读写的负载类型:
备份/恢复
数据库日志
批处理应用
文件服务
网页服务
流媒体服务
图像应用
批处理型负载应用
此类型属于混合型读写,需要同时保证随机,间断顺序,纯顺序,和分类型读写数据类型。数据块大小偏大,大约在128k-256k。读写比例将近1:1,相同的卷出现同时读写的比例较高,需要较大的IOPS,和保证一定的带宽。
缓存友好型负载应用
可以用缓存命中率来衡量一个应用是否属于缓存友好型负载,但这并不是很容易,因为一个应用可能在运行中不断的改变其特点。例如数据库中,当用户使用数据时,就是缓存友好型,因为数据库会将用户的载入到缓存中;但当跑批处理或者生成报告时,数据的访问变得非常随机,此时就属于缓存不友好型。
简单的识别方法是分析数据的访问的随机性,一般而言,随机访问的缓存命中率比较低,可以近似为缓存不友好型。顺序性的负载基本上是缓存友好型。还有一点是写操作型的负载基本上也是缓存友好型,因为每个写操作都会先到缓存,经过一定处理后,最终才集中落盘。
数据库查询型负载应用
这种负载也是一种典型的负载,其特点有:
较高的读比例
较大的随机性
较小的IO size
但现在大部分的数据库应用都会有读缓存的优化算法,可以将随机的读写操作最大化的接近顺序读写,因此在测试的时候,也要加入顺序读写操作来模拟真实负载。
数据库日志型负载应用
日志系统也是数据库必备的,主要是保证数据一致性和用于数据恢复。此类负载主要是写操作,顺序性负载,块大小在64k左右,对IOPS和带宽有一定的要求,但不大。因此这类应用负载是比较容易模拟和调优的。
数据库交互环境型负载应用
这种负载类型主要出现在多个数据库进行交互时,其主要特点有:
较低的缓存命中率
较低的读写比例
较高的随机性读
表1总结了一些典型应用:
表1 部分数据取自IBM Storage Redbook,? Copyright International Business Machines Corporation 2016.