微信号:dellemc_tech

介绍:为戴尔易安信客户提供技术支持服务,为广大IT行业用户分享技术文章与行业信息。

决定存储工作负载特征的几个要素和测量方法

2016-08-03 17:27 EMC中文技术社区

      存储的工作负载通常可以被分解成几个要素:随机的还是顺序的IO、大还是小的IO请求尺寸、读写请求的占比以及并发请求数。这些要素决定了你的工作负载是如何与存储组件交互的,并且最终决定了在给定的配置下,系统的运行性能。本文将介绍这些工作负载特征,帮助理解它们是如何影响到现实的存储系统的。


      注:本文的主要内容基于传统的机械硬盘(磁盘)。固态硬盘(SSD)相比传统硬盘取消了机械结构,其特征和最佳工作负载也有了很大不同,将在以后的文章阐述。

 

随机的还是顺序的访问:

 

      首先我们记住一个公式:IOPS = 1000 / (寻道时间+旋转延迟)


      寻道时间是指将读写磁头移动至正确的磁道上所需要的时间。从公式可以得出,寻道时间越短,I/O操作越快,IOPS就越高。


      旋转延迟是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 RPM的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 RPM的磁盘其平均旋转延迟为2ms。


      注:事实上还有一个传输时间(同样位于公式的分母),即完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。由于主流的SAS、SATA接口数据传输率的不断提升,数据传输时间通常远小于前两部分消耗时间,简单计算时可忽略。


   想提高存储的IOPS性能,就要想办法减小分母上的数值。由于旋转延迟是固定的(除非购买更快转速的磁盘),所以唯一存在的变量就是寻道时间。很容易理解,顺序的工作负载越多,磁头需要(大幅度)移动的机会就越少,寻道时间也就越少。高度顺序性的工作负载最终的结果就是更快的磁盘响应时间和更高的数据吞吐量(throughput)。顺序的工作负载对于较慢的磁盘和RAID类型是一个不错的选择(如RAID 5、6);而高度随机的负载更适合较快的磁盘和RAID类型(如RAID 10)。还有一种减少寻道时间的技术称为“磁盘短行程技术”(short stroking),即将数据存放在磁盘外缘的轨道上,从而减少寻道时间。类似的技术包括快道技术(fast track)、放射性数据部署技术(radial placement)等。


  顺序的工作负载类型有磁盘备份和SQL transaction日志文件写入等。顺序的负载类型包括OLTP数据库访问和Exchange Information Store的读取访问。但多数大型的应用都是混合了顺序与随机的读写负载,比如VMware vSphere虚拟化环境。

 


IO请求尺寸:

 

      IO请求大小也是工作负载的一个重要因素。一般而言,大的读写IO请求比小的IO在一定程度上更有效率。更大的IO请求(比如64KB相比2KB)可以得到更高的数据吞吐量和更少的处理时间。 大多数工作负载限制了IO大小,但是了解应用的IO尺寸可以帮助你决定合适的存储系统参数,如阵列的条带大小(stripe size)和文件系统簇大小(cluster size)。关于这方面的设定,建议参考应用厂商和存储厂商的推荐配置文档。


      如果是Windows服务器,可以使用性能检测工具perfmon中的Avg. Disk Bytes/Read计数器来查看平均的 IO尺寸。如果是VMware虚拟化工具,可以使用官方的vscsiStats工具(见下文)。

 


读写占比:

 

      每一种工作负载都由不同数量的读写操作组成。有时一些特定的负载,比如Exchange可以被分解成几个子负载:写密集型的日志记录和读密集型的数据库访问。了解负载的读写占比可以帮助你设计底层的存储系统。由于RAID写惩罚的存在,一个写密集型应用在RAID 10的LUN比在RAID 5上要表现得更好。这方面的内容可以阅读论坛之前的文章:

      如何计算IOPS?

      浅谈RAID写惩罚(Write Penalty)与IOPS计算

 


并发的和待处理IO:

 

      一些工作负载支持多线程的IO请求。这些负载会对存储系统造成极大的压力(无论是IOPS还是吞吐量),所以在设计时必须注意。多路径(multipathing)软件可以提升多线程环境下的效能。一个典型的VMware vSphere环境就是支持多线程待处理IO请求队列的实例。

 


如何测量工作负载特征:

 

      那么如何测量应用和存储的工作负载特征呢?首先可以寻求厂商的帮助,包括应用、操作系统和存储设备厂商。操作系统自带的一些工具比如Windows Performance Monitor可以获取一些参数(使用Windows Perfmon看存储性能问题)。存储端的软件比如EMC的Unisphere Analyzer通常可以拿到更为详尽的数据(Navisphere/Unisphere Analyzer性能分析工具)。还有很多免费的主机端存储性能测试软件,如IOZone、Iometer、FIO等,它们的功能比较可以看一下之前的讨论:常用免费存储性能测试工具的简单比较。


      VMware的vscsiStats更是一个有针对性的工具。由于所有的IO命令都会经过Virtual Machine Monitor (VMM),Hypervisor可以轻松获得VMware中虚拟机的工作负载特征,这些参数包括:ioLength、seekDistance、outstandingIOs、latency、interarrival等。vscsiStats从ESXi 4.1起就自带了。


  

  

      vscsiStats相关的使用介绍:

      Using vscsiStats for Storage Performance Analysis

      vscsiStats: Fast and Easy Disk Workload Characterization on VMware ESX Server

      Storage Workload Characterization and Consolidation in Virtualized Enviornments

      另外VMware的esxtop工具也能用于存储工作负载和存储性能分析,但它暂时只支持Fibre Channel和iSCSI协议。参考:Using esxtop to identify storage performance issues for ESX / ESXi。


      需要注意的是,使用vscsiStats和esxtop都需要进入到ESXi Shell,即以前的Tech Support Mode模式。方法可以参考VMware文档:Using ESXi Shell in ESXi 5.x。



更多精彩内容,请点击阅读原文”进行查看!

如何每天都能收到如此精彩的文章?

①点击右上角点击查看官方账号”→点击关注

②长按并识别下图中的二维码,直接访问EMC中文支持论坛


 
戴尔易安信技术支持 更多文章 备份和归档的区别 云计算的三种模型:公有云、私有云和混合云 正确描述IO类型 【大咖讲网络】谁动了我的网络 浅析I/O处理过程与存储性能的关系
猜您喜欢 Facebook开源了数据查询系统Presto 拓扑数据分析与机器学习的相互促进 SHELL编程之常用技巧 聊聊代码 | 笨方法使用Kubernetes实现持续交付 iOS 移动开发周报 - 第 47 期