存储IO性能优化策略、方案与瓶颈分析

薪科技快评 2024-08-31 10:36:13

存储 IO 性能优化策略、方案与瓶颈分析(15张图)

存储IO性能优化是难题,因为它通常涉及全局性问题,需要从应用、数据库、主机、网络和存储设备全IO链路栈各层考虑可能出现的性能问题或瓶颈。

一、不同应用数据的 IO 模型特点

下表概述了各种应用场景的IO大小、读写比例、随机和顺序比例,这些数据作为通用参考值。需要注意的是,该表并未涵盖所有应用类型,且在不同生产环境中,数值可能存在较大差异。因此,表1中的数据仅作为一个通用参考。

表1 应用数据的IO模型

二、存储 IO 性能指标和计算公式

1. 三大存储IO性能指标:

在三大性能指标中,针对大IO应用的吞吐量评估更科学;而对于小IO应用如数据库,需通过IOPS和延时指标评测性能。只有高IOPS与低延时兼得,才能应对高并发且快速的数据库访问需求,如表2所示。

表2 三大存储IO性能指标

2. 其它重要的存储性能指标(表3):

表3 其它重要的存储性能指标

3. 各IO性能指标的计算和相互转换公式

IOPS、IO size、带宽和QueueDepth之间的计算转换公式如图1所示。请参考该图以获取详细信息。

图1 IOPS、IO size、带宽、QueueDepth之间的计算转换公式

4. 各性能指标在vdbench基准测试工具中的体现(如图2)

图2 各性能指标在vdbench基准测试工具中的体现

三、存储 IO 性能优化

1. 优化策略

存储IO性能优化工作需要一定的策略性(如表4):

表4 存储IO性能优化策略

2. 优化方案

存储设备层优化方案(如图3):

图3 存储设备层优化方案

网络层优化方案(图4):

图4 网络层优化方案

存储传输协议方案选择(如图5):

图5 存储传输协议方案选择

主机层优化方案(如图6):

图6 主机层优化方案

应用层优化方案(如图7):

图7 应用层优化方案

3. 传统关系型数据库的IO性能的瓶颈点分析(如图8)

图8 Oracle 数据文件和日志文件读写过程

如表5所示,OLTP系统中单进程LGWR可能成为瓶颈,特别是在无法保证在线日志IO写性能时,容易出现排队等LGWR进程现象。这也是传统关系型数据库相对脆弱之处,容易引发问题。

表5 关系型数据库data和log数据IO读写模型

OLTP数据库存储性能优化思路(如图9):

图9 OLTP数据库存储性能优化思路

4. IO并发队列的考虑

队列深度(Queue-Depths)是衡量主机端单个LUN能同时处理的I/O操作数量的标准。以QD=32为例,这意味着在同一时刻,该LUN可以执行32个并行IO操作。

在SCSI命令层面,每个从发送端(initiator)主机HBA卡端口到接收端(target)存储HBA卡端口的IO请求都会占用一个队列条目。

通常来说,较高的队列深度意味着更好的性能。然而,当存储控制器/节点达到最大队列深度并耗尽资源时,它将拒绝新的传入命令,并通过返回QFULL回应主机,从而导致性能下降。因此,在大量主机访问存储控制器时,务必谨慎规划以避免QFULL条件导致系统性能显著降低甚至出现错误。

有关队列深度(Queue-Depths)计算的深入分析(表6):

表6 队列深度计算的深入分析

有关队列深度(Queue-Depths)注意事项:

队列深度是一种并发交易模拟机制,它在流水线上的每个不同环节设置缓冲空间,使正常流水线数据传送从紧耦合变成了松耦合。简单来讲,Queue-Depths 传送机制的系统中,整个系统的吞吐量和延迟由性能最差的那个部位决定。

队列深度是一种并发交易模拟机制,它通过在流水线上的每个不同环节设置缓冲空间,使得正常流水线数据传送从紧耦合变成了松耦合。使用Queue-Depths 传送机制的系统中,整个系统的吞吐量和延迟由性能最差的那个部位决定。

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

0 阅读:11

薪科技快评

简介:薪科技评说,发现技术的点滴,记录科学的飞跃!