CN117827452A - 线程分配方法及装置 - Google Patents

线程分配方法及装置 Download PDF

Info

Publication number
CN117827452A
CN117827452A CN202311869150.1A CN202311869150A CN117827452A CN 117827452 A CN117827452 A CN 117827452A CN 202311869150 A CN202311869150 A CN 202311869150A CN 117827452 A CN117827452 A CN 117827452A
Authority
CN
China
Prior art keywords
tenant
threads
thread
target type
data node
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
CN202311869150.1A
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 CN202311869150.1A priority Critical patent/CN117827452A/zh
Publication of CN117827452A publication Critical patent/CN117827452A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书一个或多个实施例提供一种线程分配方法及装置,涉及数据库技术领域。该方法应用于分布式数据库中的数据节点,数据节点被配置有线程数量上限,线程数量上限用于示出数据节点中能够同时用于执行目标类型任务的线程的数量上限,且数据节点中的每个租户分别被配置有线程分配权重。该方法包括:根据每个租户的线程分配权重,为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。本说明书提供的方案,可以使数据节点中总能保留一部分线程,用于执行除目标类型任务之外的其他类型任务。此外,本说明书还能够根据线程分配权重为每个租户依次分配线程,从而解决了线程在各个租户之间分配不当的问题。

Description

线程分配方法及装置
技术领域
本说明书一个或多个实施例涉及数据库技术领域,尤其涉及一种线程分配方法及装置。
背景技术
分布式数据库通常由多个数据节点组成,每个数据节点中的线程资源由该数据节点中的全部租户共享。
相关技术中,当同一数据节点中的多个租户同时请求执行线程高消耗型任务(例如,转储任务、合并任务)时,这些线程高消耗型任务会大量抢占该数据节点中的线程,甚至将该数据节点中的线程占满,导致该数据节点中的其他请求无法执行或执行缓慢。此外,用于执行这些任务的线程在各个租户之间还存在分配不当的问题,导致部分租户可能无法被分配到线程。
发明内容
有鉴于此,本说明书一个或多个实施例提供了一种线程分配方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种线程分配方法,应用于分布式数据库中的数据节点,数据节点被配置有线程数量上限,线程数量上限用于示出数据节点中能够同时用于执行目标类型任务的线程的数量上限,且数据节点中的每个租户分别被配置有线程分配权重;
该方法包括:
根据每个租户的线程分配权重,为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。
根据本说明书一个或多个实施例的第二方面,提出了一种线程分配装置,应用于分布式数据库中的数据节点,数据节点被配置有线程数量上限,线程数量上限用于示出数据节点中能够同时用于执行目标类型任务的线程的数量上限,且数据节点中的每个租户分别被配置有线程分配权重;
该装置包括:
分配模块,用于根据每个租户的线程分配权重,为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器通过运行可执行指令以实现如第一方面的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面方法的步骤。
本说明书提供的方案,使分布式数据库中的每个数据节点均被配置有线程数量上限,以便在各个数据节点中限制能够同时用于执行目标类型任务的线程的数量,从而使数据节点中总能保留一部分线程,用于执行除目标类型任务之外的其他类型任务,避免目标类型任务大量抢占线程致使其他类型的任务无法执行或执行缓慢。此外,本说明书实施例还为数据节点中的每个租户分别配置有线程分配权重,并根据线程分配权重为每个租户依次分配线程,从而解决了线程在各个租户之间分配不当的问题。
附图说明
图1是一示例性实施例提供的一种线程分配方法的流程示意图。
图2是一示例性实施例提供的又一种线程分配方法的流程示意图。
图3是一示例性实施例提供的线程分配权重的调整方法的流程示意图。
图4是一示例性实施例提供的初始线程分配的完整过程示意图。
图5是一示例性实施例提供的根据线程分配权重进行线程分配的完整过程示意图。
图6是一示例性实施例提供的一种设备的结构示意图。
图7是一示例性实施例提供的一种线程分配装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
租户是分布式数据库中的是一个逻辑概念,也是资源分配的单位。每个数据节点(即分布式数据库中的一台机器)中每个租户的数据和能够调度的线程资源是完全隔离的,但每个数据节点在线程分配的过程中,待分配的线程资源由该数据节点中的全部租户共享。
由此,当同一数据节点中的多个租户同时请求执行线程高消耗型任务(例如,转储任务、合并任务)时,这些线程高消耗型任务会大量抢占该数据节点中的线程,甚至将该数据节点中的线程占满,导致该数据节点中的其他请求无法执行或执行缓慢。此外,用于执行这些任务的线程在各个租户之间还存在分配不当的问题,导致部分租户可能无法被分配到线程。
有鉴于此,本说明提供的方案,使分布式数据库中的每个数据节点均被配置有线程数量上限,以便在各个数据节点中限制能够同时用于执行目标类型任务的线程的数量,从而使数据节点中总能保留一部分线程,用于执行除目标类型任务之外的其他类型任务,避免目标类型任务大量抢占线程致使其他类型的任务无法执行或执行缓慢。此外,本说明书实施例还为数据节点中的每个租户分别配置有线程分配权重,并根据线程分配权重为每个租户依次分配线程,从而解决了线程在各个租户之间分配不当的问题。
接下来,将对本说明书的示例性实施方式进行详细说明。
首先,本说明书实施例提供了一种线程分配方法,该方法可以由任意电子设备执行。
示例性地,本说明书提供的线程分配方法,可以应用于分布式数据库中的数据节点。这些数据节点被配置有线程数量上限,线程数量上限用于示出数据节点中能够同时用于执行目标类型任务的线程的数量上限。
可以理解的是,线程数量上限的配置,旨在避免目标类型任务在执行过程中大量抢占数据节点中的线程,从而对其他类型任务的执行造成影响。因此,目标类型任务可以是数据库中的线程高消耗型任务,例如,基于LSM-Tree的数据库中的转储任务和合并任务。当然,目标类型任务也可以是由租户指定的任意类型任务,本说明书实施例对此不做限定。
也就是说,线程数量上限可用于限制目标类型任务对数据节点中线程资源的抢占,从而使数据节点中总能保留一部分线程,用于执行其他类型的任务。
此外,这些数据节点中的每个租户还分别被配置有线程分配权重。线程分配权重可以根据租户当前请求执行的目标类型任务数量,在每次线程分配后进行调整。在初始分配时,可以根据每个租户的实际需求,为每个租户分别配置默认的线程分配权重。
具体而言,图1是一示例性实施例提供的一种线程分配方法的流程示意图,如图1所示,本说明书实施例提供的线程分配方法包括如下步骤。
S101,根据每个租户的线程分配权重,为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。
在一些实施例中,针对数据节点中的每个租户,可以计算该租户的线程分配权重在全部待分配租户的线程分配权重之和中的占比,并将该占比与剩余可分配线程数量之间的乘积作为该租户被分配到的线程的数量。其中,剩余可分配线程数量可以理解为在不超出线程数量上限的前提下,仍能被自由分配至租户的线程的数量,剩余可分配线程数量可以在分配过程中随着分配进程而实时更新。
例如,假设数据节点中存在租户A、租户B和租户C共三个租户,三个租户的线程分配权重依次为10、50和40,且该数据节点初始的剩余可分配线程数量为10。在本次线程分配过程中,将依次为租户A、租户B和租户C分配线程,则租户A可以被分配到1个线程租户B可以被分配到5个线程/>租户C可以被分配到4个线程/>
值得注意的是,由于通过该方式计算得到的线程数量可能存在小数,因此通过该方式计算得到的线程数量可以理解为理想状态下租户应被分配的线程的数量(目标线程数量),并不一定是租户最终被分配到的线程的数量。
具体而言,当计算得到的线程数量为小数时,可以将线程数量的取值向上取整,从而保证分配至租户的线程数量能够尽可能达到其对应的目标线程数量。但由于线程数量上限的存在,这也可能导致分配顺序靠后的租户实际被分配到的线程数量不足。
在此情况下,为了尽可能的保证线程分配的公平性,针对数据节点中的每个租户,若该租户当前被分配到的线程的数量小于该租户当前对应的目标线程数量,则可以在下一次线程分配过程中,优先为该租户分配线程。其中,该租户当前对应的目标线程数量即通过上述方式计算得到的线程数量,可以由该租户当前的线程分配权重确定。
也就是说,由于小数的产生,若本次分配至租户的线程未满足其应被分配的线程的数量,则可以在下次分配时,优先保证分配至该租户的线程满足其应被分配的线程数量,从而尽可能的保证线程分配的公平性。
值得注意的是,为了尽量避免租户在执行目标类型任务时对线程资源发生抢占,针对数据节点中每个租户还可配置有可调度数量上限,可调度数量上限用于示出租户能够同时用于执行目标类型任务的线程的数量上限。
这就意味着租户被分配到的线程并不一定是可调度的线程,租户同一时间可用于执行目标类型任务的线程仍不能超出该租户被配置的可调度数量上限。
换言之,本说明书提供的线程分配方法,可以理解为是将用于执行目标类型任务的线程,分配至每个租户私有的线程池中,租户在执行目标类型的任务时,可以从各自私有的线程池中调度被分配的线程,但能够同时调度的线程总数仍受到上述可调度数量上限的限制。
也就是说,当执行目标类型的任务时,租户实际可调度的线程数量为被分配到的线程的数量与可调度数量上限中的最小值。
在此情况下,当租户被分配到的线程的数量大于可调度数量上限时,将导致该租户被分配到的线程无法得到有效利用。此时,可以将这部分空闲线程平均分配至其他被分配线程的数量小于可调度数量上限的租户,以使这部分空闲线程能够得到有效利用。
在一些实施例中,请参照图2,图2是一示例性实施例提供的又一种线程分配方法的流程示意图。
如图2所示,通过重复执行以下步骤S201至S202,可以对数据节点中的线程进行多次分配。
S201,根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重。
其中,当前请求执行的目标类型任务可以包括:当前正在执行的目标类型任务以及当前等待执行的目标类型任务。
为便于理解,下面将结合图3,具体说明线程分配权重的调整方法。如图3所示,线程分配权重的调整方法可以包括如下步骤。
S301,获取数据节点中全部租户当前等待执行的目标类型任务的平均数量。
S302,在平均数量大于预设数量阈值的情况下,根据每个租户当前等待执行的目标类型任务的数量与平均数量之间的大小关系,分别调整每个租户的线程分配权重。
可以理解的是,在上述平均数量较小的情况下,意味着数据节点中等待执行的目标类型任务较少,且当前线程分配权重较为合理,因此不会发生线程抢占的情况,可以不对线程分配权重进行调整。因此,本说明书实施例通过设置预设数量阈值,限定了进行线程分配权重调整的条件,从而减少了对于线程分配权重的无意义调整。
示例性地,在需要调整每个租户的线程分配权重的情况下,可以针对数据节点中的每个租户,分别进行如下处理:
若该租户当前等待执行的目标类型任务的数量大于平均数量,则使该租户的线程分配权重增加。
若该租户当前等待执行的目标类型任务的数量小于平均数量,则使该租户的线程分配权重降低。
若该租户当前等待执行的目标类型任务的数量等于平均数量,则使该租户的线程分配权重保持不变。
其中,租户当前等待执行的目标类型任务的数量反应了租户当前对于线程的需求程度,根据该数量进行线程分配权重调整,可以得到较为合理的调整结果。
在一些实施例中,针对数据节点中的每个租户,若该租户当前未请求执行目标类型任务,则还可以将该租户的线程分配权重清空(例如,线程分配权重设为0)。其中,线程分配权重被清空的租户不参与线程分配过程。
可以理解的是,租户当前未请求执行目标类型任务,意味着租户不会调度用于执行目标类型任务的线程,因此将线程分配给该类租户并无实际意义,反而会造成线程资源的浪费。因此,可以使该类租户不参与线程分配的过程,即不论如何分配,该类租户得到的线程始终为0。
在一些实施例中,在每个租户的线程分配权重均被调整后,针对线程分配权重在调整过程中未被降低的租户,若该租户当前请求执行的目标类型任务的数量小于该租户当前被分配到的线程的数量,则可以使该租户的线程分配权重降低。
可以理解的是,即使因为某些原因(例如,上述预设数量阈值设置不合理),导致租户的线程分配权重在上述调整过程中未被降低。但若该租户当前请求执行的目标类型任务的数量小于该租户当前被分配到的线程的数量,则意味着该租户当前被分配到的线程中存在空闲线程,未被充分利用。因此,可以将该租户的线程分配权重降低。
值得注意的是,由于在部分租户的线程分配权重降低的情况下,即使另一部分租户的线程分配权重未被主动增加,但由于线程分配权重占比的增加,另一部分租户对应的目标线程数量也会相应升高。因此,还可以限制每个租户经调整后最终得到的线程分配权重不超过初始分配时被配置的默认线程分配权重,从而避免某一租户的线程分配权重占比过高,抢占其他租户的线程资源。
此外,在上述将线程分配权重增加或降低的过程中,为了尽可能的保证线程分配的公平性,避免线程分配权重的大幅度变化导致各租户之间的线程分配权重比例失衡,可以按照租户当前线程分配权重的单位比例进行增加或降低。例如,增加当前线程分配权重的10%或降低当前线程分配权重的10%。
为便于理解,这里的单位比例也可以配置为权重的调整级别。也就是说,在每次线程分配权重的调整过程中,可以将线程分配权重升高一级、降低一级或保持不变。其中,升高一级意味着将当前线程分配权重按照单位比例(例如,10%)进行增加,降低一级意味着将当前线程分配权重按照单位比例(例如,10%)进行降低。当然,在一些极端的情况下,例如某租户被分配到的线程的数量远小于或远大于其请求执行的目标类型任务的数量,也可以使线程分配权重在一次调整过程中升高或降低多级,本说明书实施例对此不做限定。
S202,根据调整后的线程分配权重,重新为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。
需要说明的是,由于S202涉及的分配过程实质上与S101相同,其区别仅在于S202的分配依据是调整后的线程分配权重,而S101的分配依据是初始配置的默认线程分配权重。因此,关于S202的具体实现,可以参照以上对于S101的描述,本说明书实施例对此不再赘述。
可以理解的是,以上S201至S202可以按照预设的时间周期重复执行,也可以在每次触发预设的线程分配条件时执行,本说明书实施例对此不做限定。
在一些实施例中,在每次为数据节点中的每个租户依次分配线程之前,还可以首先为每个租户分配一个初始线程,以避免部分租户在分配过程中无法获得线程。其中,数据节点中能够同时用于执行目标类型任务的线程包括初始线程,也就是说,初始线程同样占用上述线程数量上限示出的最大线程容量。
具体而言,初始线程的分配可以有如下两种情况:
其一,若线程数量上限大于或等于数据节点中全部租户的数量,则为数据节点中的每个租户依次分配一个初始线程。
其二,若线程数量上限小于数据节点中全部租户的数量,则为数据节点中的部分租户依次分配一个初始线程,并在下一次初始线程分配的过程中,优先为本次未被分配到初始线程的租户分配一个初始线程,从而保证了初始线程分配的公平性。
在初始线程分配后,可以执行上述S101或S202,即根据每个租户的线程分配权重,继续为各个租户分配线程,直到被分配至租户的线程的数量达到线程数量上限。
以上结合图1至图3,详细介绍了本说明书提供的线程分配方法的分配原理及实施细节。为便于理解,下面将结合图4至图6举例说明本说明书提供的线程分配方法的完整分配过程。
首先,假设数据节点中存在5个租户,5个租户被配置的默认线程分配权重依次为10、10、50、20和10,且数据节点被配置的线程数量上限为20。
请参照图4,图4示出了初始线程分配的完整过程。如图4所示,在线程分配过程开始时,首先为5个租户各分配一个初始线程。由于存在线程数量上限的限制,因此在初始线程分配的过程中,剩余可分配线程数量将不断减少。且由于线程数量上限值大于全部租户的数量,因此在初始线程分配结束后,每个租户均能够被分配到一个初始线程,以避免在后续线程分配过程中存在无法得到线程的租户。
接下来请参照图5,图5示出了根据线程分配权重进行线程分配的完整过程。在初始线程分配结束后,接下来将根据每个租户的线程分配权重,依次为每个租户分配线程。如图5所示,在图4示出的初始线程分配结束后,当前剩余可分配线程数量为15。此时,可以将剩余的15个线程根据线程分配权重依次分配至每个租户,直到剩余可分配线程数量为0,即被分配至租户的线程达到线程数量上限。此时,5个租户被分配到的线程的数量依次为3、3、8、4和2。至此,一次完整的线程分配过程结束。
可以理解的是,再下一次线程分配开始时,应当首先根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重。其具体实施方式可以参照上述图3示出的实施例的描述,本说明书实施例对此不做赘述。
图6是一示例性实施例提供的一种设备的结构示意图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图7,图7提供了一种线程分配装置700,可以应用于如图6所示的设备中,以实现本说明书的技术方案。
示例性地,该线程分配装置700可以应用于分布式数据库中的数据节点,数据节点被配置有线程数量上限,线程数量上限用于示出数据节点中能够同时用于执行目标类型任务的线程的数量上限,且数据节点中的每个租户分别被配置有线程分配权重。该线程分配装置700具体包括:
分配模块701,用于根据每个租户的线程分配权重,为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。
在一些实施例中,分配模块701还用于,重复执行以下步骤,以便对数据节点中的线程进行多次分配:根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重;根据调整后的线程分配权重,重新为数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到线程数量上限。
在一些实施例中,当前请求执行的目标类型任务包括:当前正在执行的目标类型任务以及当前等待执行的目标类型任务。分配模块701还用于,获取数据节点中全部租户当前等待执行的目标类型任务的平均数量;在平均数量大于预设数量阈值的情况下,根据每个租户当前等待执行的目标类型任务的数量与平均数量之间的大小关系,分别调整每个租户的线程分配权重。
在一些实施例中,分配模块701还用于,针对数据节点中的每个租户,分别进行如下处理:若该租户当前等待执行的目标类型任务的数量大于平均数量,则使该租户的线程分配权重增加;若该租户当前等待执行的目标类型任务的数量小于平均数量,则使该租户的线程分配权重降低;若该租户当前等待执行的目标类型任务的数量等于平均数量,则使该租户的线程分配权重保持不变。
在一些实施例中,分配模块701还用于,针对数据节点中的每个租户,若该租户当前未请求执行目标类型任务,则将该租户的线程分配权重清空;其中,线程分配权重被清空的租户不参与线程分配过程。
在一些实施例中,分配模块701还用于,针对线程分配权重在调整过程中未被降低的租户,若该租户当前请求执行的目标类型任务的数量小于该租户当前被分配到的线程的数量,则使该租户的线程分配权重降低。
在一些实施例中,分配模块701还用于,针对数据节点中的每个租户,若该租户当前被分配到的线程的数量小于该租户当前对应的目标线程数量,则在下一次线程分配过程中,优先为该租户分配线程;其中,该租户当前对应的目标线程数量由该租户当前的线程分配权重确定。
在一些实施例中,分配模块701还用于,若线程数量上限大于或等于数据节点中全部租户的数量,则为数据节点中的每个租户依次分配一个初始线程,其中,数据节点中能够同时用于执行目标类型任务的线程包括初始线程。
在一些实施例中,分配模块701还用于,若线程数量上限小于数据节点中全部租户的数量,则为数据节点中的部分租户依次分配一个初始线程,并在下一次初始线程分配的过程中,优先为本次未被分配到初始线程的租户分配一个初始线程,其中,数据节点中能够同时用于执行目标类型任务的线程包括初始线程。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (12)

1.一种线程分配方法,应用于分布式数据库中的数据节点,所述数据节点被配置有线程数量上限,所述线程数量上限用于示出所述数据节点中能够同时用于执行目标类型任务的线程的数量上限,且所述数据节点中的每个租户分别被配置有线程分配权重;
所述方法包括:
根据每个租户的线程分配权重,为所述数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到所述线程数量上限。
2.根据权利要求1所述的方法,在所述根据每个租户的线程分配权重,为所述数据节点中的每个租户依次分配线程之后,所述方法还包括:
重复执行以下步骤,以便对所述数据节点中的线程进行多次分配:
根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重;
根据调整后的线程分配权重,重新为所述数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到所述线程数量上限。
3.根据权利要求2所述的方法,所述当前请求执行的目标类型任务包括:当前正在执行的目标类型任务以及当前等待执行的目标类型任务;
所述根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重,包括:
获取所述数据节点中全部租户当前等待执行的目标类型任务的平均数量;
在所述平均数量大于预设数量阈值的情况下,根据每个租户当前等待执行的目标类型任务的数量与所述平均数量之间的大小关系,分别调整每个租户的线程分配权重。
4.根据权利要求3所述的方法,所述根据每个租户当前等待执行的目标类型任务的数量与所述平均数量之间的大小关系,分别调整每个租户的线程分配权重,包括:
针对所述数据节点中的每个租户,分别进行如下处理:
若该租户当前等待执行的目标类型任务的数量大于所述平均数量,则使该租户的线程分配权重增加;
若该租户当前等待执行的目标类型任务的数量小于所述平均数量,则使该租户的线程分配权重降低;
若该租户当前等待执行的目标类型任务的数量等于所述平均数量,则使该租户的线程分配权重保持不变。
5.根据权利要求2所述的方法,所述根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重,包括:
针对所述数据节点中的每个租户,若该租户当前未请求执行目标类型任务,则将该租户的线程分配权重清空;
其中,线程分配权重被清空的租户不参与线程分配过程。
6.根据权利要求2至5任一项所述的方法,在所述根据每个租户当前请求执行的目标类型任务的数量,调整每个租户的线程分配权重之后,所述方法还包括:
针对线程分配权重在调整过程中未被降低的租户,若该租户当前请求执行的目标类型任务的数量小于该租户当前被分配到的线程的数量,则使该租户的线程分配权重降低。
7.根据权利要求1或2所述的方法,所述方法还包括:
针对所述数据节点中的每个租户,若该租户当前被分配到的线程的数量小于该租户当前对应的目标线程数量,则在下一次线程分配过程中,优先为该租户分配线程;
其中,该租户当前对应的目标线程数量由该租户当前的线程分配权重确定。
8.根据权利要求1或2所述的方法,在每次为所述数据节点中的每个租户依次分配线程之前,所述方法还包括:
若所述线程数量上限大于或等于所述数据节点中全部租户的数量,则为所述数据节点中的每个租户依次分配一个初始线程,其中,所述数据节点中能够同时用于执行目标类型任务的线程包括所述初始线程。
9.根据权利要求1或2所述的方法,在每次为所述数据节点中的每个租户依次分配线程之前,所述方法还包括:
若所述线程数量上限小于所述数据节点中全部租户的数量,则为所述数据节点中的部分租户依次分配一个初始线程,并在下一次初始线程分配的过程中,优先为本次未被分配到初始线程的租户分配一个初始线程,其中,所述数据节点中能够同时用于执行目标类型任务的线程包括所述初始线程。
10.一种线程分配装置,应用于分布式数据库中的数据节点,所述数据节点被配置有线程数量上限,所述线程数量上限用于示出所述数据节点中能够同时用于执行目标类型任务的线程的数量上限,且所述数据节点中的每个租户分别被配置有线程分配权重;
所述装置包括:
分配模块,用于根据每个租户的线程分配权重,为所述数据节点中的每个租户依次分配线程,直到被分配至租户的线程的数量达到所述线程数量上限。
11.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1至9任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1至9任一项所述方法的步骤。
CN202311869150.1A 2023-12-29 2023-12-29 线程分配方法及装置 Pending CN117827452A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311869150.1A CN117827452A (zh) 2023-12-29 2023-12-29 线程分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311869150.1A CN117827452A (zh) 2023-12-29 2023-12-29 线程分配方法及装置

Publications (1)

Publication Number Publication Date
CN117827452A true CN117827452A (zh) 2024-04-05

Family

ID=90511156

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311869150.1A Pending CN117827452A (zh) 2023-12-29 2023-12-29 线程分配方法及装置

Country Status (1)

Country Link
CN (1) CN117827452A (zh)

Similar Documents

Publication Publication Date Title
US10649664B2 (en) Method and device for scheduling virtual disk input and output ports
KR101644800B1 (ko) 컴퓨팅 시스템 및 방법
US11175960B2 (en) Worker-scheduling method in cloud-computing system and apparatus for the same
US20100083262A1 (en) Scheduling Requesters Of A Shared Storage Resource
CN107577523B (zh) 一种任务执行的方法及装置
KR20040058299A (ko) 예산 잉여를 태스크에 할당하는 방법 및 시스템
US8984521B2 (en) Computer system performance by applying rate limits to control block tenancy
US20180004456A1 (en) Memory network to prioritize processing of a memory access request
EP4242843A1 (en) Graphics card memory management method and apparatus, device, and system
WO2016041446A1 (zh) 一种资源分配方法、装置及设备
CN109739627B (zh) 任务的调度方法、电子设备及介质
CN111221631A (zh) 一种任务调度方法、装置及存储介质
CN114265679A (zh) 数据处理方法、装置和服务器
CN113157428B (zh) 基于容器的资源调度方法、装置及容器集群管理装置
CN115421924A (zh) 一种内存分配方法、装置及设备
CN117234691A (zh) 任务调度方法及装置
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN113760549A (zh) 一种pod部署方法及装置
CN112817722A (zh) 一种基于优先级的分时调度方法、终端及存储介质
CN117078495A (zh) 图形处理器的内存分配方法、装置、设备及存储介质
CN117827452A (zh) 线程分配方法及装置
CN112114958A (zh) 资源隔离方法、分布式平台、计算机设备和存储介质
CN114780201A (zh) 资源调整方法、装置、电子设备及存储介质
CN109582696B (zh) 扫描任务的生成方法及装置、电子设备
CN115794362A (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