CN117234691A - 任务调度方法及装置 - Google Patents

任务调度方法及装置 Download PDF

Info

Publication number
CN117234691A
CN117234691A CN202311267520.4A CN202311267520A CN117234691A CN 117234691 A CN117234691 A CN 117234691A CN 202311267520 A CN202311267520 A CN 202311267520A CN 117234691 A CN117234691 A CN 117234691A
Authority
CN
China
Prior art keywords
task
thread
tasks
scheduling
task queue
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
Application number
CN202311267520.4A
Other languages
English (en)
Inventor
胡皓胜
冯靖焜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
Beijing Oceanbase Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Oceanbase Technology Co Ltd filed Critical Beijing Oceanbase Technology Co Ltd
Priority to CN202311267520.4A priority Critical patent/CN117234691A/zh
Publication of CN117234691A publication Critical patent/CN117234691A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本说明书一个或多个实施例提供一种任务调度方法及装置,涉及计算机技术领域。该方法包括在预先构建的多个任务队列中,确定目标任务队列,其中,多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,调度权重用于控制任务队列被确定为目标任务队列的概率;将目标任务队列中的目标任务调度至线程池中的指定线程,以便执行目标任务。本说明书实施例能够合理协调不同优先级任务的执行,从而避免不同优先级的任务在任务调度过程中发生资源争用。

Description

任务调度方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种任务调度方法及装置。
背景技术
任务调度是指基于预设的资源分配策略,将待执行的任务分配给线程池中可用线程的过程。通过在系统中进行合理的任务调度,可以使系统能够高效地执行各种任务,并在满足任务执行需求的同时,保证系统的稳定性、响应性和性能表现。
然而,相关技术在进行任务调度的过程中,无法较好的协调不同优先级任务的执行顺序,容易导致不同优先级任务对系统资源的争用。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种任务调度方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种任务调度方法,包括:
在预先构建的多个任务队列中,确定目标任务队列,其中,所述多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,所述调度权重用于控制任务队列被确定为目标任务队列的概率;
将所述目标任务队列中的目标任务调度至线程池中的指定线程,以便执行所述目标任务。
根据本说明书一个或多个实施例的第二方面,提出了一种任务调度装置,包括:
确定模块,用于在预先构建的多个任务队列中,确定目标任务队列,其中,所述多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,所述调度权重用于控制任务队列被确定为目标任务队列的概率;
调度模块,用于将所述目标任务队列中的目标任务调度至线程池中的指定线程,以便执行所述目标任务。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器通过运行可执行指令以实现如第一方面的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面方法的步骤。
本说明书提供的方法,预先构建有多个任务队列,其中,多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,调度权重用于控制任务队列被确定为目标任务队列的概率。通过每次确定不同的任务队列作为目标任务队列,即可实现对不同优先级任务的调度。由于每个任务队列被确定为目标任务队列的概率可通过调度权重控制,因此通过配置调度权重即可控制每个任务队列中任务被调度的频率,从而对不同优先级的任务进行不同频率的调度。由此,本说明书实施例能够合理协调不同优先级任务的执行,从而避免不同优先级的任务在任务调度过程中发生资源争用。
附图说明
图1是一示例性实施例提供的一种任务调度方法的流程示意图。
图2是一示例性实施例提供的一种总线程数量确定方法的流程示意图。
图3是一示例性实施例提供的一种设备的结构示意图。
图4是一示例性实施例提供的一种任务调度装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
随着计算机技术的发展,任务调度过程在各类计算机系统中普遍存在。以数据库系统为例,在基于日志结构合并树(LSM-Tree)的数据库系统中,压缩(Compaction)任务是典型的需要调度的任务。其中,Compaction任务可以具体分为转储任务和合并任务,二者都是数据库系统中的资源高消耗型任务。因此,在执行转储任务和/或合并任务的过程中,既要考虑执行任务的资源需求量,同时也需要考虑所分配资源对于系统其他模块任务的影响,因此需要配置相应的任务调度策略,以便对资源进行管理。
相关技术中,由于不同类型任务的数据处理量以及特性不同,只根据系统的资源利用率来分配资源可能带来浪费,并影响其他模块任务的资源用量。并且,对于优先级不同的任务而言,相关技术中无法有效兼顾不同优先级任务的执行,在考虑优先级的情况下会导致低优先级任务被长时间搁置,在不考虑优先级的情况下又会导致高优先级任务无法得到优先执行,并由此引起不同优先级任务对资源的争用。
有鉴于此,本说明书实施例预先构建有多个任务队列,其中,多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,调度权重用于控制任务队列被确定为目标任务队列的概率。通过每次确定不同的任务队列作为目标任务队列,即可实现对不同优先级任务的调度。由于每个任务队列被确定为目标任务队列的概率可通过调度权重控制,因此通过配置调度权重即可控制每个任务队列中任务被调度的频率,从而对不同优先级的任务进行不同频率的调度。由此,本说明书实施例能够合理协调不同优先级任务的执行,从而避免不同优先级的任务在任务调度过程中发生资源争用。
为便于理解,下面将以分布式数据库中的Compaction任务调度为例,首先对本说明书实施例的应用场景进行介绍。
如前所述,Compaction任务是基于LSM-Tree的数据库系统中的典型任务。其中,基于LSM-Tree的数据库系统中通常包括内存表(Memory Table,Memtable)和有序字符串表(Sorted String Table,SSTable)。
Memtable是LSM树中的内存数据结构。由于Memtable存储在内存中,因此Memtable中的数据读写操作可以高效地进行。当数据库中的写操作发生时,待写入的数据首先被写入到Memtable中,以保持快速的写入性能。然而,由于内存容量受限,当Memtable的大小达到一定阈值时,Memtable中存储的数据将被转储至硬盘上的SSTable中,以便释放内存中的存储空间用于新的数据写入。
SSTable是LSM树中的硬盘数据结构,用于持久化数据。示例性地,当Memtable中的数据被转储至硬盘时,这些数据将被写入SSTable中。而当多个SSTable积累到一定数量或大小时,它们可以被合并为更大的SSTable文件,以减少硬盘空间的占用和优化读取性能。
上述涉及的转储和合并分别为不同类型的Compaction任务,其中,由于转储可以释放数据库系统中被占用的内存,并且转储的过程可能会对数据库前台SQL语句的执行产生影响,因此,转储任务的优先级通常高于合并任务的优先级。通过本说明书实施例提供的任务调度方法,可以有效协调上述转储任务和合并任务的执行,能够在保证转储任务优先执行的同时,避免合并任务被长期搁置。
接下来,将结合以上应用场景对本说明书的示例性实施方式进行详细说明。
首先,本说明书实施例提供了一种任务调度方法,该方法可以由任意电子设备执行。
图1是一示例性实施例提供的一种任务调度方法的流程示意图,如图1所示,本说明书实施例提供的任务调度方法包括如下步骤。
S101,在预先构建的多个任务队列中,确定目标任务队列。
需要说明的是,任务队列是用于存放任务的容器。本说明书预先配置有多个任务队列,其中,多个任务队列分别用于存储不同优先级的任务。
例如,在以上应用场景中,Compaction任务可以分为两种优先级不同的任务类型,即转储和合并。由于转储任务的优先级高于合并任务的优先级,因此可以将转储任务和合并任务各自的子任务分别存储至不同的任务队列中。
此外,每个任务队列还被配置有调度权重,调度权重用于控制任务队列被确定为目标任务队列的概率。通过调整调度权重,即可提升高优先级任务所处任务队列被确定为目标任务队列的概率,或是降低低优先级任务所处任务队列被确定为目标任务队列的概率。
示例性地,在调度权重被配置后,每个任务队列被确定为目标任务队列的概率与该任务队列中存储的任务的优先级正相关。
由于调度器每次是将目标任务队列中的任务调度至相应的线程,因此通过控制每个任务队列被确定为目标任务队列的概率,即可间接控制不同优先级任务被调度的频率。
在一些实施例中,调度权重通过权重系数区间示出,其中,每个任务队列对应的权重系数区间的大小与该任务队列中存储的任务的优先级正相关,即任务队列中存储的任务优先级越高,任务队列对应的权重系数区间越大。
在为每个任务队列配置权重系数区间后,可通过生成随机权重系数,并将随机权重系数落入的权重系数区间对应的任务队列确定为目标任务队列。
示例性地,假设具有优先级不同的四个任务队列A、B、C、D,四个任务队列的优先级为:任务队列A>任务队列B>任务队列C>任务队列D。此时,可以配置四个任务队列A、B、C、D分别对应的权重系数区间为[1,4]、[5,7]、[8,9]、[10,10]。
在确定目标任务队列时,通过生成1~10之间的随机数,可将随机数落入的权重系数区间对应的任务队列确定为目标任务队列。
至此,本说明书实施例通过将不同优先级的任务分别存储至不同的任务队列中,并根据任务的优先级,赋予每个任务队列不同的调度权重,可以有效控制不同优先级任务被调度的频率,从而在保证高优先级任务被优先调度的情况下,避免低优先级的任务被长期搁置。
S102,将目标任务队列中的目标任务调度至线程池中的指定线程,以便执行目标任务。
需要说明的是,目标任务为目标任务队列中不依赖于其他任务的执行结果的任务。示例性地,可以将每个任务队列中的任务预先构建为一张有向无环图(DirectedAcyclic Graph,DAG),该DAG用于示出该任务队列中的每个任务之间的依赖关系。
若目标任务队列中存在多个符合该条件的任务,可以按照队列中“先进先出”的规则进行调度。也就是说,优先调度更早被存储至任务队列中的任务。
例如,仍以上述Compaction任务为例。在Compaction任务的执行过程中需要调度若干子任务,由于同一Compaction任务的子任务优先级相同,因此这些子任务被存储至同一任务队列。在Compaction任务的子任务中可能存在三种类型的子任务。其中,第一类子任务用于选择待合并的SSTable,第二类子任务用于整理待合并的SSTable并形成新的宏块,第三类子任务用于将新的宏块生成为SSTable结构。在上述三类子任务中,第一类子任务不依赖于其他任务的执行结果,可以独立执行。而第二类子任务依赖于第一类子任务的执行结果,且第三类子任务依赖于第二类子任务的执行结果。
由此,可以根据以上三类子任务之间的依赖关系,预先构建该任务队列对应的DAG,从而使该任务队列中的任务按照第一类子任务、第二类子任务、第三类子任务的顺序进行调度。
需要说明的是,线程池是一种线程管理的机制,它维护了一个线程集合,其中包含多个可重用的线程。任务在被调度至线程池中的线程后,该线程会执行被调度的任务,并在任务执行完成后,继续等待下一次的任务调度。其中,同一线程无法同时执行多个任务。
如前所述,由于高优先级任务具有较大的被调度概率,为了避免高优先级任务被持续调度,抢占过多系统资源(例如,线程和内存),本说明书实施例还对线程池中的线程进区分,约束特定的线程只能用于执行特定优先级的任务。
具体而言,本说明书实施例将线程池中的线程至少划分为第一线程和第二线程,其中,第一线程和第二线程分别用于执行不同优先级的任务。当然,为了精细控制不同优先级的任务可以占用的资源,可以对线程池中的线程进行更加精细的划分,例如,划分为第一线程、第二线程、第三线程等,并使不同的线程分别用于执行不同优先级的任务,本说明书实施例对此不做限定。
其中,将线程划分为第一线程和第二线程时,可以有效兼顾低优先级任务的调度以及线程划分过程的简便。此时,第一线程用于执行多个任务队列中存储的最高优先级的任务,第二线程用于执行多个任务队列中存储的除最高优先级之外的其他优先级的任务。
也就是说,本说明书实施例在将第一线程作为最高优先级任务的专属线程的同时,保留了第二线程作为其他优先级任务的专属线程,从而避免某一优先级的任务被大量调度而抢占其他优先级任务的资源。
在一些实施例中,第一线程的数量小于或等于第二线程的数量。考虑到第一线程为执行最高优先级任务的专属线程,且最高优先级任务通常数量较小、调度频率高,因此为最高优先级任务保留的线程数量可以小于或等于用于执行其他优先级任务的线程数量。
示例性地,第一线程的数量可以是线程池中总线程数量的40%,而第二线程的数量可以是线程池中总线程数量的60%,且第一线程的数量和第二线程的数量至少为1,以避免线程池中不存在能够执行特定优先级任务的线程。
由此,在S102中,可以根据目标任务的优先级,将目标任务调度至第一线程或第二线程。
在一些实施例中,在确定线程池中的总线程数量后,可以将线程池中至少一半总线程数量的线程作为第二线程,并将其余线程作为第一线程,从而完成线程池中线程的配置。
为便于理解,下面将结合图2,详细说明本说明书实施例中总线程数量的确定方法。
图2是一示例性实施例提供的一种总线程数量确定方法的流程示意图,如图2所示,本说明书实施例提供的总线程数量确定方法包括如下步骤。
S201,初步确定总线程数量。
在一些实施例中,总线程数量可以根据系统资源初步确定。示例性地,由于线程数量与CPU性能直接相关,因此可以根据当前用户可调用的CPU核数,初步确定线程池中的总线程数量,使总线程数量和CPU核数正相关。
S202,根据初步确定的总线程数量,预测多个任务队列中存储的任务在执行过程中的总内存占用量。
在一些实施例中,由于每个线程在执行任务时均需要占用一定的内存,因此在初步确定总线程数量后,可以根据实际任务中每个线程占用的内存,预测多个任务队列中存储的任务在执行过程中的总内存占用量。
值得注意的是,由于任务队列中存储的任务类型具有不确定性,因此这些任务在执行过程中,除了每个线程占用的内存外,还可能会发生其他内存占用,在预测总内存占用量时,应当考虑任务在执行过程中可能会占用的全部内存。
S203,若总内存占用量超出预设内存限制,则降低总线程数量,直到预测得到的总内存占用量满足预设内存限制。
在一些实施例中,预设内存限制可以是预设的内存占比。例如,限制总内存占用量不超过当期空闲内存的60%。若超出该内存占比,则可降低总线程数量,并重新预测相应的总内存占用率,直到预测得到的总内存占用量满足预设内存限制。
下面将以多个Compaction任务的执行为例,说明总内存占用量和总线程数量之间的关系,此时,多个任务队列中分别存储每个Compaction任务的子任务。
可以理解的是,Compaction任务过程中占用的内存主要分为如下四部分。
1.宏块缓冲区内存(buffer_mem):
由于一个Compaction任务需要从全局内存池申请9个2MB内存块,这些内存块用于存储Compaction任务执行过程中需要调用的数据。当所有Compaction任务申请的内存块总数超过空闲块数时,二倍扩容机制会让内存池的空间增大一倍。
因此,假设Compaction的任务总数为C,则预计buffer_mem的占用量为18MB×C。
2.宏块元信息内存(meta_mem):
在Compaction任务的执行过程中,当宏块写盘时需要对宏块的元信息进行深拷贝,拷贝次数为宏块刷写的个数。宏块元信息包含基本信息(固定大小)和一行行键(Rowkey),当宏块数越多(即数据量越多),或Rowkey的列数越多时,占用内存越多。
假设宏块元信息的基本信息固定大小为mem_size,宏块数为N,RowKey列数为M,每一列的平均大小为S,则预计meta_mem的占用量为N×(meta_size+M×S)。
3.深拷贝内存(rowkey_mem):
在Compaction任务的执行过程中,在行数据写入宏块时需要深拷贝RowKey,每次刷写宏块时,该内存会被重用,因此该部分实际消耗内存与宏块中的行数相关。
假设RowKey列数为M,宏块包含N行,RowKey每一列的平均大小为S,则预计rowkey_mem的占用量为N×(M×S)。
4.预存数组(static_mem):
在Compaction任务的执行过程中,还会预存一些较大的定长数组(通常占用8MB)与动态数组,这些数组会占用一定数量的内存。
假设R为动态数组的预估内存,则预计static_mem的占用量为8MB+R。
在Compaction任务的实际执行过程中,每个Compaction任务都将使用了一份buffer_mem和一份meta_mem,而每个用于执行Compaction任务的子任务的线程都将使用一份rowkey_mem和一份staitc_mem。
因此,假设Compaction任务共有C个,总线程数量为K,则Compaction任务的总内存占用量total_mem=K×(rowkey_mem+static_mem)+C×(meta_mem+buffer_mem)。
若该总内存占用量超出上述预设内存限制,则可适当降低总线程数量K,以使总内存占用率满足预设内存限制。
也就是说,在多个任务队列中分别存储每个Compaction任务的子任务的情况下,上述S202可以包括如下步骤:分别预测Compaction任务在执行过程中产生的宏块缓冲区内存占用量、宏块元信息内存占用量、深拷贝内存占用量以及预存数组内存占用量。将宏块缓冲区内存占用量与宏块元信息内存占用量之和与Compaction任务的数量相乘,得到第一乘积。将深拷贝内存占用量与预存数组内存占用量之和与初步确定的总线程数量相乘,得到第二乘积。将第一乘积和第二乘积相加,得到总内存占用量。
在一些实施例中,也可以根据对于总内存占用量total_mem的预设内存限制,反推在该预设内存限制下可以充分利用的总线程数量,并将根据预设内存限制反推出的总线程数量和S201中初步确定的总线程数量中的较小值作为最终确定的总线程数量,以免使总线程数量超出任务执行过程中实际可用的最大线程数量,从而造成资源的浪费。
本说明书实施例能够合理的确定任务执行过程中需要消耗的资源,并对这些资源进行分配和占用,在保证高优先级任务优先调度的前提下,能够避免其他优先级任务被长期搁置或无资源可执行。同时,本说明书实施例建立了线程与内存占用量之间的关系,使系统资源可以被充分利用,避免了由于配置过多线程数量或占用过多内存引起的资源浪费。
图3是一示例性实施例提供的一种设备的结构示意图。请参考图3,在硬件层面,该设备包括处理器302、内部总线304、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图4,图4提供了一种任务调度装置400,可以应用于如图3所示的设备中,以实现本说明书的技术方案。具体地,该任务调度装置400可以包括:
确定模块401,用于在预先构建的多个任务队列中,确定目标任务队列,其中,多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,调度权重用于控制任务队列被确定为目标任务队列的概率。
调度模块402,用于将目标任务队列中的目标任务调度至线程池中的指定线程,以便执行目标任务。
在一些实施例中,线程池中包括第一线程和第二线程,第一线程和第二线程分别用于执行不同优先级的任务。调度模块402具体用于,根据目标任务的优先级,将目标任务调度至第一线程或第二线程。
在一些实施例中,第一线程用于执行多个任务队列中存储的最高优先级的任务,第二线程用于执行多个任务队列中存储的除最高优先级之外的其他优先级的任务,第一线程的数量小于或等于第二线程的数量。
在一些实施例中,该任务调度装置400还包括线程确定模块(图中未示出)。线程确定模块用于确定线程池中的总线程数量;将线程池中至少一半总线程数量的线程作为第二线程。
在一些实施例中,线程确定模块还用于,初步确定总线程数量;根据初步确定的总线程数量,预测多个任务队列中存储的任务在执行过程中的总内存占用量;若总内存占用量超出预设内存限制,则降低总线程数量,直到预测得到的总内存占用量满足预设内存限制。
在一些实施例中,多个任务队列中存储的任务为Compaction任务的子任务。线程确定模块还用于,分别预测Compaction任务在执行过程中产生的宏块缓冲区内存占用量、宏块元信息内存占用量、深拷贝内存占用量以及预存数组内存占用量;将宏块缓冲区内存占用量与宏块元信息内存占用量之和与Compaction任务的数量相乘,得到第一乘积;将深拷贝内存占用量与预存数组内存占用量之和与初步确定的总线程数量相乘,得到第二乘积;将第一乘积和第二乘积相加,得到总内存占用量。
在一些实施例中,每个任务队列被确定为目标任务队列的概率与该任务队列中存储的任务的优先级正相关。
在一些实施例中,调度权重通过权重系数区间示出,每个任务队列对应的权重系数区间的大小与该任务队列中存储的任务的优先级正相关。确定模块401具体用于,生成随机权重系数;将随机权重系数落入的权重系数区间对应的任务队列,确定为目标任务队列。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (11)

1.一种任务调度方法,包括:
在预先构建的多个任务队列中,确定目标任务队列,其中,所述多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,所述调度权重用于控制任务队列被确定为目标任务队列的概率;
将所述目标任务队列中的目标任务调度至线程池中的指定线程,以便执行所述目标任务。
2.根据权利要求1所述的方法,所述线程池中包括第一线程和第二线程,所述第一线程和所述第二线程分别用于执行不同优先级的任务;
所述将所述目标任务队列中的目标任务调度至线程池中的指定线程,包括:
根据所述目标任务的优先级,将所述目标任务调度至所述第一线程或所述第二线程。
3.根据权利要求2所述的方法,所述第一线程用于执行所述多个任务队列中存储的最高优先级的任务,所述第二线程用于执行所述多个任务队列中存储的除所述最高优先级之外的其他优先级的任务,所述第一线程的数量小于或等于所述第二线程的数量。
4.根据权利要求2所述的方法,所述方法还包括:
确定所述线程池中的总线程数量;
将所述线程池中至少一半总线程数量的线程作为所述第二线程。
5.根据权利要求4所述的方法,所述确定所述线程池中的总线程数量,包括:
初步确定总线程数量;
根据初步确定的总线程数量,预测所述多个任务队列中存储的任务在执行过程中的总内存占用量;
若所述总内存占用量超出预设内存限制,则降低总线程数量,直到预测得到的总内存占用量满足预设内存限制。
6.根据权利要求5所述的方法,所述多个任务队列中存储的任务为压缩Compaction任务的子任务;
所述根据初步确定的总线程数量,预测所述多个任务队列中存储的任务在执行过程中的总内存占用量,包括:
分别预测所述Compaction任务在执行过程中产生的宏块缓冲区内存占用量、宏块元信息内存占用量、深拷贝内存占用量以及预存数组内存占用量;
将所述宏块缓冲区内存占用量与所述宏块元信息内存占用量之和与所述Compaction任务的数量相乘,得到第一乘积;
将所述深拷贝内存占用量与所述预存数组内存占用量之和与初步确定的总线程数量相乘,得到第二乘积;
将所述第一乘积和所述第二乘积相加,得到所述总内存占用量。
7.根据权利要求1所述的方法,每个任务队列被确定为目标任务队列的概率与该任务队列中存储的任务的优先级正相关。
8.根据权利要求1所述的方法,所述调度权重通过权重系数区间示出,每个任务队列对应的权重系数区间的大小与该任务队列中存储的任务的优先级正相关;
所述在预先构建的多个任务队列中,确定目标任务队列,包括:
生成随机权重系数;
将所述随机权重系数落入的权重系数区间对应的任务队列,确定为目标任务队列。
9.一种任务调度装置,包括:
确定模块,用于在预先构建的多个任务队列中,确定目标任务队列,其中,所述多个任务队列分别用于存储不同优先级的任务,每个任务队列被配置有调度权重,所述调度权重用于控制任务队列被确定为目标任务队列的概率;
调度模块,用于将所述目标任务队列中的目标任务调度至线程池中的指定线程,以便执行所述目标任务。
10.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
CN202311267520.4A 2023-09-27 2023-09-27 任务调度方法及装置 Pending CN117234691A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311267520.4A CN117234691A (zh) 2023-09-27 2023-09-27 任务调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311267520.4A CN117234691A (zh) 2023-09-27 2023-09-27 任务调度方法及装置

Publications (1)

Publication Number Publication Date
CN117234691A true CN117234691A (zh) 2023-12-15

Family

ID=89087766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311267520.4A Pending CN117234691A (zh) 2023-09-27 2023-09-27 任务调度方法及装置

Country Status (1)

Country Link
CN (1) CN117234691A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472593A (zh) * 2023-12-27 2024-01-30 中诚华隆计算机技术有限公司 一种多线程间资源分配方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472593A (zh) * 2023-12-27 2024-01-30 中诚华隆计算机技术有限公司 一种多线程间资源分配方法及系统
CN117472593B (zh) * 2023-12-27 2024-03-22 中诚华隆计算机技术有限公司 一种多线程间资源分配方法及系统

Similar Documents

Publication Publication Date Title
TWI552076B (zh) 使用具有客作業系統及虛擬處理器之超管理器之系統及方法
KR101644800B1 (ko) 컴퓨팅 시스템 및 방법
CN106293893B (zh) 作业调度方法、装置及分布式系统
EP4242843A1 (en) Graphics card memory management method and apparatus, device, and system
CN107577523B (zh) 一种任务执行的方法及装置
CN107818012B (zh) 一种数据处理方法、装置及电子设备
JP2010533924A (ja) リソース割り当てを拡大および縮小することによるスケジューリング
CN114579271A (zh) 任务调度方法、分布式系统及存储介质
CN110597614B (zh) 一种资源调整方法及装置
US9507633B2 (en) Scheduling method and system
CN117234691A (zh) 任务调度方法及装置
CN112817722B (zh) 一种基于优先级的分时调度方法、终端及存储介质
US20120102012A1 (en) Cross-region access method for embedded file system
CN103748559A (zh) 利用工作需求反馈在处理器之间进行工作划分的方法和系统
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN115421924A (zh) 一种内存分配方法、装置及设备
CN115509704A (zh) 一种任务调度方法、装置、设备及存储介质
CN116893899A (zh) 资源分配方法、装置、计算机设备和存储介质
CN105824705A (zh) 一种任务分配方法和电子设备
CN112114958A (zh) 资源隔离方法、分布式平台、计算机设备和存储介质
CN114237505A (zh) 业务数据的批量处理方法、装置及计算机设备
CN117519930A (zh) 批量任务的执行方法、装置及电子设备
CN111143063A (zh) 任务的资源预约方法及装置
CN113254186A (zh) 一种进程调度方法、调度器及存储介质
CN109582696B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40100576

Country of ref document: HK