CN117311995A - 一种存储系统的后台任务执行方法及其系统、控制器 - Google Patents
一种存储系统的后台任务执行方法及其系统、控制器 Download PDFInfo
- Publication number
- CN117311995A CN117311995A CN202311599837.8A CN202311599837A CN117311995A CN 117311995 A CN117311995 A CN 117311995A CN 202311599837 A CN202311599837 A CN 202311599837A CN 117311995 A CN117311995 A CN 117311995A
- Authority
- CN
- China
- Prior art keywords
- metadata
- executed
- stripe
- strip
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000009471 action Effects 0.000 claims abstract description 97
- 230000027455 binding Effects 0.000 claims abstract description 41
- 238000004590 computer program Methods 0.000 claims description 29
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 230000001960 triggered effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种存储系统的后台任务执行方法及其系统、控制器、存储介质,包括:确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。上述方法能够采用多核多线程的并行调度方式处理后台任务,提高后台任务的执行效率。
Description
技术领域
本申请涉及后台任务处理技术领域,特别是涉及一种存储系统的后台任务执行方法及其系统、控制器、存储介质。
背景技术
RAID(独立磁盘冗余阵列)是一种虚拟化技术,它将多个独立的物理硬盘按照不同的方式组合成一个虚拟磁盘组,从而解决了单磁盘容量小、性能低、可靠性差等缺点。在RAID运行过程中,由于硬盘的故障及恢复、固件升级等场景,常常伴随不同的后台任务。每种后台任务各自维护一张元数据表,用来标记后台任务执行过程中需要执行、已执行以及未执行条带等信息,执行过程中通过遍历元数据表查找需要执行的条带并执行具体动作。当前后台任务的处理方式是:通过单一CPU核遍历后台任务的整个元数据表查找待执行的条带,然后根据具体任务执行初始化、重构等不同的动作。此种方式,查找条带与对条带执行动作的流程为串行执行,影响后台任务的执行效率。
发明内容
基于此,有必要针对上述技术问题,提供一种存储系统的后台任务执行方法及其系统、控制器,能够采用多核多线程的并行调度方式处理后台任务,提高后台任务的执行效率。
一种存储系统的后台任务执行方法,包括:确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务;条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。
在其中一个实施例中,一种存储系统的后台任务执行方法还包括:确定后台任务的元数据表中元数据的数据量;若元数据的数据量小于或等于第一数据量,则配置第一操作信息,第一操作信息用于指示后台任务的搜索操作均通过遍历元数据表的方式查找元数据表中的各元数据,搜索操作包括存储系统的一个或多个待执行条带的查找操作;根据第一操作信息生成条带搜索任务。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;一种存储系统的后台任务执行方法还包括:若条带搜索任务还包括添加子任务,则在启动主线程时,遍历元数据表,查找空元数据,空元数据用于存储待添加的待执行条带;若条带搜索任务还包括删除子任务,则在启动主线程时,遍历元数据表,查找删除子任务对应的元数据。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,一种存储系统的后台任务执行方法还包括:若元数据的数据量大于第一数据量且小于或等于第二数据量,则配置第二操作信息,第二操作信息用于指示存储系统的一个或多个待执行条带的查找操作通过遍历元数据表的方式查找元数据表中的各元数据,以及指示添加元数据的查找操作和删除元数据的查找操作均通过哈希值确定起始索引的方式查找元数据表中的各元数据;根据第二操作信息生成条带搜索任务。
在其中一个实施例中,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;一种存储系统的后台任务执行方法还包括:若条带搜索任务还包括添加子任务,则在启动主线程时,根据待添加的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待添加的待执行条带对应的元数据的位置;若条带搜索任务还包括删除子任务,则在启动主线程时,根据待删除的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待删除的待执行条带对应的元数据的位置。
在其中一个实施例中,后台任务的元数据表中元数据为各待执行条带的条带号。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,一种存储系统的后台任务执行方法还包括:若元数据的数据量大于第二数据量,则配置第三操作信息,第三操作信息用于指示存储系统的一个或多个待执行条带的查找操作、添加元数据的查找操作和删除元数据的查找操作均通过比特位的方式查找元数据表中的各元数据;根据第三操作信息生成条带搜索任务。
在其中一个实施例中,元数据表中比特位1的元数据表示存在待执行条带,元数据表中比特位0的元数据表示不存在待执行条带;一种存储系统的后台任务执行方法还包括:若条带搜索任务还包括添加子任务,则在启动主线程时,识别出元数据表中比特位0的元数据,将识别出的比特位0的元数据置位为比特位1,并与待添加的待执行条带的条带标识信息关联;若条带搜索任务还包括删除子任务,则在启动主线程时,识别出元数据表中删除子任务对应的元数据,将识别出的元数据的比特位1设置为比特位0,并删除识别出的元数据关联的待删除的待执行条带的条带标识信息。
在其中一个实施例中,识别出元数据表中比特位0的元数据,包括:按照ULONG数据类型遍历元数据表;若遍历得到ULONG型变量为0,则将元数据表中任一元数据作为识别出的比特位0的元数据,若遍历得到ULONG型变量为非0,则将元数据表划分出第一部分元数据和第二部分元数据;按照ULONG数据类型遍历第二部分元数据,若遍历得到ULONG型变量为0,则将第二部分元数据中任一元数据作为识别出的比特位0的元数据。
在其中一个实施例中,后台任务的元数据表中包含比特位0的元数据和/或比特位1的元数据,各比特位1的元数据分别与各待执行条带的条带号关联。
在其中一个实施例中,条带暂存区采用数组方式保存一个或多个待执行条带的条带标识信息,条带暂存区中数组的存储区大于或等于启动的从线程的数量。
在其中一个实施例中,条带暂存区的数组中通过第一变量指示数组元素对应的待执行条带是否为空,条带暂存区的数组中通过第二变量指示数组元素对应的待执行条带是否正在被执行。
在其中一个实施例中,第二变量的第一标志位表示对应的待执行条带正在被执行,第二变量的第二标志位表示对应的待执行条带已执行完毕;动作执行任务还用于在对对应的待执行条带执行动作执行任务中配置的执行动作时,将对应的待执行条带在数组中的第二变量设置为第一标志位,并在动作执行结束后将对应的待执行条带在数组中的第二变量设置为第二标志位。
在其中一个实施例中,启动任一条或多条从线程,包括:为各从线程配置定时器;通过各定时器触发各从线程,以启动任一条或多条从线程。
在其中一个实施例中,一种存储系统的后台任务执行方法还包括:若启动的从线程未从条带暂存区获取任一条带标识信息,则向条带搜索引擎发送待执行条带的查找通知,以使得条带搜索引擎生成条带搜索任务。
一种控制器,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,处理器包括多个CPU核,处理器执行计算机程序时实现上述任一项方法的步骤。
一种后台任务执行系统,包括上述控制器,以及条带搜索引擎、条带暂存区,条带搜索引擎用于配置后台任务的条带搜索任务,条带暂存区用于存储一个或多个待执行条带的条带标识信息。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项的方法的步骤。
上述一种存储系统的后台任务执行方法及其系统、控制器、存储介质,确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务,条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。因此,将查找待执行条带和对待执行条带的执行动作并行处理,提升后台任务的执行效率,同时实现后台任务在多个CPU核上的调度和执行,避免常态下对CPU核的浪费。
附图说明
图1为一个实施例中的一种存储系统的后台任务执行方法的应用环境示意图;
图2为一个实施例中的一种存储系统的后台任务执行方法的流程示意图;
图3为一个实施例中的小规格的元数据表的数组示意图;
图4为一个实施例中的中规格的元数据表的数组示意图;
图5为一个实施例中的大规格的元数据表的搜索示意图;
图6为一个实施例中的一种后台任务执行系统的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,在本申请的描述中,除非上下文明确要求,否则整个说明书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
还应当理解,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
需要注意的是,术语“S1”、“S2”等仅用于步骤的描述目的,并非特别指称次序或顺位的意思,亦非用以限定本申请,其仅仅是为了方便描述本申请的方法,而不能理解为指示步骤的先后顺序。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本申请提供的一种存储系统的后台任务执行方法,应用于如图1所示的应用环境中。如图1所示,控制器中配置多个CPU核,控制器用于实现本申请的一种存储系统的后台任务执行方法。具体地,控制器接收条带搜索引擎发送的后台任务的条带搜索任务,确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务;条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。
在一个实施例中,本申请提供一种存储系统的后台任务执行方法。如图2所示,一种存储系统的后台任务执行方法包括如下步骤:
S202,确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定。
本实施例中,控制器中配置多个CPU核。线程池中配置主线程以及主线程的多条从线程。确定多个控制器中用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定。因此,该CPU核用于运行主线程的程序。将其他CPU核分别与各从线程绑定。因此,其他CPU核中各CPU核分别运行对应从线程的程序。
S204,将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务,条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中。
本实施例中,后台任务包括条带搜索任务和动作执行任务。条带搜索任务包括待执行条带的查找子任务。将后台任务中条带搜索任务绑定到主线程,启动主线程后,主线程绑定的CPU核执行条带搜索任务,从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中。其中,条带标识信息可以是待执行条带的条带号。
在一个示例中,条带暂存区采用数组方式保存一个或多个待执行条带的条带标识信息,条带暂存区中数组的存储区大于或等于启动的从线程的数量。
其中,条带暂存区的数组中通过第一变量指示数组元素对应的待执行条带是否为空,条带暂存区的数组中通过第二变量指示数组元素对应的待执行条带是否正在被执行。进一步地,第二变量的第一标志位表示对应的待执行条带正在被执行,第二变量的第二标志位表示对应的待执行条带已执行完毕;动作执行任务还用于在对对应的待执行条带执行动作执行任务中配置的执行动作时,将对应的待执行条带在数组中的第二变量设置为第一标志位,并在动作执行结束后将对应的待执行条带在数组中的第二变量设置为第二标志位。
具体地,条带暂存区采用一维数组方式保存待执行条带的条带标识信息,如号条带。条带暂存区中数组的存储区大于或等于启动的从线程的数量。其中,设置多个动作执行单元,各动作执行单元用于执行各从线程的动作执行任务。条带暂存区中数组的存储区大于或等于动作执行单元的数量,同时为所有动作执行单元提供条带支持。此外,通过变量valid中的每个比特位表示数组中对应索引位置是否空闲。通过变量active中的每个比特位表示数组中对应索引位置的待执行条带是否正在执行任务。当多线程同时获取待执行条带的条带号时,选择变量valid置位且变量active为0的条带号,以避免多动作执行单元同时访问同一待执行条带的情况发生。
S206,将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。
本实施例中,将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,被启动的从线程绑定的CPU核执行动作执行任务,从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。
具体地,在划分的后台任务的所有CPU核中选择一个CPU核,绑定主线程,其他多个CPU核绑定从线程。其中,执行条带搜索任务的条带搜索引擎位于主线程上,通过遍历元数据表查找到待执行条带,并将查找到的待执行条带的条带标识信息保存到条带暂存区中。条带暂存区,用于保存待执行条带的条带标识信息并在所有CPU核的线程上可见。在主线程和每个从线程上均创建一个动作执行单元,动作执行单元中配置动作执行任务。动作执行单元定时到条带暂存区获取待执行条带的条带标识信息并执行具体动作。当动作执行完成后,将待执行条带的条带标识信息从暂存区删除,并触发任务搜索引擎再次查找待执行条带。
因此,实现了后台任务在多个CPU核,多线程上的调度,提高CPU核的利用率,以提升整机的IO处理性能。
上述一种存储系统的后台任务执行方法,确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务,条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。因此,将查找待执行条带和对待执行条带的执行动作并行处理,提升后台任务的执行效率,同时实现后台任务在多个CPU核上的调度和执行,避免常态下对CPU核的浪费。
在一个实施例中,上述步骤S204,将后台任务中条带搜索任务绑定到主线程的步骤之前,还包括:确定后台任务的元数据表中元数据的数据量;若元数据的数据量小于或等于第一数据量,则配置第一操作信息,第一操作信息用于指示后台任务的搜索操作均通过遍历元数据表的方式查找元数据表中的各元数据,搜索操作包括存储系统的一个或多个待执行条带的查找操作;根据第一操作信息生成条带搜索任务。
其中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;上述步骤S204,将后台任务中条带搜索任务绑定到主线程的步骤之后,还包括:若条带搜索任务还包括添加子任务,则在启动主线程时,遍历元数据表,查找空元数据,空元数据用于存储待添加的待执行条带;若条带搜索任务还包括删除子任务,则在启动主线程时,遍历元数据表,查找删除子任务对应的元数据。其中,后台任务的元数据表中元数据为各待执行条带的条带号。
具体地,对于小规格的元数据表,采用遍历数组方式查找待执行条带、删除待执行条带以及添加待执行条带。其中,基于元数据表中元数据的数据量划分出小规格、中规格和大规格。如图3所示,小规格的元数据表,元数据的数据量较少,在查询待执行条带或者对元数据表进行添加或删除元数据时,遍历整个数组以获知待执行条带所在数组索引。其中,如图3所示,index表示索引,0-MAX表示数组的最小标号和最大标号。因此,可以快速查找到待执行条带所在数组索引,提高动作执行的效率。
在一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,上述步骤S204,将后台任务中条带搜索任务绑定到主线程的步骤之前,还包括:若元数据的数据量大于第一数据量且小于或等于第二数据量,则配置第二操作信息,第二操作信息用于指示存储系统的一个或多个待执行条带的查找操作通过遍历元数据表的方式查找元数据表中的各元数据,以及指示添加元数据的查找操作和删除元数据的查找操作均通过哈希值确定起始索引的方式查找元数据表中的各元数据;根据第二操作信息生成条带搜索任务。
其中,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;上述步骤S204,将后台任务中条带搜索任务绑定到主线程的步骤之后,还包括:若条带搜索任务还包括添加子任务,则在启动主线程时,根据待添加的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待添加的待执行条带对应的元数据的位置;若条带搜索任务还包括删除子任务,则在启动主线程时,根据待删除的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待删除的待执行条带对应的元数据的位置。其中,后台任务的元数据表中元数据为各待执行条带的条带号。
具体地,对于中规模的元数据表,当查询待执行条带时,需要遍历整个元数据表以获取待执行条带的条带标识信息,如条带号。如图4所示,当需要添加待执行条带或删除待执行条带的元数据时,利用条带号和阵列索引计算哈希值,通过计算哈希值(hash key)确定遍历元数据表的起始索引,从起始索引开始遍历整张元数据表,以增加查找命中率,提高增删等操作的执行效率。
上述两个示例中,对于小规格和大规格的元数据表,获取到待执行条带的条带号StrideNum后,更新当前游标位置CurSor=StrideNum+1,如果条带暂存区有空闲位置,则当前保存条带号到条带缓存区;如果条带暂存区没有空闲位置,则完成本次条带搜索。如果游标位置CurSor到达元数据表的最后元素位置,无法找到待执行条带,则后台任务调度完成。
在一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,上述步骤S204,将后台任务中条带搜索任务绑定到主线程的步骤之前,还包括:若元数据的数据量大于第二数据量,则配置第三操作信息,第三操作信息用于指示存储系统的一个或多个待执行条带的查找操作、添加元数据的查找操作和删除元数据的查找操作均通过比特位的方式查找元数据表中的各元数据;根据第三操作信息生成条带搜索任务。
在一示例中,元数据表中比特位1的元数据表示存在待执行条带,元数据表中比特位0的元数据表示不存在待执行条带;上述步骤S204,将后台任务中条带搜索任务绑定到主线程的步骤之后,还包括:若条带搜索任务还包括添加子任务,则在启动主线程时,识别出元数据表中比特位0的元数据,将识别出的比特位0的元数据置位为比特位1,并与待添加的待执行条带的条带标识信息关联;若条带搜索任务还包括删除子任务,则在启动主线程时,识别出元数据表中删除子任务对应的元数据,将识别出的元数据的比特位1设置为比特位0,并删除识别出的元数据关联的待删除的待执行条带的条带标识信息。
在一示例中,上述识别出元数据表中比特位0的元数据,包括:按照ULONG数据类型遍历元数据表;若遍历得到ULONG型变量为0,则将元数据表中任一元数据作为识别出的比特位0的元数据,若遍历得到ULONG型变量为非0,则将元数据表划分出第一部分元数据和第二部分元数据;按照ULONG数据类型遍历第二部分元数据,若遍历得到ULONG型变量为0,则将第二部分元数据中任一元数据作为识别出的比特位0的元数据。
其中,后台任务的元数据表中包含比特位0的元数据和/或比特位1的元数据,各比特位1的元数据分别与各待执行条带的条带号关联。
具体地,对于大规模的元数据,使用一个比特位表示一个待执行条带,通过置位和清零来表示对待执行条带执行与否。对于当查找待执行条带时,为提升搜索性能采用分级判断方式,如图5所示,分级判断逻辑如下:
1. 按照ULONG数据类型遍历元数据表,ULONG数据类型采用64比特变脸,判断该变量meta64是否为全0;
1.1. 如果变量meta64为0,则跳转到下一个ULONG型变量,再次执行步骤1。
1.2. 如果变量meta64非0,则将ULONG型变量meta64拆分成两个UINT型变量meta32,并依次判断两个变量meta32是否为0。
1.2.1. 如果第一个变量meta32为0,则跳转到下一个变量meta32,如果第二个变量meta32为0,则跳转到步骤1,以检查下一个ULONG变量meta64。
1.2.2. 如果变量meta32非0, 则将UINT型变量划分成4个BYTE类型变量meta8,依次判断四个变量meta8是否为全0;
1.2.2.1. 如果变量meta8为0,以跳转到下一个BYTE类型。
1.2.2.2. 如果变量meta8非为0,则遍历这8个比特位,以获取待执行条带。
上述实施例,条带搜索引擎根据元数据表的规模大小,控制元数据表不同的访问形式,以提高元数据表中元数据的访问效率,实现条带的快速查找,提高后台任务调度效率,提高存储系统应对硬盘故障等场景的能力,提供产品竞争力。其中,对于大规模元数据采用比特位的方式进行管理。采用分级判断的方式,实现待执行条带的快速搜索。
在一个实施例中,上述启动任一条或多条从线程的步骤,包括:为各从线程配置定时器;通过各定时器触发各从线程,以启动任一条或多条从线程。
在一个示例中,上述启动任一条或多条从线程的步骤之后,还包括:若启动的从线程未从条带暂存区获取任一条带标识信息,则向条带搜索引擎发送待执行条带的查找通知,以使得条带搜索引擎生成条带搜索任务。
具体地,配置多个动作执行单元。在各主线程和各从线程上均创建动作执行单元。每个动作执行单元通过定时器触发,触发后从条带暂存区查找待执行条带。如果没有可执行的待执行条带,则通知条带搜索引擎发起查找,如果游标位置CurSor到达元数据表的最后索引位置,则表示后台任务的调度完成。当待执行条带被执行时,将条带暂存区的变量active标志中,设置条带号所在索引位置置位。当待执行条带执行完成后,将其条带号在条带暂存区变量active标志中对应的索引位置清零,并从条带暂存区中删除条带号并将条带暂存区变量valid标志中条带号对应索引位置清零,再次发起条带搜索引擎发起查找。
上述一种存储系统的后台任务执行方法,将后台任务调度执行过程,划分成条带搜索引擎、条带暂存区、用于执行各线程的动作执行单元三部分。其中:
条带搜索引擎:根据元数据表的规模大小,采用不同元数据访问方式,以提高元数据的访问效率。其中,对于大规模元数据,采用比特地图方式进行管理。采用分级判断的方式,实现待执行条带的快速搜索。
条带暂存区:其空间设置大于等于动作执行单元的数量,可同时为所有动作执行单元提供条带支持。通过添加变量valid和变量active等标记,避免多线程同时访问同一个条带的情况。
动作执行单元:从条带暂存区获取待执行条带号。每次动作执行完成后,从条带暂存区中删除条带号。如果条带暂存区没有有效条带号后,再发起条带搜索。当条带搜索引擎遍历到最后一个条带且条带暂存区没有有效条带号,判断后台任务执行完成。
应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种控制器,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,处理器包括多个CPU核,处理器执行计算机程序时实现以下步骤:确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务,条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。
在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:确定后台任务的元数据表中元数据的数据量;若元数据的数据量小于或等于第一数据量,则配置第一操作信息,第一操作信息用于指示后台任务的搜索操作均通过遍历元数据表的方式查找元数据表中的各元数据,搜索操作包括存储系统的一个或多个待执行条带的查找操作;根据第一操作信息生成条带搜索任务。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;处理器执行计算机程序时还实现以下步骤:若条带搜索任务还包括添加子任务,则在启动主线程时,遍历元数据表,查找空元数据,空元数据用于存储待添加的待执行条带;若条带搜索任务还包括删除子任务,则在启动主线程时,遍历元数据表,查找删除子任务对应的元数据。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,处理器执行计算机程序时还实现以下步骤:若元数据的数据量大于第一数据量且小于或等于第二数据量,则配置第二操作信息,第二操作信息用于指示存储系统的一个或多个待执行条带的查找操作通过遍历元数据表的方式查找元数据表中的各元数据,以及指示添加元数据的查找操作和删除元数据的查找操作均通过哈希值确定起始索引的方式查找元数据表中的各元数据;根据第二操作信息生成条带搜索任务。
在其中一个实施例中,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;处理器执行计算机程序时还实现以下步骤:若条带搜索任务还包括添加子任务,则在启动主线程时,根据待添加的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待添加的待执行条带对应的元数据的位置;若条带搜索任务还包括删除子任务,则在启动主线程时,根据待删除的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待删除的待执行条带对应的元数据的位置。
在其中一个实施例中,后台任务的元数据表中元数据为各待执行条带的条带号。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,处理器执行计算机程序时还实现以下步骤:若元数据的数据量大于第二数据量,则配置第三操作信息,第三操作信息用于指示存储系统的一个或多个待执行条带的查找操作、添加元数据的查找操作和删除元数据的查找操作均通过比特位的方式查找元数据表中的各元数据;根据第三操作信息生成条带搜索任务。
在其中一个实施例中,元数据表中比特位1的元数据表示存在待执行条带,元数据表中比特位0的元数据表示不存在待执行条带;处理器执行计算机程序时还实现以下步骤:若条带搜索任务还包括添加子任务,则在启动主线程时,识别出元数据表中比特位0的元数据,将识别出的比特位0的元数据置位为比特位1,并与待添加的待执行条带的条带标识信息关联;若条带搜索任务还包括删除子任务,则在启动主线程时,识别出元数据表中删除子任务对应的元数据,将识别出的元数据的比特位1设置为比特位0,并删除识别出的元数据关联的待删除的待执行条带的条带标识信息。
在其中一个实施例中,处理器执行计算机程序实现上述识别出元数据表中比特位0的元数据的步骤时,具体实现以下步骤:按照ULONG数据类型遍历元数据表;若遍历得到ULONG型变量为0,则将元数据表中任一元数据作为识别出的比特位0的元数据,若遍历得到ULONG型变量为非0,则将元数据表划分出第一部分元数据和第二部分元数据;按照ULONG数据类型遍历第二部分元数据,若遍历得到ULONG型变量为0,则将第二部分元数据中任一元数据作为识别出的比特位0的元数据。
在其中一个实施例中,后台任务的元数据表中包含比特位0的元数据和/或比特位1的元数据,各比特位1的元数据分别与各待执行条带的条带号关联。
在其中一个实施例中,条带暂存区采用数组方式保存一个或多个待执行条带的条带标识信息,条带暂存区中数组的存储区大于或等于启动的从线程的数量。
在其中一个实施例中,条带暂存区的数组中通过第一变量指示数组元素对应的待执行条带是否为空,条带暂存区的数组中通过第二变量指示数组元素对应的待执行条带是否正在被执行。
在其中一个实施例中,第二变量的第一标志位表示对应的待执行条带正在被执行,第二变量的第二标志位表示对应的待执行条带已执行完毕;动作执行任务还用于在对对应的待执行条带执行动作执行任务中配置的执行动作时,将对应的待执行条带在数组中的第二变量设置为第一标志位,并在动作执行结束后将对应的待执行条带在数组中的第二变量设置为第二标志位。
在其中一个实施例中,处理器执行计算机程序实现上述的启动任一条或多条从线程的步骤时,具体实现以下步骤:为各从线程配置定时器;通过各定时器触发各从线程,以启动任一条或多条从线程。
在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:若启动的从线程未从条带暂存区获取任一条带标识信息,则向条带搜索引擎发送待执行条带的查找通知,以使得条带搜索引擎生成条带搜索任务。
本申请还提供一种后台任务执行系统。如图6所示,一种后台任务执行系统包括上述实施例的控制器,以及条带搜索引擎、条带暂存区。条带搜索引擎用于配置后台任务的条带搜索任务,条带暂存区用于存储一个或多个待执行条带的条带标识信息。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;将后台任务中条带搜索任务绑定到主线程,启动主线程,执行待执行条带的查找子任务,条带搜索任务包括待执行条带的查找子任务,待执行条带的查找子任务用于从后台任务的元数据表中查找出存储系统的一个或多个待执行条带,将一个或多个待执行条带的条带标识信息保存到条带暂存区中;将后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行动作执行任务,动作执行任务用于从条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对对应的待执行条带执行动作执行任务中配置的执行动作,在动作执行结束后删除条带暂存区中被获取的条带标识信息。
在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:确定后台任务的元数据表中元数据的数据量;若元数据的数据量小于或等于第一数据量,则配置第一操作信息,第一操作信息用于指示后台任务的搜索操作均通过遍历元数据表的方式查找元数据表中的各元数据,搜索操作包括存储系统的一个或多个待执行条带的查找操作;根据第一操作信息生成条带搜索任务。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;计算机程序被处理器执行时还实现以下步骤:若条带搜索任务还包括添加子任务,则在启动主线程时,遍历元数据表,查找空元数据,空元数据用于存储待添加的待执行条带;若条带搜索任务还包括删除子任务,则在启动主线程时,遍历元数据表,查找删除子任务对应的元数据。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,计算机程序被处理器执行时还实现以下步骤:若元数据的数据量大于第一数据量且小于或等于第二数据量,则配置第二操作信息,第二操作信息用于指示存储系统的一个或多个待执行条带的查找操作通过遍历元数据表的方式查找元数据表中的各元数据,以及指示添加元数据的查找操作和删除元数据的查找操作均通过哈希值确定起始索引的方式查找元数据表中的各元数据;根据第二操作信息生成条带搜索任务。
在其中一个实施例中,条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;计算机程序被处理器执行时还实现以下步骤:若条带搜索任务还包括添加子任务,则在启动主线程时,根据待添加的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待添加的待执行条带对应的元数据的位置;若条带搜索任务还包括删除子任务,则在启动主线程时,根据待删除的待执行条带的条带号和阵列索引计算哈希值,根据哈希值确定元数据表的起始索引,从起始索引开始查找元数据表中待删除的待执行条带对应的元数据的位置。
在其中一个实施例中,后台任务的元数据表中元数据为各待执行条带的条带号。
在其中一个实施例中,搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,计算机程序被处理器执行时还实现以下步骤:若元数据的数据量大于第二数据量,则配置第三操作信息,第三操作信息用于指示存储系统的一个或多个待执行条带的查找操作、添加元数据的查找操作和删除元数据的查找操作均通过比特位的方式查找元数据表中的各元数据;根据第三操作信息生成条带搜索任务。
在其中一个实施例中,元数据表中比特位1的元数据表示存在待执行条带,元数据表中比特位0的元数据表示不存在待执行条带;计算机程序被处理器执行时还实现以下步骤:若条带搜索任务还包括添加子任务,则在启动主线程时,识别出元数据表中比特位0的元数据,将识别出的比特位0的元数据置位为比特位1,并与待添加的待执行条带的条带标识信息关联;若条带搜索任务还包括删除子任务,则在启动主线程时,识别出元数据表中删除子任务对应的元数据,将识别出的元数据的比特位1设置为比特位0,并删除识别出的元数据关联的待删除的待执行条带的条带标识信息。
在其中一个实施例中,计算机程序被处理器执行实现上述识别出元数据表中比特位0的元数据的步骤时,具体实现以下步骤:按照ULONG数据类型遍历元数据表;若遍历得到ULONG型变量为0,则将元数据表中任一元数据作为识别出的比特位0的元数据,若遍历得到ULONG型变量为非0,则将元数据表划分出第一部分元数据和第二部分元数据;按照ULONG数据类型遍历第二部分元数据,若遍历得到ULONG型变量为0,则将第二部分元数据中任一元数据作为识别出的比特位0的元数据。
在其中一个实施例中,后台任务的元数据表中包含比特位0的元数据和/或比特位1的元数据,各比特位1的元数据分别与各待执行条带的条带号关联。
在其中一个实施例中,条带暂存区采用数组方式保存一个或多个待执行条带的条带标识信息,条带暂存区中数组的存储区大于或等于启动的从线程的数量。
在其中一个实施例中,条带暂存区的数组中通过第一变量指示数组元素对应的待执行条带是否为空,条带暂存区的数组中通过第二变量指示数组元素对应的待执行条带是否正在被执行。
在其中一个实施例中,第二变量的第一标志位表示对应的待执行条带正在被执行,第二变量的第二标志位表示对应的待执行条带已执行完毕;动作执行任务还用于在对对应的待执行条带执行动作执行任务中配置的执行动作时,将对应的待执行条带在数组中的第二变量设置为第一标志位,并在动作执行结束后将对应的待执行条带在数组中的第二变量设置为第二标志位。
在其中一个实施例中,计算机程序被处理器执行实现上述的启动任一条或多条从线程的步骤时,具体实现以下步骤:为各从线程配置定时器;通过各定时器触发各从线程,以启动任一条或多条从线程。
在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:若启动的从线程未从条带暂存区获取任一条带标识信息,则向条带搜索引擎发送待执行条带的查找通知,以使得条带搜索引擎生成条带搜索任务。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。
Claims (18)
1.一种存储系统的后台任务执行方法,其特征在于,所述方法包括:
确定用于处理存储系统的后台任务的多个CPU核,将任一CPU核与主线程绑定且将其他CPU核与各从线程绑定;
将所述后台任务中条带搜索任务绑定到所述主线程,启动所述主线程,执行待执行条带的查找子任务;所述条带搜索任务包括待执行条带的查找子任务,所述待执行条带的查找子任务用于从所述后台任务的元数据表中查找出所述存储系统的一个或多个待执行条带,将所述一个或多个待执行条带的条带标识信息保存到条带暂存区中;
将所述后台任务中动作执行任务分别绑定到各从线程,启动任一条或多条从线程,执行所述动作执行任务,所述动作执行任务用于从所述条带暂存区获取任一条带标识信息,并基于获取的条带标识信息识别出对应的待执行条带,对所述对应的待执行条带执行所述动作执行任务中配置的执行动作,在动作执行结束后删除所述条带暂存区中被获取的条带标识信息。
2.根据权利要求1所述的后台任务执行方法,其特征在于,所述方法还包括:
确定所述后台任务的元数据表中元数据的数据量;
若所述元数据的数据量小于或等于第一数据量,则配置第一操作信息,所述第一操作信息用于指示所述后台任务的搜索操作均通过遍历元数据表的方式查找所述元数据表中的各元数据,所述搜索操作包括所述存储系统的一个或多个待执行条带的查找操作;
根据所述第一操作信息生成所述条带搜索任务。
3.根据权利要求2所述的后台任务执行方法,其特征在于,所述搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,所述条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;
所述方法还包括:
若所述条带搜索任务还包括所述添加子任务,则在启动所述主线程时,遍历所述元数据表,查找空元数据,所述空元数据用于存储待添加的待执行条带;
若所述条带搜索任务还包括所述删除子任务,则在启动所述主线程时,遍历所述元数据表,查找所述删除子任务对应的元数据。
4.根据权利要求2所述的后台任务执行方法,其特征在于,所述搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,所述方法还包括:
若所述元数据的数据量大于第一数据量且小于或等于第二数据量,则配置第二操作信息,所述第二操作信息用于指示所述存储系统的一个或多个待执行条带的查找操作通过遍历元数据表的方式查找所述元数据表中的各元数据,以及指示所述添加元数据的查找操作和所述删除元数据的查找操作均通过哈希值确定起始索引的方式查找所述元数据表中的各元数据;
根据所述第二操作信息生成所述条带搜索任务。
5.根据权利要求4所述的后台任务执行方法,其特征在于,所述条带搜索任务还包括待执行条带的添加子任务或待执行条带的删除子任务;
所述方法还包括:
若所述条带搜索任务还包括所述添加子任务,则在启动所述主线程时,根据待添加的待执行条带的条带号和阵列索引计算哈希值,根据所述哈希值确定所述元数据表的起始索引,从所述起始索引开始查找所述元数据表中所述待添加的待执行条带对应的元数据的位置;
若所述条带搜索任务还包括所述删除子任务,则在启动所述主线程时,根据待删除的待执行条带的条带号和阵列索引计算哈希值,根据所述哈希值确定所述元数据表的起始索引,从所述起始索引开始查找所述元数据表中所述待删除的待执行条带对应的元数据的位置。
6.根据权利要求5所述的后台任务执行方法,其特征在于,所述后台任务的元数据表中元数据为各待执行条带的条带号。
7.根据权利要求2所述的后台任务执行方法,其特征在于,所述搜索操作还包括添加元数据的查找操作以及删除元数据的查找操作,所述方法还包括:
若所述元数据的数据量大于第二数据量,则配置第三操作信息,所述第三操作信息用于指示所述存储系统的一个或多个待执行条带的查找操作、所述添加元数据的查找操作和所述删除元数据的查找操作均通过比特位的方式查找所述元数据表中的各元数据;
根据所述第三操作信息生成所述条带搜索任务。
8.根据权利要求7所述的后台任务执行方法,其特征在于,所述元数据表中比特位1的元数据表示存在待执行条带,所述元数据表中比特位0的元数据表示不存在待执行条带;
所述方法还包括:
若所述条带搜索任务还包括添加子任务,则在启动所述主线程时,识别出所述元数据表中比特位0的元数据,将识别出的比特位0的元数据置位为比特位1,并与待添加的待执行条带的条带标识信息关联;
若所述条带搜索任务还包括删除子任务,则在启动所述主线程时,识别出所述元数据表中所述删除子任务对应的元数据,将识别出的元数据的比特位1设置为比特位0,并删除所述识别出的元数据关联的待删除的待执行条带的条带标识信息。
9.根据权利要求8所述的后台任务执行方法,其特征在于,所述识别出所述元数据表中比特位0的元数据,包括:
按照ULONG数据类型遍历所述元数据表;
若遍历得到ULONG型变量为0,则将所述元数据表中任一元数据作为所述识别出的比特位0的元数据,若遍历得到ULONG型变量为非0,则将所述元数据表划分出第一部分元数据和第二部分元数据;
按照ULONG数据类型遍历所述第二部分元数据,若遍历得到ULONG型变量为0,则将所述第二部分元数据中任一元数据作为所述识别出的比特位0的元数据。
10.根据权利要求7所述的后台任务执行方法,其特征在于,所述后台任务的元数据表中包含比特位0的元数据和/或比特位1的元数据,各比特位1的元数据分别与各待执行条带的条带号关联。
11.根据权利要求1所述的后台任务执行方法,其特征在于,所述条带暂存区采用数组方式保存所述一个或多个待执行条带的条带标识信息,所述条带暂存区中数组的存储区大于或等于启动的从线程的数量。
12.根据权利要求11所述的后台任务执行方法,其特征在于,所述条带暂存区的数组中通过第一变量指示数组元素对应的待执行条带是否为空,所述条带暂存区的数组中通过第二变量指示数组元素对应的待执行条带是否正在被执行。
13.根据权利要求12所述的后台任务执行方法,其特征在于,所述第二变量的第一标志位表示对应的待执行条带正在被执行,所述第二变量的第二标志位表示对应的待执行条带已执行完毕;
所述动作执行任务还用于在对所述对应的待执行条带执行所述动作执行任务中配置的执行动作时,将所述对应的待执行条带在所述数组中的第二变量设置为第一标志位,并在动作执行结束后将所述对应的待执行条带在所述数组中的第二变量设置为第二标志位。
14.根据权利要求1所述的后台任务执行方法,其特征在于,所述启动任一条或多条从线程,包括:
为各从线程配置定时器;
通过各定时器触发各从线程,以启动任一条或多条从线程。
15.根据权利要求14所述的后台任务执行方法,其特征在于,所述方法还包括:
若启动的从线程未从所述条带暂存区获取任一条带标识信息,则向条带搜索引擎发送待执行条带的查找通知,以使得所述条带搜索引擎生成所述条带搜索任务。
16.一种控制器,其特征在于,包括处理器、存储器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器包括多个CPU核,所述处理器执行所述计算机程序时实现权利要求1至15中任一项所述方法的步骤。
17.一种后台任务执行系统,其特征在于,包括权利要求16所述的控制器,以及条带搜索引擎、条带暂存区,所述条带搜索引擎用于配置后台任务的条带搜索任务,所述条带暂存区用于存储一个或多个待执行条带的条带标识信息。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311599837.8A CN117311995B (zh) | 2023-11-28 | 2023-11-28 | 一种存储系统的后台任务执行方法及其系统、控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311599837.8A CN117311995B (zh) | 2023-11-28 | 2023-11-28 | 一种存储系统的后台任务执行方法及其系统、控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117311995A true CN117311995A (zh) | 2023-12-29 |
CN117311995B CN117311995B (zh) | 2024-02-23 |
Family
ID=89288747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311599837.8A Active CN117311995B (zh) | 2023-11-28 | 2023-11-28 | 一种存储系统的后台任务执行方法及其系统、控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117311995B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090083319A1 (en) * | 2007-09-20 | 2009-03-26 | Xyratex Technology Limited | Method of executing a background task and an array controller |
CN102521068A (zh) * | 2011-11-08 | 2012-06-27 | 华中科技大学 | 一种固态盘阵列的重建方法 |
CN102710497A (zh) * | 2012-04-24 | 2012-10-03 | 汉柏科技有限公司 | 多核多线程网络设备的报文处理方法及系统 |
US8296515B1 (en) * | 2009-05-22 | 2012-10-23 | Nvidia Corporation | RAID-6 computation system and method |
CN104050033A (zh) * | 2013-03-15 | 2014-09-17 | 辉达公司 | 用于有索引的屏障的硬件调度的系统和方法 |
CN113704577A (zh) * | 2021-09-09 | 2021-11-26 | 北京天融信网络安全技术有限公司 | 基于多线程并发处理的数据查询方法及装置 |
CN114327813A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种磁盘阵列重构任务调度方法、装置、设备及存储介质 |
CN114780025A (zh) * | 2022-03-29 | 2022-07-22 | 华中科技大学 | 软件raid请求处理方法、控制器及raid存储系统 |
-
2023
- 2023-11-28 CN CN202311599837.8A patent/CN117311995B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090083319A1 (en) * | 2007-09-20 | 2009-03-26 | Xyratex Technology Limited | Method of executing a background task and an array controller |
US8296515B1 (en) * | 2009-05-22 | 2012-10-23 | Nvidia Corporation | RAID-6 computation system and method |
CN102521068A (zh) * | 2011-11-08 | 2012-06-27 | 华中科技大学 | 一种固态盘阵列的重建方法 |
CN102710497A (zh) * | 2012-04-24 | 2012-10-03 | 汉柏科技有限公司 | 多核多线程网络设备的报文处理方法及系统 |
CN104050033A (zh) * | 2013-03-15 | 2014-09-17 | 辉达公司 | 用于有索引的屏障的硬件调度的系统和方法 |
CN113704577A (zh) * | 2021-09-09 | 2021-11-26 | 北京天融信网络安全技术有限公司 | 基于多线程并发处理的数据查询方法及装置 |
CN114327813A (zh) * | 2021-11-30 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种磁盘阵列重构任务调度方法、装置、设备及存储介质 |
CN114780025A (zh) * | 2022-03-29 | 2022-07-22 | 华中科技大学 | 软件raid请求处理方法、控制器及raid存储系统 |
Non-Patent Citations (2)
Title |
---|
RAJIB NATH等: "Temperature aware thread block scheduling in GPGPUs", 《2013 50TH ACM/EDAC/IEEE DESIGN AUTOMATION CONFERENCE (DAC)》 * |
徐伟: "基于备份的RAID6在线重构框架", 《计算机应用与软件》 * |
Also Published As
Publication number | Publication date |
---|---|
CN117311995B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10783071B2 (en) | Data storage device and operating method thereof, wherein mapping table for valid data of source block that has not been copied to destination block has a higher priority than mapping information collected by reverse scanning from end of the destination block | |
CN110347336B (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
JP7395227B2 (ja) | データバックアップ方法、装置、サーバ及びコンピュータプログラム | |
US10452608B2 (en) | Log-structured file system | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
CN107818269B (zh) | 一种基于Flash的文件保存方法及系统 | |
JP2007012056A (ja) | データ保全の先送りされた認証を有するファイルシステム | |
JP2011154547A (ja) | メモリ管理装置及びメモリ管理方法 | |
JP2007012058A (ja) | フラッシュ様媒体におけるトランザクションレコードを格納するファイルシステム | |
JP2007012054A (ja) | ファイルシステム保全の最適化されたスタートアップ認証 | |
JP2007012060A (ja) | 逆階層構造を有するファイルシステム | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN111522507B (zh) | 一种低延迟的文件系统地址空间管理方法、系统及介质 | |
CN101853275A (zh) | 一种fat文件系统的数据管理方法和系统 | |
CN113515501A (zh) | 非易失性内存数据库管理系统恢复方法、装置和电子设备 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN103365926A (zh) | 在文件系统中用于保存快照的方法和装置 | |
WO2017054636A1 (zh) | 虚拟快照处理方法及装置 | |
CN112416860B (zh) | 数据回滚更新方法、装置、计算机设备和存储介质 | |
US20090112951A1 (en) | Apparatus and method of managing files and memory device | |
CN117311995B (zh) | 一种存储系统的后台任务执行方法及其系统、控制器 | |
US9009204B2 (en) | Storage system | |
WO2018233820A1 (en) | SYSTEMS AND METHODS FOR MANAGING JOURNAL STRUCTURE | |
CN116661690A (zh) | 记录内存状态的方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |