当前位置: 首页 > news >正文

论存储IOPS和Throughput吞吐量之间的关系

论存储IOPS和Throughput吞吐量之间的关系

http://www.csdn.net/article/2015-01-14/2823552

 

IOPS和Throughput吞吐量两个参数是衡量存储性能的主要指标。IOPS表示存储每秒传输IO的数量,Throughput则表示每秒数据的传输总量。本文就IOPS和Throughput吞吐量应用场景入手,描述两者之间的变化关系与计算方法

IOPS和Throughput吞吐量两个参数是衡量存储性能的主要指标。IOPS表示存储每秒传输IO的数量,Throughput吞吐量则表示每秒数据的传输总量。两者在不同的情况下都能表示存储的性能状况,但应用的场景不尽相同。同时,两者之间也存在着相互的联系,本文就IOPS和Throughput吞吐量对存储性能衡量的场景入手,描述两者之间的变化关系与计算方法。帮助读者更好的了解存储的性能分析与规划。

IOPS与Throughput的关系:

IOPS(IO per Second)是用来计算I/O流中每个节点中每秒传输的数量(关于IO流中的每个节点的解释,参考文章:浅析I/O处理过程与存储性能的关系)。

通常情况下,广义的IOPS指得是服务器和存储系统处理的I/O数量。但是,由于在IO传输的过程中,数据包会被分割成多块(block),交由存储阵列缓存或者磁盘处理,对于磁盘来说这样每个block在存储系统内部也被视为一个I/O,存储系统内部由缓存到磁盘的的数据处理也会以IOPS来作为计量的指标之一。

本文中提到的IOPS,是指得广义的IOPS,即由服务器发起的,并由存储系统中处理的I/O单位。

IOPS通常对于小I/O,且传输I/O的数量比较大的情况下,是一个最主要的衡量指标。例如,典型的OLTP系统中,高的IOPS则意味着数据库的事务可以被存储系统处理。

 

Throughput吞吐量是用来计算每秒在I/O流中传输的数据总量。

这个指标,在大多数的磁盘性能计算工具中都会显示,最简单的在Windows文件拷贝的时候,就会显示MB/s。通常情况下,Throughput吞吐量只会计算I/O包中的数据部分,至于I/O包头的数据则会被忽略在Throughput吞吐量的计算中。

广义上的Throughput吞吐量,也会被叫做“带宽”,用来衡量I/O流中的传输通道,比如2/4/8Gbps Fibre Channel、60Mbps SCSI等等。

但 “带宽”会包括通道中所有数据的总传输量的最大值,而Throughput吞吐量则是只保护传输的实际数据,两者还是有些许区别。

Throughput吞吐量衡量对于大I/O,特别是传输一定数据的时候最小化耗时非常有用。备份数据的时候是一个典型的例子。在备份作业中,我们通常不会关心有多少I/O被存储系统处理了,而是完成备份总数据的时间多少。

IOPS和Throughput吞吐量之间存在着线性的变化关系,而决定它们的变化的变量就是每个I/O的大小。从图中可以看到,当被传输的I/O比较小的情况下,每个I/O所需传输的时间会比较少,单位时间内传输的I/O数量就多。

而由于处理数据包头,总的时间内传输实际数据相对较低。

当I/O尺寸比较大的情况下,如下图所示,传输每个I/O的时间增大,IOPS数量下降。但是相比更高的百分比的I/O通道用来传输实际数据,Throughput则明显上升。

我们可以用一个简单的公式来计算Throughput和IOPS之间的关系:

Throughput MB/s = IOPS * KB per IO / 1024

假设一个10个10K SAS磁盘,每个磁盘提供140 IOPS,总共有1400最大IOPS。理论上这些磁盘处理不同的IO大小,所能达到的Throughput吞吐量是有区别的。简单的来说,物理层面IOPS和Throughput哪个先达到了物理磁盘的极限,就决定了这个物理磁盘的性能阀值。下面的计算公式可以看到,单位I/O大小可以使得吞吐量成倍提升,但是未能达到10个SAS磁盘1GB/S(每个磁盘100MB/s带宽)的理论“带宽”。显而易见,因为大多数应用的I/O不会那么大,所以你会看到存储阵列的吞吐量远小于厂商提供的理论值,原因就是因为IOPS先达到了性能阀值,使得吞吐量无法再提升。当然也有特殊的应用,例如流媒体服务器等,应用端可以使用2MB的I/O大小,那么吞吐量利用率显然会更加高,IOPS的要求则相对较低了。

MB/s = 1400 * 64 /1024 = 87.5 MB/s
MB/s = 1400 * 128 /1024 = 175 MB/s
MB/s = 1400 * 256 /1024 = 350 MB/s

综上所述,在规划存储性能和处理存储性能问题的时候,需要综合看IOPS和Throughput吞吐量这两个参数,本文的观点总结为以下几点:

 

  • 性能工具统计的Throughput吞吐量永远达不到实际的I/O流中节点的理论“带宽”,原因是性能工具不会统计I/O的包头信息,而是实际的数据传输量。
  • 磁盘物理层面IOPS和Throughput哪个先达到了物理磁盘的极限,就决定了这个物理磁盘的性能阀值,然而决定哪个先达到性能阀值的就是I/O的大小。
  • 性能监控工具显示IOPS低或者Throughput低于预期,先不要直接认为存储性能存在问题,搞清楚应用的I/O大小,再做后续判断。
  • 存储性能另外一个重要因素还有磁盘响应时间(Response Time),本文的内容是建立在存储可以提供接受访问内的响应时间为前提。
 
看小IO多还是大IO多
大IO:对于磁盘来说每个block在存储系统内部也被视为一个I/O,block的大小
 
 
IOPS通常对于单个小I/O,且传输I/O的数量比较大的情况下,是一个最主要的衡量指标。
IOPS这里IO传输的速度取决于单个IO的IO size,一个 大IO会占用比较多的带宽才能传输完,如果当前带宽不够,当前大IO较多的情况下就会拖慢IOPS
 
 
同理,如果大IO比较多,那么Throughput相对就会较大,在带宽一定的情况下,所容纳的IO就会较少
如果小IO比较多,那么Throughput相对就会较小,在带宽一定的情况下,所容纳的IO就会较多
 
Throughput这个是动态的,在带宽不够的时候要加带宽
通常还是看IOPS比较好,在带宽一定的时候,IOPS通常对于小I/O,且传输I/O的数量比较大的情况下,是一个最主要的衡量指标。例如,典型的OLTP系统中,高的IOPS则意味着数据库的事务可以被存储系统处理。

 
 
 
 
 
 

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/4244300.html

相关文章:

  • Objective - C基础: 第五天 - 6.循环引用
  • 服务器的编码
  • Jquery scrollTop animate 實現動態滾動到頁面頂部
  • 多站点IIS用户安全权限设置图解教程
  • c#将http调用返回额json中的有关中文的unicode转换为中文(转)
  • 断点续传
  • T-SQL查询进阶--变量
  • cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd
  • JQuery上传插件Uploadify API详解
  • c#鼠标在控件上面,然后显示文字
  • 什么是 ADO.NET?
  • [leetcode] Multiply Strings
  • 微信公众平台开发学习笔记1--验证服务器地址的有效性
  • jquery uploadify上传文件插件导致浏览器崩溃问题解决方法
  • Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的
  • [译] React v16.8: 含有Hooks的版本
  • Angular4 模板式表单用法以及验证
  • Consul Config 使用Git做版本控制的实现
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Debian下无root权限使用Python访问Oracle
  • HTTP中GET与POST的区别 99%的错误认识
  • iOS编译提示和导航提示
  • Java教程_软件开发基础
  • jdbc就是这么简单
  • mysql中InnoDB引擎中页的概念
  • webpack入门学习手记(二)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 实现菜单下拉伸展折叠效果demo
  • 用简单代码看卷积组块发展
  • #LLM入门|Prompt#3.3_存储_Memory
  • (0)Nginx 功能特性
  • (day6) 319. 灯泡开关
  • (二)windows配置JDK环境
  • (转)为C# Windows服务添加安装程序
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .dwp和.webpart的区别
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 分布式技术比较
  • .NET6 命令行启动及发布单个Exe文件
  • .NET命令行(CLI)常用命令
  • @RequestParam详解
  • [ JavaScript ] JSON方法
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [145] 二叉树的后序遍历 js
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [emuch.net]MatrixComputations(7-12)
  • [GN] 设计模式——面向对象设计原则概述
  • [hive] 窗口函数 ROW_NUMBER()
  • [HOW TO]怎么在iPhone程序中实现可多选可搜索按字母排序的联系人选择器
  • [iOS]把16进制(#871f78)颜色转换UIColor
  • [ISITDTU 2019]EasyPHP