------------------------------------重要说明------------------------------------

以下部分内容来网络,部分自华为存储官方教材

具体教材内容请移步华为存储官网进行教材下载

    网络引用内容无法找到原创,如有侵权请通知

------------------------------------重要说明------------------------------------

Smart Qos特性分配存储系统关键资源来满足某些应用程序的特定性能要求,从而保障不同业务的服务质量。

① 原理描述

存储系统利用基于LUN的I/O优先级调度和应用程序I/O的队列管理两种方式来保证关键业务的运行。

系统关键资源包括:前端并发资源、后端硬盘并发资源、 CPU计算资源、缓存资源。

随着存储系统容量持续增大,将多个应用程序部署在同一台存储设备上的需求也在逐步增加。将多个应用程序部署在同一台存储设备可以简化用户的存储系统架构,但多个应用程序并存相互争抢资源,会导致各业务的性能都受到影响。通过SmartQos特性可以为不同的业务指定不同的性能目标,以满足关键业务的运行。用户可以通过设置I/O优先级,创建流量控制策略两种方式来保证关键应用程序的性能。

a.  IO优先级调度管理

IO优先级是基于LUN的优先级进行控制,LUN的优先级由用户根据部署在该LUN上的业务重要性来制定。

每个LUN都有一个优先级属性,这个属性由用户配置并保存在存储系统中。当一个I/O进入存储系统,这个I/O将会根据其所操作的LUN来获得这个优先级属性,并且在整个I/O下发过程中都携带这个优先级信息。


图片.png

① 应用服务器下发I/O请求。

② 系统根据I/O所操作的LUN的优先级,将优先级属性分配给I/O。

③ 系统将不同优先级的I/O分配至相应的队列,即优先级为高的I/O进入高优先级I/O队列;优先级为中的I/O进入中优先级队列;优先级为低的I/O进入低优先级队列。当系统资源紧张时,系统优先处理高优先级I/O,从而使高优先级应用程序获得更好的性能。

④ 处理出队的I/O请求。

I/O优先级调度主要是对存储系统资源进行调度, 主要调度的资源包括并发资源、 CPU计算资源和缓存资源。

IO优先级调度主要是对关键系统资源进行调度,主要调度的资源包括前端主机并发资源,后端主机并发资源,后端硬盘并发资源,CPU计算资源和缓存资源。

图片.png

前端主机并发资源:在并发资源不足时(如当前并发已占系统并发的90%),将优先接收高优先级的I/O,而拒绝低优先级的I/O,以保证高优先级业务获得更多并发数。

后端硬盘并发资源:当硬盘占用率过高时,为保证硬盘可靠性,系统将给低优先级I/O加时延来控制,而尽量不影响高优先级I/O。

CPU计算资源: CPU计算资源的优先级调度主要通过CPU运行时间的分配来实现。系统会根据不同优先级LUN的权重来分配不同优先级的业务占用的CPU运行时间。当CPU成为系统性能瓶颈时,会通过优先级的调度满足高优先级业务获得更多的CPU运行时间。

缓存资源:系统会根据不同优先级LUN的权重对不同优先级的I/O请求进行调度,优先满足较高优先级业务的缓存分配请求。

1)  前端并发资源的优先级控制

前端并发资源的优先级控制在读写请求分配系统资源之前进行。在系统中,SmartQos针对每一个优先级的并发数维护一个计数值,当一个IO请求进入存储系统后,首先要从SmartQos申请并发数,SmartQos会根据其占用的并发资源折算出一个并发数,并将此并发数累加到这个IO对应的优先级并发计数值上。当此IO被系统处理完成,在返回主机之前,其占用的并发数会从相应的并发计数中减除。

Smart Qos会根据一定规则对优先级的并发进行动态调整,以最大化并发资源利用率。初始时,系统为每个优先级分配较少数量的并发,剩余的并发置于公共并发池当中,当某个优先级并发不够时,可以从并发池中获取,知道池中没有并发为止;同时,各优先级多余的并发也会即使归还到并发池中。当高优先级出现并发不足,且达到其对应的最并发数时,会强制其他优先级归还并发资源。

每个优先级对应的并发计数值反映了这个优先级的业务在存储系统上占用的并发资源的数量。当每个优先级的并发计数值达到预设的最大值时, SmartQoS会将这个IO请求挂入对应的优先级队列中排队等待,直到有IO返回,有空闲的并发资源后,再从队列中依次取出IO请求进行处理。同时,系统还维护了一个系统总并发计数和单个LUN的总并发计数,当其中一个达到最大限制时, SmartQoS会拒绝这个IO请求,系统返回给主机繁忙信息,告知主机当前存储系统已经达到最大处理能力,此IO需要等待重试。

2)  硬盘资源优先级控制

Smart Qos特性对于磁盘资源的控制,主要是通过BDM(块设备管理)侧引入优先级调度机制,通过BDM的PEE(优先级向前电梯)算法,来保证高优先级的IO能够被优先调度访盘。

3)  CPU计算资源优先级控制

计算资源主要指系统中CPU的运行时间。当一个IO请求在需要获得CPU处理的时候,会根据其所携带的优先级信息被投入到相应的优先级等待队列中去,Smart Qos根据IO调度算法每次从一个优先级等待队列中取出一个IO请求进行处理。

Smart Qos对CPU计算资源的控制是基于权重的优先级调度策略来实现的,调度策略会优先从高优先级的非空等待队列选择出队处理的IO,即如果高优先级队列不为空,则从高优先级队列选取,如果高优先级的出队个数达到其权重值,则从下一个非空的优先级队列选择出队的IO。按照个规则直到低优先级,如果低优先级队列为空或低优先级队列的出队个数达到其权重值,则回到高优先级选择。

4)  缓存资源优先级控制

缓存资源主要是指存储系统内部的Cache页面资源,由于写入储存系统的数据在写入硬盘之前都是存放在页面资源中的,因此缓存资源的优先级控制实际上就在IO申请页面的时候对页面的分配进行优先级控制。

图片.png

b.  流控管理

SmartQoS流控管理是基于应用程序I/O的队列管理,通过对I/O分类队列管理、令牌分发和出队控制三部分实现。

控制策略包括:带宽、IOPS、时延控制

基于应用程序I/O的队列管理通过令牌机制实现存储资源的分配,某个应用程序I/O队列所拥有的令牌数越多,系统分配给这个应用程序I/O的资源也越多,存储系统会优先处理该应用程序I/O队列中的I/O请求。


图片.png

① 应用服务器下发I/O请求后,存储系统将I/O入队到相应的应用程序I/O队列中。

② 系统根据各应用程序I/O队列的性能目标调整队列所持有的令牌数,通过降低低性能目标队列的令牌数, 保证高性能目标队列可占有的系统资源, 优先保证高性能目标应用程序的运行(系统内部为I/O出队操作)。


图片.png

存储系统内部会将每个应用程序的性能目标转换成所需的令牌数。例如,实现应用程序A性能目标的令牌数为300,而实现应用程序B所需的性能目标的令牌数为200。当系统资源紧张时,由于应用程序B所拥有的令牌数少,存储系统会限制应用程序B所占有的系统资源。这样,应用程序A可以获得更多的系统资源,从而获得更好的性能。

③ 处理出队的I/O请求。

② 配置流程


图片.png

a.  检查 License 信息

 

步骤1 进入“ License管理”界面。

1. 在右侧导航栏上,单击 。

2. 在左侧功能展示区的“查看与设置”区域,单击“更多设置”。系统进入“更多设置”界面。

3. 单击“ License管理”。系统进入“ License管理”界面。

步骤2 浏览已激活License信息。

1. 在左侧导航中,选择“已激活License”节点。

2. 在中间信息展示区浏览存储设备已激活的License文件信息。

b.  配置 LUN 的 I/O 优先级

LUN的I/O优先级由用户根据部署在该LUN上的业务重要性来指定,目前系统支持高、中、低三个优先级。

用户在创建LUN的时候可以指定所创建的LUN的优先级, 如果用户不指定所创建的LUN的优先级,则所创建的LUN将被默认赋予低优先级。

 

LUN创建后,其优先级属性可以根据用户的需要手动修改。

步骤1 进入“ SmartQoS”配置界面。

1. 在DeviceManager管理界面右侧导航栏上单击 。

2. 在资源分配管理界面的“查看与管理”区域框中单击“资源调优”。

3. 在“资源调优”界面,单击“ SmartQoS”。系统进入“ SmartQoS”配置界面。

步骤2 配置LUN的I/O优先级。

1. 在“ SmartQoS”配置界面,单击“优先级控制”页签。

2. 在LUN列表中,选择需要配置I/O优先级的LUN。

3. 单击“修改IO优先级”。系统弹出“修改IO优先级”对话框。

4. 配置LUN的I/O优先级。目前系统支持高、中、低三个优先级。

5. 单击“确定”。系统弹出“执行结果”对话框,提示操作成功。

c.  监控业务性能

步骤1 登录DeviceManager管理界面。

步骤2 在右侧导航栏上单击 。

步骤3 在左侧信息展示区,单击“性能监控”。进入性能监控页面。

d.  创建流量控制策略

SmartQoS流控策略是一组调控对象(应用程序所在的LUN)以及性能目标的组合。

SmartQoS流控策略实质是一系列指令, 可以告诉存储系统每组调控对象的性能目标以及如何去实现该性能目标。

步骤1 登录DeviceManager。

步骤2 进入“ SmartQoS”配置界面。

1. 在右侧导航栏上单击 。

2. 在资源分配管理界面的“查看与管理”区域框中单击“资源调优”。

3. 在“资源调优”界面,单击“ SmartQoS”。系统进入“ SmartQoS”配置界面。

步骤3 进入“创建流量控制策略向导”对话框。

1. 在“ SmartQoS”配置界面,单击“流量控制”页签。

2. 单击“创建”。系统弹出“创建流量控制策略向导”对话框

步骤4 在“名称”中输入SmartQoS策略的名称,在“描述”中输入对此策略的简要描述。

步骤5 选择调控对象和控制类型。

1. 在“设置名称”页面单击“下一步”。系统进入“设置控制目标”页面。

2. 可选: 在“应用场景”选择业务的应用场景。在“应用场景”中,系统提供了三种预置控制目标参数的配置模板。

3. 在“控制类型”中选择该策略调控的I/O类型。

SmartQoS策略可调控的I/O类型包括:“读I/O”、“写I/O”和“读I/O和写I/O”。

4. 在“控制目标”中选择该策略调控的性能目标,并设置相应的数值。

可调控的控制目标包括:“带宽”、“ IOPS”和“时延”。

步骤6 配置流量控制策略的触发策略。

1. 单击“下一步”。系统进入“设置触发策略”对话框。

2. 在“开始日期”文本框中设置该策略开始执行的日期。

3. 在“运行周期”区域框中设置该策略执行的周期。

存储系统支持的运行周期包括:

l 单次:流量控制策略只会在指定的日期当天生效。

l 每周:设置每周循环的周期后,流量控制策略会从“开始日期”指定的日期后每周循环生效。

4. 在“运行时间”区域框中设置该策略执行的开始时间和持续时间。需要设置策略的“运行时间”至少大于30分钟。

步骤7 选择控制对象。

1. 单击“下一步”。系统进入“选择控制对象”对话框。

2. 在“可选LUN” 区域框中选择该策略调控的LUN,单击 , 将选择的LUN移到“已选LUN”区域框中。

步骤8 确认创建流量控制策略的操作。

1. 单击“下一步”。系统进入“信息汇总”对话框。

2. 确认流量控制策略信息。如果创建的流量控制策略正确,单击“完成”。

3. 在“执行结果”提示框中单击“关闭”。