【虚拟化实战】存储设计之五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的更多相关文章

  1. SpringCloud Alibaba实战(3:存储设计与基础架构设计)

    1.存储设计 在上一章中,我们已经完成了基本业务流程的梳理和服务模块的划分,接下来,开始设计数据存储. 虽然在微服务的理论中,没有对数据库定强制性的规范,但一般,服务拆分之后,数据库也会对应的拆分. ...

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

    五.搭建Window Server 2012虚拟化的存储网络 前文我们讨论了Window Server 2012支持的各种与存储相关的技术,接下来我们通过实践对其中的一些技术进行检验.实际上Windo ...

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

    在计算机世界我们随处可以见的一种方法,那就是抽象.1946年冯诺依曼提出了计算机的基本结构包含:计算器,存储器和I/O设备.这可能是对计算机这一新生事物最重要的一次抽象,它直接影响了今后几十年计算机软 ...

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

    关于Windows Server的虚拟化网络,前文描述了在操作系统层面上的出现的配置变化.其中的一些配置通过Windows Server提供的小工具即可实现,如网卡组的配置,而有些需要安装Window ...

  5. Kafka#4:存储设计 分布式设计 源码分析

    https://sites.google.com/a/mammatustech.com/mammatusmain/kafka-architecture/4-kafka-detailed-archite ...

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

    Docker虚拟化实战学习——基础篇 2018年05月26日 02:17:24 北纬34度停留 阅读数:773更多 个人分类: Docker   Docker虚拟化实战和企业案例演练 深入剖析虚拟化技 ...

  7. 云课堂Android模块化实战--如何设计一个通用性的模块

    本文来自 网易云社区 . 如何设计一个通用性的模块 前言 每个开发者都会知道,随着项目的开发,会发现业务在不断壮大,产品线越来越丰富,而留给开发的时间却一直有限,在有限的时间,尽快完成某个功能的迭代. ...

  8. EventStore文件存储设计

    背景 ENode是一个CQRS+Event Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删 ...

  9. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

随机推荐

  1. 八皇后问题 --- 递归解法 --- java代码

    八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上.八皇后 ...

  2. CSS学习进度备忘

    书签:“CSS 高级”跳过:另外跳过的内容有待跟进 __________________ 学习资源:W3School. _________________ 跳过的内容:1.“CSS id 选择器”的“ ...

  3. WMI使用的WIN32_类库名

    WMI使用的WIN32_类库名 包括:硬件类.操作系统类.安装应用程序类.WMI服务管理类.性能计数器类1.硬件类冷却类别Win32_Fan--风扇Win32_HeatPipe--热管Win32_Re ...

  4. 字符串和数组中split().toString(),join(),splice(),slice(),substr()和substring()

    <!Doctype html> <head> <mate charset="utf-8"> <title>string change ...

  5. Linux文件系统 (Ubunt)

    Linux 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储 ...

  6. RSS阅读器&BT sync

    ①RSS阅读器? 答:RSS阅读器是一种软件或是说一个程序,这种软件可以自由读取RSS和Atom两种规范格式的文档,且这种读取RSS和Atom文档的软件有多个版本,由不同的人或公司开发,有着不同的名字 ...

  7. URAL-1997 Those are not the droids you're looking for 二分匹配

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1997 题意:记录了n个人进出门的时间点,每个人在房子里面待的时间要么小于等于a,要么大于 ...

  8. T-SQL 批处理

    批处理简介 批处理是作为一个逻辑单元的T-SQL语句.如果一条语句不能通过语法分析,那么不会运行任何语句.如果一条语句在运行时失败,那么产生错误的语句之前的语句都已经运行了. 为了将一个脚本分为多个批 ...

  9. 转】Mahout推荐算法API详解

    原博文出自于: http://blog.fens.me/mahout-recommendation-api/ 感谢! Posted: Oct 21, 2013 Tags: itemCFknnMahou ...

  10. MYSQL数据库重点:流程控制语句

    1.BEGIN ... END复合语句:包含多个语句.statement_list 代表一个或多个语句的列表.statement_list之内每个语句都必须用分号(:)来结尾. [begin_labe ...