【虚拟化实战】存储设计之六latency

【虚拟化实战】存储设计之五IOPS中我们讲了评估存储性能的三个关键指标。也就是Throughput,IOPs和latency。以及三者之间的关系。本文深入介绍Latency过高的原因和一些建议。

Latency过高直接导致在该存储上运行虚拟机以及其应用的性能降低。最终用户可能抱怨程序打不开,运行慢,响应时间长等等。

一   如何衡量Latency?

Latency或者respondingtime,指完成一个IO请求所需要的时间。往往以milliseconds来衡量。

应用端发出的一个IO请求,大致要经过以下各层才能最终抵达存储设备。

使用esxtop可以得到以下的数据


Column


Description


CMDS/s


在大多数情况下这个值就是IOPS的值。指的是每秒钟发出的IO请求。


DAVG/cmd

(Device Average Latency)


每个请求经过物理硬件,HBA和存储设备所需的平均响应时间。以毫秒计算。一般20-30ms可以接受.


KAVG/cmd

(Kernel Average Latency)


平均每个请求经过VMkernel层处理所需的时间。一般为0.如果超过2ms,可能会影响性能


QAVG

(Queue Average latency)


平均每个请求经过vSphere存储堆栈所需的时间。当队列很长时,每个请求等待的时间也较长。


GAVG/cmd

(Guest Average Latency)


平均每个请求最终所得到响应时间,也就是虚拟机操作系统所得到值

DAVG + KAVG = GAVG

一般20-30ms可以接受。这对于latency Sensitive很高的应用,要求这个值尽可能低。比如有些关键的数据库操作,大于5ms可能都不能保证Transaction的成功完成。

 

二    latency过高原因分析:

存储设计不能满足需求,请参见我以前的文章TBD一文

一个常见的误区是仅仅考虑所需容量,没有充分考虑到IOPS/Latency/Throughput等影响性能的因素。比如应用需要10T的容量,有可能需要购买20T甚至更多的存储来满足性能需求。应该与存储厂商充分讨论一个合理的方案及细节。比如采用什么RAID,阵列中DiskSpindle的个数,什么类型的存储硬盘。

设计充分考虑该存储所支持的应用。很多应用都有不同的特性,比如I/O Size,读写操作的比例等等。应针对其特性来设计适当的存储方案。

有很多工具可以搜集分析数据和压力测试,从而帮助你了解目前存储的能力。比如VMware I/O Analyzer,IOmeter,LoginVSI,Solarwinds

I/O 队列拥塞


从上图可以看到从上到下的四层都有队列。队列中等待执行的任务越长,意味着更长的响应时间。

在ESXi主机层的队列过长,直接导致KAVG数值过高。

在HBA和存储阵列的队列过长,导致DAVG数值过高

先拿ESXi主机这一层来说,LUNQueue Depth决定了在同一时间可以对某个LUN发起的ActiveCommand 数量。ESXi缺省值是32. 所有虚拟机发起的ActiveCommands的总数最好不要持续超过LUNQueue Depth.     虽然LUNQueue Depth可以最大增加到64,但一般还是建议使用缺省值。

比如有多个I/O intensive的虚拟机在同一个LUN的时候,需要考虑把部分虚拟机转移到其他LUN以避免ActiveCommands的总数持续超过LUNQueue Depth,从而造成延时。

HBA这层也有队列,通常4,000commandsper port 或者更高。所以一般瓶颈不在HBA层。

存储带宽饱和

考虑HBA卡的支持的带宽,以及采用多路径来对负载分流。避免请求经过物理硬件,HBA和存储设备所需的平均响应时间过高。

 

参考:

PerformanceLinks

VMUG Presentation - Troubleshooting StoragePerformance

TroubleshootingStorage Performance in vSphere – Part 1 – The Basics

http://www.vmware.com/files/pdf/techpaper/VMW-Tuning-Latency-Sensitive-Workloads.pdf

【虚拟化实战】存储设计之六latency,布布扣,bubuko.com

时间: 2024-10-14 09:27:40

【虚拟化实战】存储设计之六latency的相关文章

【虚拟化实战】存储设计之七Block Size

作者:范军 (Frank Fan)新浪微博:@frankfan7   微信:GetToCloud 在实战存储设计之六Latnecy我们介绍Latency过高的原因和一些建议.本文重点分析Block Size对性能特别是latency的影响. 什么是Block Size? Block Size这个词在不同的语境中有不同含义.在此文中指的是在OS中运行的应用发出一个IO读或写请求所传送的数据单元的大小.无论你采用传统存储架构,还是融合,超融合等架构,IOBlock Size对性能都有影响. 如同下图

列式存储设计实战

背景: 开发个学生系统,数据库设计. 设计实施: 传统数据库学生表行设计 学号 姓名 性别 年龄 1 张三 男 16 2 李红 女 15 3 王五 男 16 当想扩展属性时,相对应的会增加字段. 学号 姓名 性别 年龄 住址 1 张三 男 16 河南 2 李红 女 15 湖北 3 王五 男 16 北京 实际开发中这样做的缺点: 1:属性字段向主表加,会导致列越来越多,增加表拆分成本. 2:  增加字段,程序中实体模型,SQL查询字段,DTO及文档数据模型都要跟着发生变化,增加成本. 3:查询单个

Windows Server 2012 虚拟化实战:存储(一)

在计算机世界我们随处可以见的一种方法,那就是抽象.1946年冯诺依曼提出了计算机的基本结构包含:计算器,存储器和I/O设备.这可能是对计算机这一新生事物最重要的一次抽象,它直接影响了今后几十年计算机软硬件的发展.我们每个人对计算机的计算器,存储器和I/O设备都有不同的认知,你可能不认识所有计算芯片,不了解各种存储设备和输入输出设备,但是这绝对不会阻碍你区分出它们来.计算机系统中的各个部分可能是不可或缺的,但一定是可以替换的,这就是抽象的力量.没有抽象,我们可能要为每一套硬件开发不同的操作系统,要

Windows Server 2012 虚拟化实战:存储(二)

五.搭建Window Server 2012虚拟化的存储网络 前文我们讨论了Window Server 2012支持的各种与存储相关的技术,接下来我们通过实践对其中的一些技术进行检验.实际上Window Server 2012虚拟化并不一定需要诸如NAS或者SAN之类的第三方存储,利用服务器的内的本地磁盘也同样可以部署Window Server 2012虚拟化的基础架构SCVMM(System Center Virtual Machine Manger).但是虚拟化本质上追求的是可伸缩性和高可用

Windows Server 2012 虚拟化实战:网络(二)

关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化.其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Windows Server的服务器角色,如Hyper-V,然后通过Hyper-V Manager或者其命令行工具来配置虚拟交换机.但是要进行全局配置管理和实现一些高级功能,就需要接下来介绍的主角System Center Virtual Machine Manager(SCVMM).关于SCVMM的安装和部署

采用[ICONIX] 方法实践分析和设计之六 [时序图](转)

采用[ICONIX] 方法实践BLOG设计之六 [时序图] 在前几篇文章中,我们分别进行了域模型和用例建模,并使用 Robustness工具进一步分析验证了相应用例的处理流程,并在相应模型(域模型)的基础上,通过Robustness方法引入相关的边界对象,控制对象(控制器),并更新了相应域模型中类的属性(字段).下面就可以进入到交互建模阶段了.如下图:    作为交互建模本身,就是要通过寻找对象之间的交互关系,进而进行方法(操作或行为)分配.    正所谓"只有在所有的用例为所有事件进程建立了交

云计算学习(4-3)虚拟化技术-存储虚拟化

云计算学习(4-3)虚拟化技术-存储虚拟化 存储虚拟化:统一存取接口,屏蔽物理实现. 本地存储:本地硬盘 光纤FC存储:光纤 ISCSI存储:TCP/IP NFS存储:TCP/IP,NAS 分布式存储:FunsionStorage,能够形成存储池,像普通设备一样提供稳定的存储服务. 虚拟化存储:用文件系统屏蔽了底层设备差异,能够提供高级特性. 非虚拟化存储:没有高级特性,但性能更好. 裸设备映射: 优点: 精简配置:能够让虚拟磁盘不必一次占用所有空间,而是随使用逐渐增长. 快照:用来快速备份和恢

SoC嵌入式软件架构设计之六:API设计方法

在嵌入式系统中,驱动都是以API的方式提供给应用进行调用.这里介绍嵌入式系统的API设计和管理方法. 驱动在系统中会按模块进行分类,例如按键驱动.LCD驱动.文件系统.card驱动.I2C驱动等等:每个模块又有多个接口,例如LCD驱动有光标定位.画点.画直线等,而文件系统有fread.fwrite.fseek.fopen等接口.以下举例将以文件系统的fopen为例,工具链为mips. 一.API设计方法 1. 驱动接口声明:extern FILE * fopen(const char * pat

Docker虚拟化实战学习——基础篇(转)

Docker虚拟化实战学习--基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker Docker虚拟化实战和企业案例演练 深入剖析虚拟化技术概念和应用场景 虚拟化,一是项技术--,是一种资源解决方案. 虚拟化技术是将物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,使计算元件运行在虚拟的基础上,而不是真实的物理资源上. 通过虚拟化技术,可以将物理资源转变为逻辑资源(虚拟机),应用程序服务运行在虚拟资源上,而不是真实的物理机上.