一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种提高SSDQOS的IO闪避方法与流程

2022-12-10 16:40:43 来源:中国专利 TAG:

一种提高ssd qos的io闪避方法
技术领域
1.本发明涉及闪存存储控制领域,具体是一种提高ssd qos的io闪避方法。


背景技术:

2.在ssd中使用的nand flash存储介质因为其结构工艺等原因其有多种特性,如读干扰(read disturb)、数据驻留(data retension)、写干扰(prog disturb)、首次读(first read)等,这些特性需要固件对nand进行定期或者条件触发的管理操作,如果这些对nand的管理操作与主机下发的io操作落在相同的lun上,就会增大主机的io延迟,从而使ssd的qos恶化。
3.qos(quality of service)是指服务质量,对于ssd来说是iops及io latency等的一个综合考量。


技术实现要素:

4.本发明要解决的技术问题是提供一种提高ssd qos的io闪避方法,使nand管理命令与主机io进行时间空间上的错行,达到减少io latency,提高ssd qos的目的。
5.为了解决所述技术问题,本发明采用的技术方案是:一种提高ssd qos的io闪避方法,包括以下步骤:
6.s01)、将nand不同特性引起的管理操作拆分为基本操作,基本操作包括读操作、写操作、擦除操作、虚读操作,将基本操作的读操作、写操作、擦除操作、虚读操作以及主机的读、写操作分别建立不同的请求队列,基本操作与主机的读写操作共同向调度单元提交请求,经过调度单元处理后输出到执行队列;
7.s02)、从执行队列取出待执行队列请求并执行,执行完成对执行队列活跃io数量进行减一操作。
8.进一步的,请求到达调度单元后的处理为:
9.s31)、某类请求到达;
10.s32)、检查该类请求所属的请求队列是否为空;
11.s33)、如果为空,则查找最小p标签值,遍历其他活跃队列并对其他活跃队列的最新p标签进行校正,校正公式为:p
jr

=p
jr-(min p
tag-t)(1),p
jr
表示第j个请求队列的第r个请求的原来p标签值,p
jr

表示第j个请求队列的第r个请求的校正后的p标签值,p
tag
表示p标签值,t表示当前时间,对第j个请求队列的第r个请求从原来的p标签值减去最小p标签值与当前时间的差值,之后对该笔请求按照公式1进行tag赋值;
12.s34)、如果不为空,则对该笔请求直接按照以下公式进行tag赋值:
13.rir=max{ri-1r 1/ri,t},
14.lir=max{li-1r 1/li,t},
15.pir=max{pi-1r 1/wi,t},
16.其中rir、lir、pir分别表示第i个请求队列的第r个请求的预留资源标签、权重标
签、上限标签,ri-1r、li-1r、pi-1r分别表示第i-1个请求队列的第r个请求的预留资源标签、权重标签、上限标签,预留资源标签、权重标签、上限标签均是时间标签,ri、li、wi表示预留资源标签、权重标签、上限标签对应的时间间隔,t表示当前时间;
17.s35)、如果需要执行的io大于或者等于执行队列深度,直接返回,反之则进行下一步;
18.s36)、判断是否有r标签值小于当前时间,如果有,则将r标签值最小的一笔请求加入执行队列,否则进行下一步;
19.s37)、如果有l标签值小于当前时间,再判断执行队列是否为空,再判断该请求的通道执行队列是否为满,如果不满则选取最小的p标签值请求加入执行队列并进行下一步,如果没有l标签值小于当前时间则直接返回;
20.s38)、对p标签相同来源的队列的r标签值进行更新,前移一个r时间间隔;
21.s39)、对执行队列数量进行加一操作。
22.进一步的,根据发生nand管理操作的比例与主机读写操作之间的比例确定预留资源标签、上限标签以及权重标签,根据nand处理不同类型io的能力以及各项不同操作耗时确定ri、li、wi。
23.进一步的,执行队列按照通道进行区分。
24.本发明的有益效果:本发明设置上限标签确保某一类io不会无限度的使用资源导致其他类型io获取不到资源,预留资源标签确保该类命令在不长的时间内被执行,设置权重标签可以使不同类型命令排布更加均匀,根据标签值执行命令,确保快要超时的命令尽快执行,减少长尾产生。综合而言,本方法减少nand管理命令与主机io命令冲突,在不增加nand错误发生的情况下,减少了io长尾的产生,提升了服务质量和用户体验。
附图说明
25.图1为本发明的原理框图;
26.图2为请求到达后的处理流程图;
27.图3为根据标签进行调度的流程图;
28.图4为io执行的流程图。
具体实施方式
29.下面结合附图和具体实施例对本发明做进一步的说明。
30.实施例1
31.本实施例公开一种提高ssd qos的io闪避方法,本方法使nand管理命令与主机io进行时间空间上的错行,达到减少io latency,提高ssd qos的目的。
32.nand特性包括读干扰、数据驻留和刷新,下面对各特性进行详细介绍。
33.读干扰(read disturb)是指读取某个页(page)时会对该页(page)所在块的其他页控制级施加正电压,导致分布电压左移,读取错误比特数增加,该特性处理需要对块的读取次数进行计数,当达到阈值时,将该块的数据搬移到其他块上,新写入的块将重新进行读计数。该特性处理对应的nand操作为nand的读写擦。
34.数据驻留(data retention)是指nand的数据保持能力,数据随着时间的增长,数
据会发生不可纠正的错误,而且块(block)的擦除次数越大,数据驻留能力会越弱,时间越长错误比特数越多,当错误比特数多到ldpc纠错算法不能纠正的时候就会影响到数据安全,所以固件需要巡检nand块,检查数据写入时长,当时长达到阈值有ldpc纠错失败的风险时需要将该块的数据搬移到其他块上,新写入的块将重新计时。该特性处理对应的nand操作为nand的读写擦。
35.刷新(refresh)是指对nand进行的虚读(dummy读)操作,该操作不需要传输数据,旨在解决nand编程之后第一次读错误比特数比较多的情况,ssd固件需要定期对所有nand块进行虚读(dummy读)。
36.本实施例对mclock算法进行改进和适配。改进和适配主要解决以下两点问题:一个是nand对于读写擦的耗时不同,且差异较大,即不同种类的操作时间特性不同;另一个是ssd通常有多个通道,各个通道相互独立,通道间的并行度越高,带宽越高,考虑到带宽应使并行度尽量高,因此在mclock三个决策维度的基础上增加通道并行度的考量。
37.本实施例所述方法的具体步骤为:
38.s01)、如图1所示,将nand不同特性引起的管理操作拆分为基本操作,基本操作包括读操作、写操作、擦除操作、虚读操作,将基本操作的读操作、写操作、擦除操作、虚读操作以及主机的读、写操作分别建立不同的请求队列,基本操作与主机的读写操作共同向调度单元提交请求,经过调度单元处理后输出到执行队列,执行队列按照通道进行区分。
39.本图2、3所示,请求到达调度单元后的处理流程为:
40.s31)、某类请求到达;
41.s32)、检查该类请求所属的请求队列是否为空;
42.s33)、如果为空,则查找最小p标签值,遍历其他活跃队列并对其他活跃队列的最新p标签进行校正,校正公式为:p
jr

=p
jr-(min p
tag-t)(1),p
jr
表示第j个请求队列的第r个请求的原来p标签值,p
jr

表示第j个请求队列的第r个请求的校正后的p标签值,p
tag
表示队列中所有请求的p标签值,t表示当前时间,对第j个请求队列的第r个请求从原来的p标签值减去最小p标签值与当前时间的差值,之后对该笔请求按照公式(1)进行tag赋值;
43.本实施例中,有任务请求的队列为活跃队列,没有任务请求的队列为非活跃队列。
44.s34)、如果不为空,则对该笔请求直接按照以下公式进行tag赋值:
45.rir=max{ri-1r 1/ri,t},
46.lir=max{li-1r 1/li,t},
47.pir=max{pi-1r 1/wi,t},
48.其中rir、lir、pir分别表示第i个请求队列的第r个请求的预留资源标签、权重标签、上限标签,ri-1r、li-1r、pi-1r分别表示第i-1个请求队列的第r个请求的预留资源标签、权重标签、上限标签,预留资源标签、权重标签、上限标签均为时间标签,ri、li、wi表示预留资源标签、权重标签、上限标签对应的时间间隔,t表示当前时间;
49.s35)、如果需要执行的io大于或者等于执行队列深度,直接返回,反之则进行下一步;
50.s36)、判断是否有r标签值小于当前时间,如果有,则将r标签值最小的一笔请求加入执行队列,否则进行下一步;
51.s37)、如果有l标签值小于当前时间,再判断执行队列是否为空,再判断该请求的
通道执行队列是否为满,如果不满则选取最小的p标签值请求加入执行队列并进行下一步,如果没有l标签值小于当前时间则直接返回;
52.s38)、对p标签相同来源的队列的r标签值进行更新,前移一个r时间间隔;
53.s39)、对执行队列数量进行加一操作。
54.s02)、如图4所示,从执行队列取出待执行队列请求并执行,执行完成对执行队列活跃io数量进行减一操作。
55.本实施例中,根据发生nand管理操作的比例与主机读写操作之间的比例确定预留资源标签、上限标签以及权重标签,根据nand处理不同类型io的能力以及各项不同操作耗时确定ri、li、wi。具体的,根据nand能处理的最低带宽分别确定不同命令类型确定预留资源,根据能处理的最高带宽和不同命令类型和确定上限标签,根据不同命令类型的比例确定权重标签。
56.不同通道是并行关系,属于不同的资源,为了确保执行调度算法没有耦合,本实施例的执行队列按照通道进行区分。
57.本实施例所述调度算法通过预留资源标签、权重标签、上限标签决定请求是否进行执行队列,并动态更新这三个标签。上限标签确保某一类io不会无限度的使用资源导致其他类型io获取不到资源,预留资源标签确保该类命令在不长的时间内被执行,权重标签可以使不同类型命令排布更加均匀,根据标签值执行命令,确保快要超时的命令尽快执行,减少长尾产生。
58.以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献