目录
1)IOPS ( Input/Output Operations Per Second)
队列深度(等待被读取或写入到存储磁盘的待处理 I/O 请求数)
https://docs.azure.cn/zh-cn/virtual-machines/premium-storage-performance
1.应用程序性能指标
1)IOPS ( Input/Output Operations Per Second)
IOPS即Input/Output Operations Per Second,是用于衡量计算机存储设备(如硬盘、固态硬盘等)性能的一个重要指标,以下是关于它的详细介绍:
定义
IOPS指的是每秒进行的输入/输出(读写)操作的次数。在存储系统中,一次I/O操作通常是指从存储设备读取或向存储设备写入一定量的数据,这个数据量可以很小,比如一个扇区(通常为512字节或4KB),也可以很大,具体取决于应用程序和系统的设置。例如,数据库系统可能会频繁地进行小数据块的随机读写操作,而视频编辑系统可能会进行大量的连续大块数据的读写操作,这些操作的频率就可以用IOPS来衡量。
影响因素
-
存储设备类型:不同类型的存储设备IOPS性能差异很大。例如,传统的机械硬盘(HDD)由于其机械结构,寻道时间较长,IOPS相对较低,一般在几十到几百IOPS之间。而固态硬盘(SSD)基于闪存芯片,没有机械寻道过程,读写速度快,IOPS可以达到数千甚至数万。
-
接口类型:存储设备与计算机系统连接的接口也会影响IOPS。常见的接口如SATA、SAS、NVMe等,它们的传输速度和协议不同。例如,NVMe协议的M.2接口固态硬盘,由于其高速的传输能力和低延迟,能够提供比传统SATA接口硬盘更高的IOPS性能。
-
队列深度:在存储系统中,队列深度表示同时向存储设备发送的I/O请求的数量。一般来说,随着队列深度的增加,存储设备可以更好地利用其内部资源,并发处理多个I/O请求,从而提高IOPS性能。但当队列深度达到一定程度后,由于存储设备的处理能力限制,IOPS可能不再明显增加,甚至会出现性能下降的情况。
应用场景
-
数据库系统:数据库通常需要频繁地进行随机读写操作,如查询数据、插入记录等。对于在线交易处理(OLTP)系统,高IOPS可以确保数据库能够快速响应大量的并发查询和更新请求,保证系统的性能和稳定性。例如,银行的核心业务系统,每秒可能需要处理大量的账户交易,就需要高IOPS的存储设备来支持。
-
虚拟化环境:在服务器虚拟化场景中,多个虚拟机可能共享同一存储资源。每个虚拟机都可能有自己的I/O需求,高IOPS的存储可以保证虚拟机在进行磁盘读写时不会相互干扰,提高整个虚拟化环境的性能和可靠性。
-
大数据分析:大数据分析应用通常需要处理海量的数据,虽然其读写模式可能以顺序读写为主,但在数据预处理、索引构建等阶段也会有大量的随机I/O操作。较高的IOPS有助于加快数据处理速度,提高分析效率。
2)吞吐量(throughput)
IOPS和吞吐量都是衡量存储系统性能的重要指标,它们的区别主要体现在定义、侧重点、影响因素和应用场景等方面,具体如下:
定义
-
IOPS:即每秒输入输出操作次数,主要衡量的是存储设备在单位时间内能够处理的I/O请求数量,侧重于描述存储系统处理随机读写请求的能力,关注的是操作的次数。比如,一个数据库服务器每秒执行的数据库查询或更新操作次数就是IOPS的体现。
-
吞吐量:指的是在单位时间内成功传输的数据量,通常以字节/秒(B/s)、千字节/秒(KB/s)、兆字节/秒(MB/s)或吉字节/秒(GB/s)等为单位。它主要衡量的是数据传输的总量,侧重于描述存储系统在一定时间内能够传输的数据量大小。例如,从服务器下载一个大型文件时,每秒下载的数据量就是吞吐量的表现。
侧重点
-
IOPS:更关注存储设备处理请求的速度和响应能力,即能多快地完成一次I/O操作,对于那些需要快速响应大量小数据量请求的应用场景至关重要,如在线交易系统、数据库的随机查询等。在这些场景中,每个请求的数据量可能不大,但请求的数量非常多,系统需要快速处理每个请求以保证业务的流畅性。
-
吞吐量:更侧重于数据传输的效率,即能在单位时间内传输多少数据,对于那些需要处理大量连续数据的应用场景更为关键,如视频流传输、数据备份与恢复等。在这些场景中,数据量通常很大,需要以较高的速度进行传输,而对单个请求的响应速度要求相对较低。
影响因素
-
IOPS
-
存储介质:不同的存储介质对IOPS影响很大。如机械硬盘受机械寻道时间限制,IOPS较低;固态硬盘则因采用闪存芯片,无机械寻道过程,IOPS较高。
-
控制器性能:存储设备的控制器负责管理和传输数据,其处理能力越强,能同时处理的I/O请求就越多,IOPS也越高。
-
队列深度:适当增加队列深度可使存储设备并发处理更多I/O请求,提高IOPS,但超过一定限度后,可能因资源瓶颈导致性能下降。
-
-
吞吐量
-
存储设备带宽:存储设备与主机之间的连接带宽决定了数据传输的上限,带宽越高,吞吐量越大。
-
数据传输模式:顺序传输通常比随机传输能获得更高的吞吐量,因为顺序传输可以充分利用存储设备的连续读写能力。
-
系统总线速度:计算机系统的总线速度会影响数据在各个组件之间的传输速度,从而影响整体的吞吐量。
-
应用场景
-
IOPS
-
金融交易系统:如银行的实时转账、证券交易系统等,需要快速处理大量的小交易请求,对IOPS要求极高,以确保交易的实时性和准确性。
-
在线游戏服务器:需要频繁处理玩家的登录、移动、交互等操作,每个操作的数据量不大,但要求响应迅速,高IOPS能保证游戏的流畅运行。
-
-
吞吐量
-
视频监控系统:需要持续不断地存储大量的视频数据,对吞吐量要求较高,以确保视频数据的完整记录和回放。
-
云计算存储:用于存储大量的用户数据,如文件存储、对象存储等,需要高吞吐量来支持大规模的数据上传和下载。
-
条带:
RAID0:条带技术,最少2块,不允许坏盘
RAID1:镜像硬盘,最少2块,可以坏一半的盘N/2
RAID10:先镜像再条带,最少4块,可以坏一半的盘N/2
3)延时
延迟是指应用程序接收单个请求,将其发送到存储磁盘,然后再将响应发送到客户端所花的时间。它就像是你去图书馆借书的过程,从你向图书管理员提出借书请求开始,到图书管理员找到书递给你,这个过程所花费的时间就是延迟。在计算机存储领域,延迟是除IOPS(每秒输入/输出操作数)和吞吐量(指定时间间隔内发送到存储磁盘的数据量)之外,衡量应用程序性能的另一个关键指标。
-
高级存储磁盘的延迟表现:高级存储磁盘的延迟是指磁盘检索请求的信息并将其发送回应用程序所花的时间。高级存储提供稳定的低延迟,其设计旨在为大多数I/O操作提供个位数毫秒级延迟。这就好比图书馆的管理员业务很熟练,找书速度很快,大部分时候都能在很短时间内把书递给你。
-
缓存对延迟的影响:如果在高级存储磁盘上启用ReadOnly主机缓存,则可获得相当低的读取延迟。这类似于图书馆设置了一个常用书存放区,你要借的书如果在这个存放区,管理员能更快地拿给你,大大缩短了等待时间。
-
控制平面操作对延迟的影响:托管磁盘上的某些控制平面操作(如更新存储类型、分离磁盘并附加到另一个VM等)可能会将磁盘从一个存储位置移到另一个存储位置,在此期间,应用程序可能会经历比平常更高的读取延迟。这就好像图书馆要对书籍进行重新整理、搬运,导致找书速度变慢,你等待的时间变长 。
这部分内容围绕如何构建高性能应用程序展开,涉及性能评估、需求分析和性能优化等多方面内容。通俗来讲,就是告诉你如何了解应用程序对磁盘性能的要求,怎么衡量这些要求,以及如何提升应用程序在磁盘存储方面的性能表现。
-
磁盘性能应用程序清单:设计在Azure高级存储上运行的高性能应用程序时,第一步就是要清楚应用程序的性能要求。比如一个在线购物网站,在促销活动时会有大量用户同时下单、查询订单等操作,这时就需要了解每秒最大能处理多少订单(事务数)、读取和写入数据的比例等。知道这些要求后,才能针对性地优化应用程序,让它运行得更顺畅。
-
应用程序性能要求清单:这是一个详细记录应用程序性能指标的表格,涵盖了事务处理能力、读写操作比例、请求大小、吞吐量、延迟、资源使用情况(CPU、内存)和队列深度等方面。通过记录正常、高峰、空闲工作负载期间的第50百分位数、第90百分位数和第99百分位数的性能要求,可以确定应用程序的总体性能要求。例如,在线教育平台在正常教学时段(正常工作负载)和考试期间(高峰工作负载)对视频播放的延迟、数据读取吞吐量等要求不同,记录这些数据有助于规划资源。此外,还需根据应用程序未来的增长情况对这些数字进行调整,提前规划资源,避免后续因基础架构难以更改而影响性能。
-
用于衡量应用程序性能要求的计数器:为了知道应用程序的性能到底如何,需要借助工具来测量。在Windows系统中,可以使用PerfMon监视工具;在Linux系统中,可以使用iostat工具 。这些工具就像是汽车的仪表盘,能实时显示应用程序运行时的各种“性能数据”。比如,它们可以测量每秒发送到存储磁盘的I/O请求数(IOPS)、从磁盘读取或写入的数据量(吞吐量)、完成磁盘I/O请求所花费的时间(延迟)等。通过在应用程序运行不同工作负载(正常、高峰、空闲)时收集这些数据,就能全面了解应用程序的性能表现。
-
优化应用程序性能