CN116243868A - 一种任务的处理方法、装置、设备和计算机可读存储介质 - Google Patents
一种任务的处理方法、装置、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116243868A CN116243868A CN202310231980.5A CN202310231980A CN116243868A CN 116243868 A CN116243868 A CN 116243868A CN 202310231980 A CN202310231980 A CN 202310231980A CN 116243868 A CN116243868 A CN 116243868A
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- data block
- recorded
- thread pool
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及数据存储技术领域,公开了一种任务的处理方法、装置、设备和计算机可读存储介质,按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;在完成对目标数据块的IO访问任务后,在线程池队列中记录有目标数据块对应的系统任务时,保持线程池队列中记录的系统任务不变。在线程池队列中未记录目标数据块对应的系统任务时,将系统任务添加至对应的任务队列中。按照设定的轮询算法依次执行线程池队列中记录的任务。在轮询期间,如果目标数据块对应的系统任务还未被执行,在该期间内接收到目标数据块的IO访问任务时,无需再向线程池队列中写入系统任务,缩减了系统任务所需执行的次数,提升了存储系统的数据处理性能。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种任务的处理方法、装置、设备和计算机可读存储介质。
背景技术
在存储系统中,由于内存和磁盘的性能差异,为了提高系统访问效率,会把部分数据的副本缓存到内存中,当进行数据访问时,首先尝试访问缓存,如果缓存不命中,再从后端磁盘访问。预读就是把后续可能会被访问的数据,提前放到缓存中,这样后续的数据访问,可以直接访问缓存而无需访问后端磁盘,从而提升访问效率。
然而后续会访问哪些数据是未知的,这就需要通过预读算法确定把哪些数据提前放到缓存中,预读算法的好坏决定了后续数据访问的缓存命中率。为了提升缓存命中率,目前提出了更为智能的预读算法,但同时该预读算法也引入了巨大的计算负担。尤其是在IO访问频繁的场景下,按照当前每接收到一个IO访问,执行一次预读算法的方式很容易耗尽存储产品的计算能力。
可见,如何提升存储系统的数据处理性能,是本领域技术人员需要解决的问题。
发明内容
本申请实施例的目的是提供一种任务的处理方法、装置、设备和计算机可读存储介质,可以提升存储系统的数据处理性能。
为解决上述技术问题,本申请实施例提供一种任务的处理方法,包括:
按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;
在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有所述目标数据块对应的系统任务;其中,目标数据块为所有所述数据块中的任意一个数据块;线程池队列中包含有多个任务队列;
在所述线程池队列中记录有所述目标数据块对应的系统任务的情况下,保持所述线程池队列中记录的系统任务不变;
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中;
按照设定的轮询算法依次执行所述线程池队列中记录的任务。
可选地,所述在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中包括:
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,依据数据块与任务队列的对应关系,将所述系统任务添加至对应的任务队列中。
可选地,所述在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中包括:
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,按照任务队列轮询机制,将所述系统任务添加至当前轮询的任务队列中。
可选地,所述按照设定的轮询算法依次执行所述线程池队列中记录的任务包括:
判断当前任务队列的任务执行数量是否大于预设阈值;
在所述当前任务队列的任务执行数量大于或等于预设阈值的情况下,跳转到与所述当前任务队列相邻的下一个任务队列,执行下一个任务队列中记录的任务;
在所述当前任务队列的任务执行数量小于预设阈值的情况下,每执行一次所述当前任务队列中记录的任务,则将任务执行数量加一。
可选地,所述在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中包括:
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务的任务指针添加至对应的任务队列中。
可选地,针对于所述划分粒度的设定,所述方法包括:
基于当前业务场景的性能要求,确定出划分粒度。
可选地,在所述按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块之后还包括:
对各所述数据块设置各自对应的多线程保护锁。
本申请实施例还提供了一种任务的处理装置,包括划分单元、判断单元、保持单元、添加单元和轮询单元;
所述划分单元,用于按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;
所述判断单元,用于在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有所述目标数据块对应的系统任务;其中,目标数据块为所有所述数据块中的任意一个数据块;线程池队列中包含有多个任务队列;
所述保持单元,用于在所述线程池队列中记录有所述目标数据块对应的系统任务的情况下,保持所述线程池队列中记录的系统任务不变;
所述添加单元,用于在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中;
所述轮询单元,用于按照设定的轮询算法依次执行所述线程池队列中记录的任务。
可选地,所述添加单元用于在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,依据数据块与任务队列的对应关系,将所述系统任务添加至对应的任务队列中。
可选地,所述添加单元用于在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,按照任务队列轮询机制,将所述系统任务添加至当前轮询的任务队列中。
可选地,所述轮询单元包括判断子单元、跳转子单元和记录子单元;
所述判断子单元,用于判断当前任务队列的任务执行数量是否大于预设阈值;
所述跳转子单元,用于在所述当前任务队列的任务执行数量大于或等于预设阈值的情况下,跳转到与所述当前任务队列相邻的下一个任务队列,执行下一个任务队列中记录的任务;
所述记录子单元,用于在所述当前任务队列的任务执行数量小于预设阈值的情况下,每执行一次所述当前任务队列中记录的任务,则将任务执行数量加一。
可选地,所述添加单元用于在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务的任务指针添加至对应的任务队列中。
可选地,针对于所述划分粒度的设定,所述装置包括确定单元;
所述确定单元,用于基于当前业务场景的性能要求,确定出划分粒度。
可选地,还包括设置单元;
所述设置单元,用于对各所述数据块设置各自对应的多线程保护锁。
本申请实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任务的处理方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任务的处理方法的步骤。
由上述技术方案可以看出,按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有目标数据块对应的系统任务;其中,目标数据块为所有数据块中的任意一个数据块;线程池队列中包含有多个任务队列。多个任务队列可以按照轮询的方式执行。在线程池队列中记录有目标数据块对应的系统任务的情况下,说明当前仍未执行目标数据块对应的系统任务,为了避免同一目标数据块系统任务的多次执行造成较高的资源耗费,因此无需将目标数据块对应的系统任务再次写入线程池队列中,仍保持线程池队列中记录的系统任务不变即可。在线程池队列中未记录目标数据块对应的系统任务的情况下,说明线程池中不存在目标数据块对应的系统任务,此时可以将系统任务添加至对应的任务队列中。按照设定的轮询算法依次执行线程池队列中记录的任务。在该技术方案中,通过划分数据块,并且设置不同的任务队列,可以实现对不同数据块所对应的系统任务的轮询执行。在轮询期间,如果目标数据块对应的系统任务还未被执行,在该期间内接收到目标数据块的IO访问任务时,无需再向线程池队列中写入系统任务。与传统方式中每接收到一个IO访问任务便执行一次系统任务的方式相比,本申请极大的缩减了系统任务所需执行的次数,提升了存储系统的数据处理性能。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种任务的处理方法的流程图;
图2为本申请实施例提供的一种数据块系统任务的处理流程示意图;
图3为本申请实施例提供的一种任务的处理装置的结构示意图;
图4为本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
传统方式中每接收到一个IO访问任务便执行一次系统任务,这种处理方式会极大的消耗存储产品的计算能力。以系统任务为预读任务为例,假设IO访问任务为读任务,预读操作会读取比IO访问任务所需数据更多的数据,如果短时间内同一块磁盘上的数据具有较多的IO访问任务,按照传统的方式,需要预读出大量的数据,如此操作很容易耗尽存储产品的计算能力。
目前业内采用定时器的方案对所需执行的系统任务进行采样,但是毫秒级定时器无法满足存储产品微秒级的需求。而微秒级定时器属于高精度定时器,其性能损耗过大、极容易引起其他机制异常,并且微秒级定时器本身被WIN10等操作系统禁用,无法应用于性能、安全性要求苛刻的存储产品。
故此,本申请实施例提供了一种任务的处理方法、装置、设备和计算机可读存储介质,按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块,保证了同一磁盘上不同类型数据的独立存储。每个数据块有其对应的系统任务。本申请实施例中将线程池划分为不同的任务队列,按照设定的轮询算法依次执行线程池队列中记录的任务。每个数据块所对应的任务的处理方式类似,以所有数据块中的任意一个数据块即目标数据块为例,在完成对目标数据块的IO访问任务后,如果线程池队列中记录有目标数据块对应的系统任务,则无需将目标数据块对应的系统任务再次写入线程池队列中,仍保持线程池队列中记录的系统任务不变即可。如果线程池队列中未记录目标数据块对应的系统任务,此时可以将系统任务添加至对应的任务队列中。
通过划分数据块,并且设置不同的任务队列,可以实现对不同数据块所对应的系统任务的轮询执行。在轮询期间,如果目标数据块对应的系统任务还未被执行,在该期间内接收到目标数据块的IO访问任务时,无需再向线程池队列中写入系统任务,极大的缩减了系统任务所需执行的次数,提升了存储系统的数据处理性能。
接下来,详细介绍本申请实施例所提供的一种任务的处理方法。图1为本申请实施例提供的一种任务的处理方法的流程图,该方法包括:
S101:按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块。
不同业务场景下单次IO访问任务所涉及的数据量往往存在差异,为了更好的满足当前业务场景的需求,在具体实现中,可以基于当前业务场景的性能要求,确定出划分粒度。
存储系统中往往包含有多个磁盘,每个磁盘有其对应的访盘地址。对于不同磁盘其对应的划分粒度可以相同,也可以不同,根据实际需求灵活设置即可。
访盘地址用于指示磁盘的位置,依据访问地址可以访问到对应的磁盘,结合设定的划分粒度,可以将该磁盘对应的数据空间划分为多个数据块。
例如,划分粒度可以设置为32KB。假设一个磁盘的存储空间为500G,则可以按照32KB为基本单位分割500G。
S102:在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有目标数据块对应的系统任务。
系统任务可以是基于当前业务场景设定好的任务,系统任务可以包括预读任务、授权任务、开关机任务等。为了便于介绍,均以系统任务为预读任务为例展开说明。
每个数据块有其对应的系统任务,系统任务可以记录在线程池中。在本申请实施例中,线程池队列中包含有多个任务队列。多个任务队列中记录的任务可以按照轮询的方式执行。
每个数据块所对应的系统任务的处理方式类似,以所有数据块中的任意一个数据块即目标数据块为例,在完成对目标数据块的IO访问任务的情况下,可以判断线程池队列中是否记录有目标数据块对应的系统任务。
在线程池队列中记录有目标数据块对应的系统任务的情况下,说明目标数据块对应的系统任务还未被执行,此时无需将该系统任务重复写入线程池中,即执行S103。
在线程池队列中未记录目标数据块对应的系统任务的情况下,说明目标数据块对应的系统任务已经被执行了,此时在完成对目标数据块的IO访问任务的情况下,需要重新向线程池中写入系统任务,即执行S104。
S103:保持线程池队列中记录的系统任务不变。
S104:将系统任务添加至对应的任务队列中。
在本申请实施例中,可以将每个数据块对应的系统任务按照轮询的方式写入到当前的任务队列中。即在线程池队列中未记录目标数据块对应的系统任务的情况下,可以按照任务队列轮询机制,将系统任务添加至当前轮询的任务队列中。
除了轮询的方式外,也可以建立数据块与任务队列的对应关系,在线程池队列中未记录目标数据块对应的系统任务的情况下,依据数据块与任务队列的对应关系,将系统任务添加至对应的任务队列中。
S105:按照设定的轮询算法依次执行线程池队列中记录的任务。
线程池队列中包含有多个任务队列,在实际应用中,可以按照轮询算法依次执行各任务队列中记录的任务。
一个任务队列中记录的任务可能有多个,为了避免在轮询期间单个任务队列占用过长的时间,可以对单个任务队列所执行的任务数量进行限定。
在按照设定的轮询算法依次执行线程池队列中记录的任务时,可以判断当前任务队列的任务执行数量是否大于预设阈值。
在当前任务队列的任务执行数量大于或等于预设阈值的情况下,说明执行该任务队列中记录的任务已经花费了较长时间,为了所有任务队列的均衡处理,此时可以跳转到与当前任务队列相邻的下一个任务队列,执行下一个任务队列中记录的任务。
在当前任务队列的任务执行数量小于预设阈值的情况下,则每执行一次当前任务队列中记录的任务,可以将任务执行数量加一,直至完成当前任务队列中记录的任务或者当前任务队列的任务执行数量大于或等于预设阈值,则可以跳转到下一个任务队列。
在本申请实施例中,在向任务队列添加系统任务时,可以只写入系统任务对应的任务指针,依据任务指针可以访问到对应的处理函数,从而完成系统任务。
图2为本申请实施例提供的一种数据块系统任务的处理流程示意图,图2中以数据块1为例,假设数据块1对应有三个IO访问任务,分别为数据块1-IO1、数据块1-IO2和数据块1-IO3。数据块1所对应的任务处理流程可以划分为如下5个时序步骤。时序1:处理数据块1对应的第1个IO访问任务。时序2:假设数据块1的系统任务不在线程池队列里,数据块1与任务队列3具有对应关系,则可以将数据块1的系统任务添加到cpu1所属的任务队列3中。时序3:在处理完数据块1对应的第2个IO访问任务以及第3个IO访问任务后,依次检查数据块1对应的系统任务是否已经在线程池任务队列中,若数据块1对应的系统任务已经在线程池任务队列中,则不再将其系统任务添加入线程池。时序4:cpu按照自身的轮询算法执行各任务队列中记录的任务。时序5:当访问到任务队列3中数据块1的系统任务时,依据任务队列3中记录的任务指针,可以调用到对应的处理函数,从而执行数据块1的系统任务。从图2的流程可以看出,数据块1先后被IO访问3次,线程池队列中只记录了一次系统任务。相比于传统方式中,每接收到一次IO访问,就要执行一次系统任务相比,按照本申请的实现流程,只需执行一次数据块1对应的系统任务即可。
考虑到实际应用中,同一个数据块可能会被多个线程同时访问,为了避免不同线程之间的操作造成干扰,可以对各数据块设置各自对应的多线程保护锁。
通过设置多线程保护锁可以保证多个线程任务的有序执行。例如,针对于多个读任务,多个读任务之间相互不存在干扰,因此多线程保护锁可以为读任务的并行处理。针对于多个写任务,由于不同写任务之间存在干扰,因此多线程保护锁可以为写任务的串行处理。
由上述技术方案可以看出,按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有目标数据块对应的系统任务;其中,目标数据块为所有数据块中的任意一个数据块;线程池队列中包含有多个任务队列。多个任务队列可以按照轮询的方式执行。在线程池队列中记录有目标数据块对应的系统任务的情况下,说明当前仍未执行目标数据块对应的系统任务,为了避免同一目标数据块系统任务的多次执行造成较高的资源耗费,因此无需将目标数据块对应的系统任务再次写入线程池队列中,仍保持线程池队列中记录的系统任务不变即可。在线程池队列中未记录目标数据块对应的系统任务的情况下,说明线程池中不存在目标数据块对应的系统任务,此时可以将系统任务添加至对应的任务队列中。按照设定的轮询算法依次执行线程池队列中记录的任务。在该技术方案中,通过划分数据块,并且设置不同的任务队列,可以实现对不同数据块所对应的系统任务的轮询执行。在轮询期间,如果目标数据块对应的系统任务还未被执行,在该期间内接收到目标数据块的IO访问任务时,无需再向线程池队列中写入系统任务。与传统方式中每接收到一个IO访问任务便执行一次系统任务的方式相比,本申请极大的缩减了系统任务所需执行的次数,提升了存储系统的数据处理性能。
图3为本申请实施例提供的一种任务的处理装置的结构示意图,包括划分单元31、判断单元32、保持单元33、添加单元34和轮询单元35;
划分单元31,用于按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;
访盘地址用于指示磁盘的位置,依据访问地址可以访问到对应的磁盘,结合设定的划分粒度,可以将该磁盘对应的数据空间划分为多个数据块。
判断单元32,用于在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有目标数据块对应的系统任务;其中,目标数据块为所有数据块中的任意一个数据块;线程池队列中包含有多个任务队列;
每个数据块有其对应的系统任务,系统任务可以记录在线程池中。在本申请实施例中,线程池队列中包含有多个任务队列。多个任务队列可以按照轮询的方式执行。
保持单元33,用于在线程池队列中记录有目标数据块对应的系统任务的情况下,保持线程池队列中记录的系统任务不变;
在线程池队列中记录有目标数据块对应的系统任务的情况下,说明目标数据块对应的系统任务还未被执行,此时无需将该系统任务重复写入线程池中,即保持线程池队列中记录的系统任务不变。
添加单元34,用于在线程池队列中未记录目标数据块对应的系统任务的情况下,将系统任务添加至对应的任务队列中;
在线程池队列中未记录目标数据块对应的系统任务的情况下,说明目标数据块对应的系统任务已经被执行了,此时在完成对目标数据块的IO访问任务的情况下,需要重新向线程池中写入系统任务,即将系统任务添加至对应的任务队列中。
轮询单元35,用于按照设定的轮询算法依次执行线程池队列中记录的任务。
可选地,添加单元用于在线程池队列中未记录目标数据块对应的系统任务的情况下,依据数据块与任务队列的对应关系,将系统任务添加至对应的任务队列中。
可选地,添加单元用于在线程池队列中未记录目标数据块对应的系统任务的情况下,按照任务队列轮询机制,将系统任务添加至当前轮询的任务队列中。
可选地,轮询单元包括判断子单元、跳转子单元和记录子单元;
判断子单元,用于判断当前任务队列的任务执行数量是否大于预设阈值;
跳转子单元,用于在当前任务队列的任务执行数量大于或等于预设阈值的情况下,跳转到与当前任务队列相邻的下一个任务队列,执行下一个任务队列中记录的任务;
记录子单元,用于在当前任务队列的任务执行数量小于预设阈值的情况下,每执行一次当前任务队列中记录的任务,则将任务执行数量加一。
可选地,添加单元用于在线程池队列中未记录目标数据块对应的系统任务的情况下,将系统任务的任务指针添加至对应的任务队列中。
可选地,针对于划分粒度的设定,装置包括确定单元;
确定单元,用于基于当前业务场景的性能要求,确定出划分粒度。
可选地,还包括设置单元;
设置单元,用于对各数据块设置各自对应的多线程保护锁。
图3所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有目标数据块对应的系统任务;其中,目标数据块为所有数据块中的任意一个数据块;线程池队列中包含有多个任务队列。多个任务队列可以按照轮询的方式执行。在线程池队列中记录有目标数据块对应的系统任务的情况下,说明当前仍未执行目标数据块对应的系统任务,为了避免同一目标数据块系统任务的多次执行造成较高的资源耗费,因此无需将目标数据块对应的系统任务再次写入线程池队列中,仍保持线程池队列中记录的系统任务不变即可。在线程池队列中未记录目标数据块对应的系统任务的情况下,说明线程池中不存在目标数据块对应的系统任务,此时可以将系统任务添加至对应的任务队列中。按照设定的轮询算法依次执行线程池队列中记录的任务。在该技术方案中,通过划分数据块,并且设置不同的任务队列,可以实现对不同数据块所对应的系统任务的轮询执行。在轮询期间,如果目标数据块对应的系统任务还未被执行,在该期间内接收到目标数据块的IO访问任务时,无需再向线程池队列中写入系统任务。与传统方式中每接收到一个IO访问任务便执行一次系统任务的方式相比,本申请极大的缩减了系统任务所需执行的次数,提升了存储系统的数据处理性能。
图4为本申请实施例提供的一种电子设备的结构图,如图4所示,电子设备包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例任务的处理方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的任务的处理方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于划分粒度、系统任务等。
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图4中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的任务的处理方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任务的处理方法的步骤。
以上对本申请实施例所提供的一种任务的处理方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上对本申请所提供的一种任务的处理方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (10)
1.一种任务的处理方法,其特征在于,包括:
按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;
在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有所述目标数据块对应的系统任务;其中,目标数据块为所有所述数据块中的任意一个数据块;线程池队列中包含有多个任务队列;
在所述线程池队列中记录有所述目标数据块对应的系统任务的情况下,保持所述线程池队列中记录的系统任务不变;
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中;
按照设定的轮询算法依次执行所述线程池队列中记录的任务。
2.根据权利要求1所述的任务的处理方法,其特征在于,所述在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中包括:
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,依据数据块与任务队列的对应关系,将所述系统任务添加至对应的任务队列中。
3.根据权利要求1所述的任务的处理方法,其特征在于,所述在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中包括:
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,按照任务队列轮询机制,将所述系统任务添加至当前轮询的任务队列中。
4.根据权利要求1所述的任务的处理方法,其特征在于,所述按照设定的轮询算法依次执行所述线程池队列中记录的任务包括:
判断当前任务队列的任务执行数量是否大于预设阈值;
在所述当前任务队列的任务执行数量大于或等于预设阈值的情况下,跳转到与所述当前任务队列相邻的下一个任务队列,执行下一个任务队列中记录的任务;
在所述当前任务队列的任务执行数量小于预设阈值的情况下,每执行一次所述当前任务队列中记录的任务,则将任务执行数量加一。
5.根据权利要求1所述的任务的处理方法,其特征在于,所述在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中包括:
在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务的任务指针添加至对应的任务队列中。
6.根据权利要求1所述的任务的处理方法,其特征在于,针对于所述划分粒度的设定,所述方法包括:
基于当前业务场景的性能要求,确定出划分粒度。
7.根据权利要求1至6任意一项所述的任务的处理方法,其特征在于,在所述按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块之后还包括:
对各所述数据块设置各自对应的多线程保护锁。
8.一种任务的处理装置,其特征在于,包括划分单元、判断单元、保持单元、添加单元和轮询单元;
所述划分单元,用于按照访盘地址以及设定的划分粒度,将数据空间划分为多个数据块;
所述判断单元,用于在完成对目标数据块的IO访问任务的情况下,判断线程池队列中是否记录有所述目标数据块对应的系统任务;其中,目标数据块为所有所述数据块中的任意一个数据块;线程池队列中包含有多个任务队列;
所述保持单元,用于在所述线程池队列中记录有所述目标数据块对应的系统任务的情况下,保持所述线程池队列中记录的系统任务不变;
所述添加单元,用于在所述线程池队列中未记录所述目标数据块对应的系统任务的情况下,将所述系统任务添加至对应的任务队列中;
所述轮询单元,用于按照设定的轮询算法依次执行所述线程池队列中记录的任务。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至7任意一项所述任务的处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述任务的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310231980.5A CN116243868A (zh) | 2023-03-10 | 2023-03-10 | 一种任务的处理方法、装置、设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310231980.5A CN116243868A (zh) | 2023-03-10 | 2023-03-10 | 一种任务的处理方法、装置、设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116243868A true CN116243868A (zh) | 2023-06-09 |
Family
ID=86633018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310231980.5A Pending CN116243868A (zh) | 2023-03-10 | 2023-03-10 | 一种任务的处理方法、装置、设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116243868A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117745254A (zh) * | 2023-12-06 | 2024-03-22 | 镁佳(北京)科技有限公司 | 课程的生成方法、装置、计算机设备及可读存储介质 |
-
2023
- 2023-03-10 CN CN202310231980.5A patent/CN116243868A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117745254A (zh) * | 2023-12-06 | 2024-03-22 | 镁佳(北京)科技有限公司 | 课程的生成方法、装置、计算机设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991011B (zh) | 基于cpu多线程与gpu多粒度并行及协同优化的方法 | |
EP3786789A1 (en) | Data read/write method and device, and circular queue | |
CN106569891B (zh) | 一种存储系统中任务调度执行的方法和装置 | |
KR20200122364A (ko) | 자원 스케줄링 방법 및 단말 장치 | |
US11687242B1 (en) | FPGA board memory data reading method and apparatus, and medium | |
CN110532205A (zh) | 数据传输方法、装置、计算机设备和计算机可读存储介质 | |
CN115269196A (zh) | 线程池动态创建方法、装置、设备及存储介质 | |
CN116243868A (zh) | 一种任务的处理方法、装置、设备和计算机可读存储介质 | |
WO2023160397A1 (zh) | 内存管理方法以及装置 | |
CN114880259A (zh) | 数据处理方法、装置、系统、电子设备及存储介质 | |
CN115562838A (zh) | 资源调度方法、装置、计算机设备及存储介质 | |
CN116893899A (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
CN111966511B (zh) | 消息队列数据读写处理方法及装置 | |
KR102351200B1 (ko) | 메모리 요청 정보에 기반하여 캐시 메모리의 클럭 속도/전압을 설정하는 장치 및 방법 | |
CN111159124B (zh) | Linux内核文件系统异步写缓存方法、装置及介质 | |
CA2465015A1 (en) | Context scheduling | |
CN115840654B (zh) | 消息的处理方法、系统、计算设备及可读存储介质 | |
CN109491785B (zh) | 内存访问调度方法、装置及设备 | |
US20180033115A1 (en) | Capturing Commands in a Multi-Engine Graphics Processing Unit | |
US11481250B2 (en) | Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values | |
CN105378652A (zh) | 线程共享资源分配方法及装置 | |
CN114995770B (zh) | 一种数据处理方法、装置、设备、系统及可读存储介质 | |
CN116561091A (zh) | 一种日志存储方法、装置、设备及可读存储介质 | |
CN115712394A (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 |