基于存储内容优先的SSD指令调度方法及系统与流程

文档序号:28112732发布日期:2021-12-22 14:15阅读:65来源:国知局
基于存储内容优先的SSD指令调度方法及系统与流程
基于存储内容优先的ssd指令调度方法及系统
技术领域
1.本发明固态存储领域,尤其是固态存储的指令调度,具体是一种基于存储内容优先的ssd指令调度方法及系统。


背景技术:

2.大型数据中心中数据存储规模快速增长、数据处理性能快速提升,采用sata接口、ahci存储协议的传统hdd机械盘在读写带宽、并发iops方面暴露出瓶颈,无法满足新型数据中心的高并发、高带宽数据读写应用。ssd固态盘作为传统hdd机械盘的替代者,采用了更新的存储介质、全新的主机接口、存储协议,具有较好的存储效果。
3.在标准的ssd固态盘中,为了充分发挥服务器主机多核处理器、ssd固态盘中pcie主机接口、nand flash闪存介质的并发读写性能,并保证并发写入数据过程中的数据一致性,设计了数据读写命令的并发多队列机制。每个读写命令队列可以对应于服务器主机的单个cpu内核,用于ssd固态盘和服务器主机之间传输数据读写命令,在配置多个cpu内核的服务器主机中,ssd固态盘中可以设置多个读写命令队列,这种方式保证了每个主机内核都能访问固态硬盘,并且多个读写队列可以并行执行。这种设置多个并行读写命令队列的方式,保证了服务器主机多核处理器、ssd固态盘pcie主机接口、多nand flash存储介质的并发读写,极大的提升了并行读写带宽。
4.在新型数据中心中,服务器主机需要处理的并发访问数量持续增长,需要读写的数据量逐渐上升到gb级~几百gb。当几十gb~几百gb、数万并发数据持续写入和读取ssd固态盘时,“最新”写入的数据总量很快接近固态盘的空余空间,此时固态盘就需要激活垃圾回收动作,以释放空闲空间给后续的数据。处于垃圾回收状态的ssd固态盘,其主控芯片的微处理器、nand flash、dram缓存均处于持续的繁忙状态,为了保证数据读写的一致性状态,ssd固态盘处理读写命令队列的速度将会下降,此时服务器主机仍然在下发大量的数据读写命令、并把大量的读写命令放入数据读写队列中排队等候。
5.由于nand flash是一种非易失的存储介质,且存在较大概率的位反转和位错误,因此每一次的数据读写操作都需要执行大量的冗余纠错操作,在大量、持续写入数据时,发生错误的概率更高。这种情况下ssd固态盘就需要首先保障数据一致性,降低对现有数据读写队列的处理速度,已经处于数据读写队列的读写操作就只能等待,等待的时长完全依赖于微内核的处理速度、数据读写队列中读写指令的数量。通常情况下,ssd固态盘中数据读写操作等待的状态,会进一步负反馈到主机应用,加大其等待的时间,这就造成了海量的访问争抢有限的资源,导致所有操作陷于长久的相互等待状态。
6.由以上描述可知,在大规模、高并发、针对同一数据多交叉访问的应用中,高性能、大容量ssd固态盘一旦进入“繁忙”状态,主机应用为了获得所访问数据的最终状态,只能等待队列中的读写命令“缓慢执行”,无法加速、无法调整优先级,这就暴露了ssd固态盘在多并发队列设计中的不足。


技术实现要素:

7.针对现有技术的缺陷,本发明设计了一种基于存储内容优先的ssd指令调度方法及系统,设计了面向存储内容的、可调整优先级的读写命令队列,能够适应大容量、高并发、多交叉读写访问的应用环境。
8.为了解决所述技术问题,本发明采用的技术方案是:基于存储内容优先的ssd指令调度方法,本方法针对服务器主机下发到ssd固态盘的大量数据读写命令,在构建数据队列时,增加了所操作数据的标识以及优先级因子;在未启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令按照先进先出的模式进行排队,命令队列控制模块从各个队列中轮询取出管理命令、数据读写命令,并交付给微处理器执行;在启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令包含数据标识和优先级因子,数据读写命令按照先进先出的模式插入数据队列的尾部,并在下发给ssd固态盘的管理命令中增加了优先级因子,同时将此管理命令放到管理队列的头部,通过命令队列控制模块的调度,带有优先级因子的管理命令在下一个循环中优先交付给微处理器执行,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列。
9.进一步的,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列的过程为:a、遍历数据队列,把具有高优先级的数据读写命令从队列中取出;b、逐一遍历步骤a取出的数据读写命令所在队列的所有数据读写命令,将与它数据标识相同的所有数据读写命令逐一取出,与步骤a取出的数据读写命令组成临时数据队列;c、参照数据读写命令在原队列中的先后顺序排列临时数据队列中数据读写命令的先后顺序,并设置每个数据读写命令的优先级与最后一个命令的优先级相同;d、将构建完成后的临时队列插入到原数据队列的头部,形成新的数据队列。
10.进一步的,在微处理器的后续执行周期中,将优先调度设置优先级的数据队列,并优先完成设置了优先级的数据读写命令。
11.本发明还公开一种基于存储内容优先的ssd指令调度系统,包括管理队列、数据队列、命令队列控制模块和微控制器,管理队列在ssd固态盘中只有一个,用于存储所有的管理命令,数据队列的数量根据服务器主机的并发读写需要生成,管理队列、数据队列分别与命令队列控制模块相连,命令队列控制模块用于维护ssd固态盘运行过程中生成的管理命令队列、数据读写命令队列,微控制器与命令队列控制模块相连,负责ssd固态盘中所有管理命令控制和执行、所有数据读写命令的控制和执行,其特征在于:本系统在命令队列控制模块中增加优先级轮询处理机制,在数据读写命令中增加了所操作数据的标识和优先级因子;在未启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令按照先进先出的模式进行排队,命令队列控制模块从各个队列中轮询取出管理命令、数据读写命令,并交付给微处理器执行;在启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令包含数据标识和优先级因子,数据读写命令按照先进先出的模式插入数据队列的尾部,并在下发给ssd固态盘的管理命令中增加了优先级因子,同时将此管理命令放到管理队列的头部,通过命令队列控制模块的调度,带有优先级因子的管理命令在下一个循环中优先交付给微处理器执行,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并
开始轮询数据队列。
12.进一步的,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列的过程为:a、遍历数据队列,把具有高优先级的数据读写命令从队列中取出;b、逐一遍历步骤a取出的数据读写命令所在队列的所有数据读写命令,将与它数据标识相同的所有数据读写命令逐一取出,与步骤a取出的数据读写命令组成临时数据队列;c、参照数据读写命令在原队列中的先后顺序排列临时数据队列中数据读写命令的先后顺序,并设置每个数据读写命令的优先级与最后一个命令的优先级相同;d、将构建完成后的临时队列插入到原数据队列的头部,形成新的数据队列。
13.进一步的,在微处理器的后续执行周期中,将优先调度设置优先级的数据队列,并优先完成设置了优先级的数据读写命令。
14.本发明的有益效果:基于数据标识的数据读写命令优先级队列,未启用优先级因子时,所执行的队列构建流程、数据命令队列组成与标准的数据读写命令和队列相同,适用于标准ssd固态盘的使用场景;基于数据标识的数据读写命令优先级队列,在启用优先级因子后,构建的管理命令包含优先级字段,数据读写命令包含数据标识字段、优先级因子字段。命令队列控制模块能够按照数据读写命令中的优先级轮训执行数据读写命令,并且能够优先执行高优先级的数据读写命令,这种方式保证了高优先级应用的数据读写效率。
15.在重构队列的过程中,针对相同数据标识的数据读写命令设置了同等的优先级、并保持了原始的先后次序,保障了针对同一数据的多个读写命令在合并执行后的数据一致性。
16.基于数据标识的数据读写队列优先级模式,保证了ssd固态盘在繁忙状态下高优先级应用数据能够优先完成读写操作,这也进一步延长了低优先级应用完成读写操作的等待时间。
附图说明
17.图1为现有ssd固态盘的命令队列示意图;图2为配置数据标识和优先级的ssd固态盘命令队列示意图;图3为普通命令队列执行顺序和基于优先级的命令队列执行顺序示意图。
具体实施方式
18.下面结合附图和具体实施例对本发明作进一步的说明。
19.实施例1图1为现有ssd固态盘的命令队列示意图,包括管理队列、数据队列、命令队列控制模块和微控制器,管理队列在ssd固态盘中只有一个,用于存储所有的管理命令,数据队列的数量根据服务器主机的并发读写需要生成(4个),管理队列、数据队列分别与命令队列控制模块相连,命令队列控制模块用于维护ssd固态盘运行过程中生成的管理命令队列、数据
读写命令队列,微控制器与命令队列控制模块相连,负责ssd固态盘中所有管理命令控制和执行、所有数据读写命令的控制和执行。这种方式保证了每个主机内核都能访问固态硬盘,并且多个读写队列可以并行执行。这种设置多个并行读写命令队列的方式,保证了服务器主机多核处理器、ssd固态盘pcie主机接口、多nand flash存储介质的并发读写,极大的提升了并行读写带宽。但是在新型数据中心中,服务器主机需要处理的并发访问数量持续增长,现有的ssd固态盘调度方式会加大其等待的时间,造成了海量的访问争抢有限的资源,导致所有操作陷于长久的相互等待状态。
20.针对于此,本实施例公开一种基于存储内容优先的ssd指令调度系统,如图2所示,本系统在现有命令队列控制模块中增加优先级轮询处理机制,在数据读写命令中增加了所操作数据的标识和优先级因子;在未启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令按照先进先出的模式进行排队,命令队列控制模块从各个队列中轮询取出管理命令、数据读写命令,并交付给微处理器执行;在启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令包含数据标识和优先级因子,数据读写命令按照先进先出的模式插入数据队列的尾部,并在下发给ssd固态盘的管理命令中增加了优先级因子,同时将此管理命令放到管理队列的头部,通过命令队列控制模块的调度,带有优先级因子的管理命令在下一个循环中优先交付给微处理器执行,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列。
21.如图3所示,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列的过程为:a、遍历数据队列,把具有高优先级的数据读写命令从队列中取出;b、逐一遍历步骤a取出的数据读写命令所在队列的所有数据读写命令,将与它数据标识相同的所有数据读写命令逐一取出,与步骤a取出的数据读写命令组成临时数据队列;c、参照数据读写命令在原队列中的先后顺序排列临时数据队列中数据读写命令的先后顺序,并设置每个数据读写命令的优先级与最后一个命令的优先级相同;e、将构建完成后的临时队列插入到原数据队列的头部,形成新的数据队列。
22.在微处理器的后续执行周期中,将优先调度设置优先级的数据队列,并优先完成设置了优先级的数据读写命令。
23.实施例2本实施例公开一种基于存储内容优先的ssd指令调度方法,本方法针对服务器主机下发到ssd固态盘的大量数据读写命令,在构建数据队列时,增加了所操作数据的标识以及优先级因子;在未启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令按照先进先出的模式进行排队,命令队列控制模块从各个队列中轮询取出管理命令、数据读写命令,并交付给微处理器执行;在启动优先级因子时,服务器主机下发给ssd固态盘的数据读写命令包含数据标识和优先级因子,数据读写命令按照先进先出的模式插入数据队列的尾部,并在下发给ssd固态盘的管理命令中增加了优先级因子,同时将此管理命令放到管理队列的头部,通过命令队列控制模块的调度,带有优先级因子的管理命令在下一个循环中优先交付给微处理器执行,微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列。
24.微处理器根据最新的管理命令,启动基于优先级因子的命令队列控制模块,并开始轮询数据队列的过程为:a、遍历数据队列,把具有高优先级的数据读写命令从队列中取出;b、逐一遍历步骤a取出的数据读写命令所在队列的所有数据读写命令,将与它数据标识相同的所有数据读写命令逐一取出,与步骤a取出的数据读写命令组成临时数据队列;c、参照数据读写命令在原队列中的先后顺序排列临时数据队列中数据读写命令的先后顺序,并设置每个数据读写命令的优先级与最后一个命令的优先级相同;e、将构建完成后的临时队列插入到原数据队列的头部,形成新的数据队列。
25.微处理器的后续执行周期中,将优先调度设置优先级的数据队列,并优先完成设置了优先级的数据读写命令。
26.综上所述,本发明针对服务器主机下发到ssd固态盘的大量数据读写命令,在构建读写命令队列时,增加了所操作数据的标识(数据id)以及优先级因子(pri)。执行命令队列时,将具备同一数据标识的多个命令从队列中取出完成合并、提前或延后执行,将得到对应数据的最终一致性存储状态。这种设计方式,能够更加精准的控制固态盘中的读写命令,特别适合于高并发、多交叉应用环境中的大容量ssd固态盘数据的读写控制。
27.通过这套轮训的调度过程,就可以把所有数据读写命令队列中具有优先级的数据读写命令优先执行完成。
28.本发明所设计的命令队列中,每个读写命令包含了所操作数据的标识(数据id),将具备同一数据标识的多个命令从队列中取出完成合并、提前或延后执行,将得到对应数据的最终一致性存储状态;停留在原队列中的读写命令,继续按照队列中的顺序继续执行。
29.这种针对存储内容、可调整优先级的读写命令队列管理方式,能够适应大容量、高并发、多交叉读写访问的应用环境,并且能够为优先级高的应用提供高优先级的数据读写操作,为低优先级的应用提供低优先级的数据读写操作。在服务器的ssd固态盘应用环境中,针对服务器主机已经下发的读写命令,本发明能够针对某一指定的存储数据调整读写优先级,并能够合并执行指定数据的多个读写命令,实现了对盘内读写命令更加精准的控制,特别适合于高并发、多交叉应用环境中的大容量ssd固态盘中数据读写的精准调度。
30.以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1