CN117149437A - 存储系统任务调度方法、装置、设备和存储介质 - Google Patents
存储系统任务调度方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN117149437A CN117149437A CN202311262351.5A CN202311262351A CN117149437A CN 117149437 A CN117149437 A CN 117149437A CN 202311262351 A CN202311262351 A CN 202311262351A CN 117149437 A CN117149437 A CN 117149437A
- Authority
- CN
- China
- Prior art keywords
- task
- utilization rate
- cpu core
- cpu
- time period
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000004044 response Effects 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种存储系统任务调度方法、装置、设备和存储介质,该方法包括:对存储设备的每一个CPU核心设置任务链表,其中,所述CPU核心和所述任务链表一一对应,所述任务链表用于记录所述CPU核心执行的任务;基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率;当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。本申请可以实现存储系统内资源的合理配置,提高CPU的效能,加快处理速度,实现存储系统CPU的有效利用。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种存储系统任务调度方法、装置、设备和存储介质。
背景技术
目前,存储控制器主要用于存储端的硬盘及其上存储的数据管理,同时对服务器端提供数据访问服务。在对服务器端提供数据访问的过程中,由于短时间内处理的I/O(Input and Output,数据输入输出)数量巨大,存储控制器中的CPU(Central ProcessingUnit,中央处理器)承担了大量的解包、读盘、写盘操作,在存储领域,一个数据I/O在后端的处理中会经历存储卷、存储池、raid(Redundant Arrays ofIndependent Disks,磁盘冗余阵列)、存储盘等多个操作阶段。在数据存储设备中,存储系统通常会传输大量的数据,承受较大的I/O压力,I/O数量一般上万甚至几万。现代的计算机CPU一般是多核的,可以执行多线程。
现有技术中,一般的任务调度方法只是统计CPU过去一个时间段内的利用率,然后利用率高少派发任务,利用率低多派发任务,显然这种情况会让过去CPU利用率高的核心在将来执行任务数量减少,CPU利用率低的核心将来执行任务数量多,从而使CPU利用率一会高一会低,呈现为波浪式利用率曲线,不能很好的发挥CPU的效能。如何加快存储系统各阶段的处理速度,提高CPU的效能是亟需解决的技术问题。
发明内容
基于此,本申请提供了一种存储系统任务调度方法、装置、设备和存储介质,通过为每个CPU核心设置特定的任务链表,根据过去一段时间内CPU的利用率,预测未来CPU执行任务列表中剩余的待执行任务需要的待使用利用率,将每一个CPU的待使用利用率作为分发新任务的参考依据,确定待使用利用率最小的CPU执行新任务,可以实现存储系统内资源的合理配置,提高CPU的效能,加快处理速度,实现存储系统CPU的有效利用,以解决现有技术中存在的问题。
第一方面,提供一种存储系统任务调度方法,该方法包括:
对存储设备的每一个CPU核心设置任务链表,其中,所述CPU核心和所述任务链表一一对应,所述任务链表用于记录所述CPU核心执行的任务;
基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率;
当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。
根据本申请实施例中一种可实现的方式,所述基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,包括:
在所述任务链表中获取所述CPU核心在预设时间段内执行的任务数量和待执行的任务数量;
计算所述CPU核心在预设时间段内的利用率;
基于所述CPU核心在预设时间段内的利用率和所述CPU核心在预设时间段内执行的任务数量,计算所述CPU核心执行每一个任务的平均利用率;
基于所述平均利用率和所述待执行任务数量计算CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率。
根据本申请实施例中一种可实现的方式,所述预设时间段包括第一时间段和第二时间段;
所述计算所述CPU核心在预设时间段内的利用率,包括:
在所述任务链表中分别获取所述CPU核心在第一时间段内的利用率和所述CPU核心在第二时间段内的利用率;
确定所述CPU核心在第一时间段内的第一权重系数和第二时间段内的第二权重系数;
根据所述CPU核心在第一时间段内的利用率和所述第一权重系数计算在第一时间段内的权重利用率,根据所述CPU核心在第二时间段内的利用率和所述第二权重系数计算在第二时间段内的权重利用率;
根据所述第一时间段内的权重利用率和所述第二时间段内的权重利用率计算所述CPU核心在预设时间段内的利用率。
根据本申请实施例中一种可实现的方式,所述对存储设备的每一个CPU核心设置任务链表,包括:
对存储设备的每一个CPU核心设置对应的任务线程,所述任务线程配置有用于记录所述CPU核心执行任务的任务链表,其中,所述CPU核心和所述任务链表一一对应。
根据本申请实施例中一种可实现的方式,所述确定待使用利用率最小的CPU核心执行所述新任务,包括:
将所述利用率最小的CPU核心作为目标CPU核心,将所述目标CPU核心对应的任务线程作为目标线程;
将所述新任务添加到所述目标线程的任务队列中,并在所述目标线程对应的任务链表中,将所述新任务记录为待执行任务。
根据本申请实施例中一种可实现的方式,所述当有新任务产生时,确定待使用利用率最小的CPU核心执行所述新任务,包括:
设置全局变量记录当前待使用利用率最小的CPU核心的标识信息和对应的当前最小待使用利用率的数量;
当新任务产生时,根据所述全局变量访问所述当前待使用利用率最小的CPU核心,并确定当前待使用利用率最小的CPU核心执行新任务;
响应于任一个CPU核心在执行完预设数量的任务或执行完预设时间段的任务更新所述任一个CPU核心的待使用利用率,比较所述任一个CPU核心的待使用利用率与所述全局变量中记录的当前最小待使用利用率的数量;
若所述任一个CPU核心的待使用利用率的数量小于所述当前最小待使用利用率的数量;则将所述任一个CPU核心的标识信息更新为当前待使用利用率最小的CPU核心的标识信息,将所述任一个CPU核心的待使用利用率的数量更新为当前最小待使用利用率的数量。
根据本申请实施例中一种可实现的方式,所述方法还包括:
在所述任务链表中设置每一个CPU核心执行任务的数量上限和执行任务的时间上限;
响应于任一个CPU核心执行任务的数量到达所述数量上限或所述CPU核心执行任务的时间到达所述时间上限,更新所述任一个CPU核心的待使用利用率。
第二方面,提供了一种存储系统任务调度装置,该装置包括:
设置模块:用于对存储设备的每一个CPU核心设置任务链表,其中,所述CPU核心和所述任务链表一一对应,所述任务链表用于记录所述CPU核心执行的任务;
计算模块:用于基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率;
执行模块:用于当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。
第三方面,提供了一种计算机设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机指令,所述计算机指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面中涉及的方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令用于使计算机执行上述第一方面中涉及的方法。
根据本申请实施例所提供的技术内容,本申请通过对存储设备的每一个CPU核心设置任务链表,然后,基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。本申请通过为每个CPU核心设置特定的任务链表,根据过去一段时间内CPU的利用率,预测未来CPU执行任务列表中剩余的待执行任务需要的待使用利用率,将每一个CPU的待使用利用率作为分发新任务的参考依据,确定待使用利用率最小的CPU执行新任务,可以实现存储系统内资源的合理配置,提高CPU的效能,加快处理速度,实现存储系统CPU的有效利用。
附图说明
图1为一个实施例中存储系统任务调度方法的流程示意图;
图2为一个实施例中存储系统任务调度方法的示意图;
图3为一个实施例中存储系统任务调度装置的结构框图;
图4为一个实施例中计算机设备的示意性结构图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为本申请实施例提供的一种存储系统任务调度方法的流程图,如图1所示,该方法可以包括以下步骤:
步骤101:对存储设备的每一个CPU核心设置任务链表,其中,CPU核心和任务链表一一对应,任务链表用于记录CPU核心执行的任务。
具体地,存储设备主要用于存储端的硬盘及其上存储的数据管理,同时对服务器端提供数据访问服务。在对服务器端提供数据访问的过程中,现代计算机中央处理器即CPU一般是多核的,可以执行多线程。如图2所示,根据系统中CPU核心数量n发起n个线程,每个线程后有其对应的任务链表,CPU核心和任务链表一一对应,任务链表用于记录CPU核心执行的任务。链表上挂载着待线程处理的IO待执行的操作,即存储各阶段具体任务,这些任务根据一定的策略分发到各任务链表,等待执行。
步骤102:基于CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率。
具体地,CPU核心的利用率即CPU核心的使用率,表示为运行的程序在CPU资源中占用的比例。一般的CPU利用率统计机制表达为过去一个时间段内CPU执行任务时间对总时间的占比。预设时间段可以是自定义的,通过自定义的预设时间段,计算在过去一个预设时间段内CPU执行任务时间对总时间占比,得到CPU核心在预设时间段内的利用率。然后,根据每一个CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的CPU利用率。通过借助每个线程特定的任务链表机制,根据过去CPU的使用率,预测未来CPU执行任务列表中剩余的待执行任务需要的待使用利用率,作为分发新任务的参考依据。
步骤103:当有新任务产生时,确定待使用利用率最小的CPU核心作为执行新任务。
具体地,根据步骤102中计算得到的每一个CPU核心执行其任务链表中的待执行任务需要的待使用利用率之后,确定待使用利用率最小的CPU核心。当有新任务产生时,确定待使用利用率最小的CPU核心作为执行新任务。
可以看出,本申请实施例通过对存储设备的每一个CPU核心设置任务链表,然后,基于CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,当有新任务产生时,确定待使用利用率最小的CPU核心作为执行新任务。本申请通过为每个CPU核心设置特定的任务链表,根据过去一段时间内CPU的利用率,预测未来CPU执行任务列表中剩余的待执行任务需要的待使用利用率,将每一个CPU的待使用利用率作为分发新任务的参考依据,确定待使用利用率最小的CPU执行新任务,可以实现存储系统内资源的合理配置,提高CPU的效能,加快处理速度,实现存储系统CPU的有效利用。
在本申请的一个实施中,步骤102中的基于CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,包括:步骤1021:在任务链表中获取CPU核心在预设时间段内执行的任务数量和待执行的任务数量;步骤1022:计算CPU核心在预设时间段内的利用率;步骤1023:基于CPU核心在预设时间段内的利用率和CPU核心在预设时间段内执行的任务数量,计算CPU核心执行每一个任务的平均利用率;步骤1024:基于平均利用率和待执行任务数量计算CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率。
具体地,每个任务链表中记录了每个CPU核心已经执行的任务数量和待执行的任务数量,从任务链表中获取CPU核心在预设时间段内已经执行的任务数量和待执行的任务数量。然后,计算CPU核心在预设时间段内执行任务时的CPU利用率。然后,基于CPU核心在预设时间段内的利用率和CPU核心在预设时间段内执行的任务数量,计算CPU核心执行每一个任务的平均利用率。最后,基于平均利用率和待执行任务数量计算CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率。
例如,线程将任务不断从任务链表中摘下执行,并记录执行任务的数量n。
计算执行任务这段时间内cpu使用率,这里记cpu_utility。
获取过去一轮任务执行时,平均每个任务耗费的cpu利用率,计算方式如下:
cpu_avg=cpu_utility/n;
计算链表中剩余待执行任务需要消耗的CPU利用率,记为待使用利用率cpu_need,用于在新任务分配时作为分配依据,计算方式如下:
cpu_need=cpu_avg*task_count。
本申请的实施例,通过创新CPU利用率的计算方式,兼顾过去、及未来的CPU使用情况,更充分平衡的发挥CPU效能,提高软件运行效率,提高存储性能。
在本申请的一个实施中,预设时间段包括第一时间段和第二时间段;步骤1022中的计算CPU核心在预设时间段内的利用率,包括:在任务链表中分别获取CPU核心在第一时间段内的利用率和CPU核心在第二时间段内的利用率;确定CPU核心在第一时间段内的第一权重系数和第二时间段内的第二权重系数;根据CPU核心在第一时间段内的利用率和第一权重系数计算在第一时间段内的权重利用率,根据CPU核心在第二时间段内的利用率和第二权重系数计算在第二时间段内的权重利用率;根据第一时间段内的权重利用率和第二时间段内的权重利用率计算CPU核心在预设时间段内的利用率。
具体地,预设时间段包括第一时间段和第二时间段,第一时间段和第二时间段可以是自定义设置的两个时间段,二者的时间不存在重合,其中,第一时间段在第二时间段的时间之前。例如,第二时间段是刚刚过去的这一轮任务执行时间,第一时间段是更早之前使用CPU的时间段。
在计算CPU核心在预设时间段内的利用率的时候,首先,在任务链表中分别获取CPU核心在第一时间段内的利用率cpu_utility1和CPU核心在第二时间段内的利用率cpu_utility2。
其次,确定CPU核心在第一时间段内的第一权重系数a1和第二时间段内的第二权重系数a2。其中,a1和a2可以是自定义设置的,需要满足a1+a2=100%。设置a1为10%,a2为90%,
根据CPU核心在第一时间段内的利用率cpu_utility1和第一权重系数a1计算在第一时间段内的权重利用率记为u1,其中u1=cpu_utility1*a1。根据CPU核心在第二时间段内的利用率cpu_utility2和第二权重系数a2计算在第二时间段内的权重利用率记为u2,其中u2=cpu_utility2*a2。
根据第一时间段内的权重利用率和第二时间段内的权重利用率计算CPU核心在预设时间段内的利用率,记为u。其中,u=u1+u2=cpu_utility1*a1+cpu_utility2*a2。
本申请的实施例通过对过去的预设时间段分为第一时间段和第二时间段,其中二者时间不重合,并且分别为第一时间段的CPU利用率和第二时间段的CPU利用率设置不同的权重系数来计算CPU在过去的利用率,可以在计算CPU在刚过去的这一轮任务执行的利用率的同时兼顾更早之前使用CPU的使用情况,提高利用率的计算准确性。
在本申请的一个实施中,步骤101中对存储设备的每一个CPU核心设置任务链表,包括:对存储设备的每一个CPU核心设置对应的任务线程,任务线程配置有用于记录CPU核心执行任务的任务链表,其中,CPU核心和任务链表一一对应。
具体地,如图2所示,根据系统中CPU核心数量n发起n个线程,并设置线程CPU亲和性(即一一对应),使得线程与CPU核心呈现一对一的关系,每个线程只在一颗固定的CPU核心上运行,同时提高线程运行优先级,以此达到两方面目的,其一,减少由操作系统将线程调度到不同CPU核心上运行所带来的开销;其二,使上述业务线程获更高的CPU处理优先级,即获得更多运行时间。每个线程后有其对应的任务链表,链表上挂载着待线程处理的IO待执行的操作,即存储各阶段具体任务,这些任务根据一定的策略分发到各任务链表,等待执行。每一个CPU核心设置对应的任务线程,任务线程配置有用于记录CPU核心执行任务的任务链表,其中,CPU核心和任务链表一一对应。任务链表可以采用以下方法设置:task_count记录当前任务链表中待执行的任务数量,其后head&tail指针中保存待执行的任务,当有新任务根据CPU压力策略要分配到当前线程执行时,首先获取lock锁,将任务存入这两个指针维护的任务链表中,同时将待执行任务计数值task_count加1;当线程要执行任务链表中任务时,首先获取lock锁,将任务从head&tail维护的链表中取出,将待执行任务计数值减一,进而执行任务。同时,每个task_list任务链表中还都保有一个表示当前线程CPU利用率的变量,在每次执行完一轮链表中任务后更新。
本申请的实施例通过借助每个线程特定的任务链表机制,不仅将过去CPU的使用率作为分发新任务的参考依据,同时根据当前任务链表中待执行的任务总量,预测未来CPU利用率,以此为基础执行当前新任务的分发,提高了资源的利用率和CPU的使用效能。
在本申请的一个实施例中,步骤103中,确定待使用利用率最小的CPU核心执行新任务,包括:将利用率最小的CPU核心作为目标CPU核心,将目标CPU核心对应的任务线程作为目标线程;将新任务添加到目标线程的任务队列中,并在目标线程对应的任务链表中,将新任务记录为待执行任务。
具体地,根据系统中CPU核心数量n发起n个线程,并设置线程CPU亲和性,即线程与CPU核心呈现一对一的关系,每个线程只在一颗固定的CPU核心上运行,同时提高线程运行优先级。各线程运行其对应任务链表中等待执行的任务,执行任务的数量,可通过设置执行任务数量上限或执行时间上限等多种方式来限制。各线程在执行任务过程中,若又有新的任务产生,则首先访问各个CPU的待使用利用率,拿到压力最小的CPU。将利用率最小的CPU核心作为目标CPU核心,将目标CPU核心对应的任务线程作为目标线程。然后将新任务挂载到其对应的线程负责执行的任务链表中等待执行,将新任务添加到目标线程的任务队列中,并在目标线程对应的任务链表中,将新任务记录为待执行任务。
在本申请的一个实施例中,当有新任务产生时,确定待使用利用率最小的CPU核心执行所述新任务,包括:设置全局变量记录当前待使用利用率最小的CPU核心的标识信息和对应的当前最小待使用利用率的数量;当新任务产生时,根据所述全局变量访问所述当前待使用利用率最小的CPU核心,并确定当前待使用利用率最小的CPU核心执行新任务;响应于任一个CPU核心在执行完预设数量的任务或执行完预设时间段的任务更新所述任一个CPU核心的待使用利用率,比较所述任一个CPU核心的待使用利用率与所述全局变量中记录的当前最小待使用利用率的数量;若所述任一个CPU核心的待使用利用率的数量小于所述当前最小待使用利用率的数量;则将所述任一个CPU核心的标识信息更新为当前待使用利用率最小的CPU核心的标识信息,将所述任一个CPU核心的待使用利用率的数量更新为当前最小待使用利用率的数量。
具体地,在确定待使用利用率最小的CPU核心作为目标CPU核心执行新任务之后,当任一个CPU核心执行完一轮任务即执行完预设数量的任务或执行完预设时间段的任务后更新了其待使用利用率,比较当前执行任务的利用率最小的CPU核心其对应的待使用利用率与任一个CPU核心更新后的待使用利用率的大小。响应于任一个CPU核心更新后的待使用利用率的大小小于当前执行任务的利用率最小的CPU核心其对应的待使用利用率,则将任一个CPU核心更新为待使用利用率最小的CPU核心。例如,设置全局变量如下:uint64 cpu_id_utility_min;用于记录压力最小的cpu;float cpu_uitility_min,用于记录压力最小的cpu其将来任务所需cpu利用率。当新任务产生时,首先访问cpu_id_utility_min,拿到压力最小的cpu,然后将新任务挂载到其对应的线程负责执行的任务链表中。该两个变量在任何一个cpu的线程计算出cpu_need后得以更新,更新方式如下:若计算完cpu_need的线程所在的cpu与当前cpu_id_utility_min为同一颗cpu,则只需使用cpu_need更新cpu_utility_min,具体为:cpu_utility_min=cpu_need;若计算完cpu_need的线程所在的cpu与当前cpu_id_utility_min不是同一颗cpu,首先比较cpu_need与cpu_utility_min的大小,只有当cpu_need小于cpu_utility_min时,将cpu_id_utility_min更新为当前线程所在cpu的id号,同时将cpu_utility_min更新为cpu_need。
本申请的实施例,通过在确定待使用利用率最小的CPU核心作为目标CPU核心执行新任务之后,重新计算目标CPU核心执行任务链表中待执行任务需要的待使用利用率和其他CPU核心待使用利用率,再次更新压力最小的CPU,可以在接收新任务时将任务直接分发给压力最小的CPU执行,提高了运行的效率,发挥了CPU的效能。
在本申请的一个实施例中,该方法还包括:在所述任务链表中设置每一个CPU核心执行任务的数量上限和执行任务的时间上限;响应于任一个CPU核心执行任务的数量到达所述数量上限或所述CPU核心执行任务的时间到达所述时间上限,更新所述任一个CPU核心的待使用利用率。
具体地,在所述任务链表中设置每一个CPU核心执行任务的数量上限和执行任务的时间上限;响应于任一个CPU核心执行任务的数量到达所述数量上限或所述CPU核心执行任务的时间到达所述时间上限,更新所述任一个CPU核心的待使用利用率,包括:在任务链表中设置时间戳,在时间戳上标记开始执行任务的第一时刻,获取预先设置的CPU核心执行任务的时间上限,确定从第一时刻执行完所述时间上限的任务之后到达的第二时刻,其中第一时刻和第二时刻之间的时间差为所述时间上限。响应于所述时间戳上的时间到达第二时刻,计算任一个CPU核心的待使用利用率。
在任务链表中设置技术变量,所述技术变量的初始值为零,当CPU核心执行完任意值个任务,则所述技术变量的值增加至所述任意值;获取预先设置的CPU核心执行任务的数量上限,响应于所述技术变量的值到达所述数量上限,则计算任一个CPU核心的待使用利用率。
本申请的实施例通过在所述任务链表中设置每一个CPU核心执行任务的数量上限和执行任务的时间上限;响应于任一个CPU核心执行任务的数量到达所述数量上限或所述CPU核心执行任务的时间到达所述时间上限,更新所述任一个CPU核心的待使用利用率,可以基于预先设置好的规则实时地更新每一个CPU核心的利用率,从而更有效地实时获取CPU的利用率,进而更好地分配资源,从而提高CPU的有效利用率,提高资源分配的效率。
本申请的实施例通过对存储设备的每一个CPU核心设置任务链表,然后,基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。本申请通过为每个CPU核心设置特定的任务链表,根据过去一段时间内CPU的利用率,预测未来CPU执行任务列表中剩余的待执行任务需要的待使用利用率,将每一个CPU的待使用利用率作为分发新任务的参考依据,确定待使用利用率最小的CPU执行新任务,可以实现存储系统内资源的合理配置,提高CPU的效能,加快处理速度,实现存储系统CPU的有效利用。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本申请中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图3为本申请实施例提供的一种存储系统任务调度装置的结构示意图,如图3所示,该装置可以包括:设置模块301、计算模块302、执行模块303,其中各组成模块的主要功能如下:
设置模块301:用于对存储设备的每一个CPU核心设置任务链表,其中,所述CPU核心和所述任务链表一一对应,所述任务链表用于记录所述CPU核心执行的任务;
计算模块302:用于基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率;
执行模块303:用于当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。
在本申请的一个实施中,计算模块302:还有用于在所述任务链表中获取所述CPU核心在预设时间段内执行的任务数量和待执行的任务数量;
计算所述CPU核心在预设时间段内的利用率;
基于所述CPU核心在预设时间段内的利用率和所述CPU核心在预设时间段内执行的任务数量,计算所述CPU核心执行每一个任务的平均利用率;
基于所述平均利用率和所述待执行任务数量计算CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率。
在本申请的一个实施中,所述预设时间段包括第一时间段和第二时间段;
所述计算所述CPU核心在预设时间段内的利用率,包括:
在所述任务链表中分别获取所述CPU核心在第一时间段内的利用率和所述CPU核心在第二时间段内的利用率;
确定所述CPU核心在第一时间段内的第一权重系数和第二时间段内的第二权重系数;
根据所述CPU核心在第一时间段内的利用率和所述第一权重系数计算在第一时间段内的权重利用率,根据所述CPU核心在第二时间段内的利用率和所述第二权重系数计算在第二时间段内的权重利用率;
根据所述第一时间段内的权重利用率和所述第二时间段内的权重利用率计算所述CPU核心在预设时间段内的利用率。
在本申请的一个实施中,设置模块301:还用于对存储设备的每一个CPU核心设置对应的任务线程,所述任务线程配置有用于记录所述CPU核心执行任务的任务链表,其中,所述CPU核心和所述任务链表一一对应。
在本申请的一个实施中,执行模块303:还用于将所述利用率最小的CPU核心作为目标CPU核心,将所述目标CPU核心对应的任务线程作为目标线程;将所述新任务添加到所述目标线程的任务队列中,并在所述目标线程对应的任务链表中,将所述新任务记录为待执行任务。
在本申请的一个实施中,计算模块302,还用于:计算所述目标CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待执行任务包含所述新任务;计算除所述目标CPU核心之外的每一个CPU核心执行任务链表中待执行任务需要的待使用利用率;根据计算结果重新确定待使用利用率最小的CPU。
在本申请的一个实施中,设置模块301:还用于在所述任务链表中设置每一个CPU核心执行任务的数量上限和执行任务的时间上限;响应于所述CPU核心执行任务的数量到达所述数量上限或所述CPU核心执行任务的时间到达所述时间上限,则不向所述CPU核心分配新任务。
根据本申请提供的具体实施例,本申请所提供的技术方案可以具备以下优点:
本申请的实施例通过对存储设备的每一个CPU核心设置任务链表,然后,基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。本申请通过为每个CPU核心设置特定的任务链表,根据过去一段时间内CPU的利用率,预测未来CPU执行任务列表中剩余的待执行任务需要的待使用利用率,将每一个CPU的待使用利用率作为分发新任务的参考依据,确定待使用利用率最小的CPU执行新任务,可以实现存储系统内资源的合理配置,提高CPU的效能,加快处理速度,实现存储系统CPU的有效利用。
上述各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,本申请实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如用户明确同意,对用户切实通知,用户明确授权等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
根据本申请的实施例,本申请还提供了一种计算机设备、一种计算机可读存储介质。本申请还提供了一种计算机设备,包括至少一个处理器,以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的计算机指令,计算机指令被至少一个处理器执行,以使至少一个处理器能够执行上述任一实施例所述存储系统任务调度方法。
如图4所示,是根据本申请实施例的计算机设备的框图。计算机设备旨在表示各种形式的数字计算机或移动装置。其中数字计算机可以包括台式计算机、便携式计算机、工作台、个人数字助理、服务器、大型计算机和其它适合的计算机。移动装置可以包括平板电脑、智能电话、可穿戴式设备等。
如图4所示,计算机设备400包括计算单元401、ROM 402、RAM 403、总线404以及输入/输出(I/O)接口405,计算单元401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
计算单元401可以根据存储在只读存储器(ROM)402中的计算机指令或者从存储单元408加载到随机访问存储器(RAM)403中的计算机指令,来执行本申请方法实施例中的各种处理。计算单元401可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元401可以包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。在一些实施例中,本申请实施例提供的方法可被实现为计算机软件程序,其被有形地包含于计算机可读存储介质,例如存储单元408。
RAM 404还可存储设备400操作所需的各种程序和数据。计算机程序的部分或者全部可以经由ROM 402和/或通信单元409而被载入和/或安装到设备400上。
计算机设备400中的输入单元406、输出单元407、存储单元408和通信单元409可以连接至I/O接口405。其中,输入单元406可以是诸如键盘、鼠标、触摸屏、麦克风等;输出单元407可以是诸如显示器、扬声器、指示灯等。设备400能够通过通信单元409与其他设备进行信息、数据等的交换。
需要说明的是,该设备还可以包括实现正常运行所必需的其他组件。也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件和/或它们的组合中实现。
用于实施本申请的方法的计算机指令可以采用一个或多个编程语言的任何组合来编写。这些计算机指令可以提供给计算单元401,使得计算机指令当由诸如处理器等计算单元401执行时使执行本申请方法实施例中涉及的各步骤。
本申请还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令用于使计算机执行上述任一实施例所述存储系统任务调度方法。
本申请提供的计算机可读存储介质可以是有形的介质,其可以包含或存储计算机指令,用以执行本申请方法实施例中涉及的各步骤。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的等形式的存储介质。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (10)
1.一种存储系统任务调度方法,其特征在于,该方法包括:
对存储设备的每一个CPU核心设置任务链表,其中,所述CPU核心和所述任务链表一一对应,所述任务链表用于记录所述CPU核心执行的任务;
基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率;
当有新任务产生时,确定待使用利用率最小的CPU核心执行所述新任务。
2.根据权利要求1所述的存储系统任务调度方法,其特征在于,所述基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率,包括:
在所述任务链表中获取所述CPU核心在预设时间段内执行的任务数量和待执行的任务数量;
计算所述CPU核心在预设时间段内的利用率;
基于所述CPU核心在预设时间段内的利用率和所述CPU核心在预设时间段内执行的任务数量,计算所述CPU核心执行每一个任务的平均利用率;
基于所述平均利用率和所述待执行任务数量计算CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率。
3.根据权利要求2所述的存储系统任务调度方法,其特征在于,所述预设时间段包括第一时间段和第二时间段;
所述计算所述CPU核心在预设时间段内的利用率,包括:
在所述任务链表中分别获取所述CPU核心在第一时间段内的利用率和所述CPU核心在第二时间段内的利用率;
确定所述CPU核心在第一时间段内的第一权重系数和第二时间段内的第二权重系数;
根据所述CPU核心在第一时间段内的利用率和所述第一权重系数计算在第一时间段内的权重利用率,根据所述CPU核心在第二时间段内的利用率和所述第二权重系数计算在第二时间段内的权重利用率;
根据所述第一时间段内的权重利用率和所述第二时间段内的权重利用率计算所述CPU核心在预设时间段内的利用率。
4.根据权利要求1所述的存储系统任务调度方法,其特征在于,所述对存储设备的每一个CPU核心设置任务链表,包括:
对存储设备的每一个CPU核心设置对应的任务线程,所述任务线程配置有用于记录所述CPU核心执行任务的任务链表,其中,所述CPU核心和所述任务链表一一对应。
5.根据权利要求4所述的存储系统任务调度方法,其特征在于,所述确定待使用利用率最小的CPU核心执行所述新任务,包括:
将所述待使用利用率最小的CPU核心作为目标CPU核心,将所述目标CPU核心对应的任务线程作为目标线程;
将所述新任务添加到所述目标线程的任务队列中,并在所述目标线程对应的任务链表中,将所述新任务记录为待执行任务。
6.根据权利要求1所述的存储系统任务调度方法,其特征在于,所述当有新任务产生时,确定待使用利用率最小的CPU核心执行所述新任务,包括:
设置全局变量记录当前待使用利用率最小的CPU核心的标识信息和对应的当前最小待使用利用率的数量;
当新任务产生时,根据所述全局变量访问所述当前待使用利用率最小的CPU核心,并确定当前待使用利用率最小的CPU核心执行新任务;
响应于任一个CPU核心在执行完预设数量的任务或执行完预设时间段的任务更新所述任一个CPU核心的待使用利用率,比较所述任一个CPU核心的待使用利用率与所述全局变量中记录的当前最小待使用利用率的数量;
若所述任一个CPU核心的待使用利用率的数量小于所述当前最小待使用利用率的数量;则将所述任一个CPU核心的标识信息更新为当前待使用利用率最小的CPU核心的标识信息,将所述任一个CPU核心的待使用利用率的数量更新为当前最小待使用利用率的数量。
7.根据权利要求1所述的存储系统任务调度方法,其特征在于,所述方法还包括:
在所述任务链表中设置每一个CPU核心执行任务的数量上限和执行任务的时间上限;
响应于任一个CPU核心执行任务的数量到达所述数量上限或所述CPU核心执行任务的时间到达所述时间上限,更新所述任一个CPU核心的待使用利用率。
8.一种存储系统任务调度装置,其特征在于,该装置包括:
设置模块:用于对存储设备的每一个CPU核心设置任务链表,其中,所述CPU核心和所述任务链表一一对应,所述任务链表用于记录所述CPU核心执行的任务;
计算模块:用于基于所述CPU核心在预设时间段内的利用率,计算每一个CPU核心执行任务链表中待执行任务需要的待使用利用率,其中,所述待使用利用率表征CPU核心执行任务链表中待执行任务需要消耗的利用率;
执行模块:用于当有新任务产生时,确定待使用利用率最小的CPU核心作为执行所述新任务。
9.一种计算机设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机指令,所述计算机指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311262351.5A CN117149437A (zh) | 2023-09-27 | 2023-09-27 | 存储系统任务调度方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311262351.5A CN117149437A (zh) | 2023-09-27 | 2023-09-27 | 存储系统任务调度方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117149437A true CN117149437A (zh) | 2023-12-01 |
Family
ID=88910089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311262351.5A Pending CN117149437A (zh) | 2023-09-27 | 2023-09-27 | 存储系统任务调度方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117149437A (zh) |
-
2023
- 2023-09-27 CN CN202311262351.5A patent/CN117149437A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7434011B2 (en) | Apparatus, system, and method for modifying data storage configuration | |
US8826270B1 (en) | Regulating memory bandwidth via CPU scheduling | |
US20210224110A1 (en) | Task scheduling simulation system | |
WO2021254135A1 (zh) | 任务执行方法及存储设备 | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
JP7039631B2 (ja) | アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体 | |
US20130232495A1 (en) | Scheduling accelerator tasks on accelerators using graphs | |
US9135262B2 (en) | Systems and methods for parallel batch processing of write transactions | |
US20240143392A1 (en) | Task scheduling method, chip, and electronic device | |
CN110888592B (zh) | 基于延迟ssd系统智能并行资源利用的请求调度方法及系统 | |
US20150074360A1 (en) | Scheduler for memory | |
JP2022033688A (ja) | メモリアクセスリクエストスケジューリング方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム | |
WO2023040399A1 (zh) | 一种业务持久化方法及装置 | |
CN115033188A (zh) | 一种基于zns固态硬盘的存储硬件加速模块系统 | |
CN112434092A (zh) | 一种数据处理方法、装置、电子设备和可读存储介质 | |
US9380126B2 (en) | Data collection and distribution management | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 | |
WO2013148439A1 (en) | Hardware managed allocation and deallocation evaluation circuit | |
CN112286678A (zh) | 一种加速存储读写数据输入输出的优化方法和系统 | |
CN111552547A (zh) | 作业处理方法、装置以及计算机设备 | |
CN117149437A (zh) | 存储系统任务调度方法、装置、设备和存储介质 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
CN113821175B (zh) | 基于存储内容优先的ssd指令调度方法及系统 | |
CN115081607A (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 |