CN108804211A - 线程调度方法、装置、电子设备及存储介质 - Google Patents
线程调度方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN108804211A CN108804211A CN201810395327.1A CN201810395327A CN108804211A CN 108804211 A CN108804211 A CN 108804211A CN 201810395327 A CN201810395327 A CN 201810395327A CN 108804211 A CN108804211 A CN 108804211A
- Authority
- CN
- China
- Prior art keywords
- thread
- processor
- virtual machine
- target
- scheduling
- 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 186
- 238000003860 storage Methods 0.000 title claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 127
- 238000012545 processing Methods 0.000 claims abstract description 55
- 238000004590 computer program Methods 0.000 claims description 11
- 230000006399 behavior Effects 0.000 claims description 2
- 230000008859 change Effects 0.000 claims description 2
- 230000032258 transport Effects 0.000 claims 1
- 238000013461 design Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 239000011800 void material Substances 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- 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
-
- 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/5021—Priority
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
本申请实施例提供一种线程调度方法、装置、电子设备及存储介质,其中,该方法包括:获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,根据该配对关系,将各线程分别绑定在目标处理器集合中的对应处理器上,以使各线程由对应的处理器调度。该技术方案避免了多线程执行时争抢同一处理器时间片的现象,解决了同一处理器的服务线程过多、实时线程的服务时间过长造成的多线程任务排队阻塞的问题,减小了其他线程的执行时延,提高了线程执行的实时性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种线程调度方法、装置、电子设备及存储介质。
背景技术
随着互联网和移动互联网的快速发展,大并发、低延时成为大数据应用的性能指标,相应的,为提高并发量,多线程技术已广泛运用于各种应用中,多核处理器以其高性能、低功耗优势已逐步成为市场服务器的主流。
目前,在Java虚拟机(java virtual machine,JVM)多线程环境中,线程大都采用抢占式调度使用中央处理器(central processing unit,CPU)的资源,即操作***将多个线程分配给多个CPU,由每个CPU根据对应多个线程的优先级分别分配相应的服务时间,这样每个线程可能对应多个CPU,每个CPU也可能对应多个线程,所以,当某个线程的服务时间结束,对应的CPU执行时间片轮转时,该CPU会把正在运行的该线程暂时中断,并保存其当前状态,同时加载下一个线程,该线程则需要等待该CPU或其他CPU被重新调度。
然而,若JVM进程中某些实时线程的优先级高,其分配到的服务时间较长,因而占用对应CPU的时间较长,这样则可能出现该CPU对应多线程排队阻塞的问题,使得其他线程的执行时延增大,影响了线程执行的实时性。
发明内容
本申请提供一种线程调度方法、装置、电子设备及存储介质,用于解决操作***中某一处理器服务的实时线程过多、且某些实时线程占用处理器的时间较长,造成该处理器对应的多线程排队阻塞的问题。
第一方面,本申请实施例提供一种线程调度方法,包括:
获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,所述各本地线程与目标处理器集合相对应,所述目标处理器集合包括操作***中的至少一个处理器,所述目标虚拟机进程中的线程数量小于或等于所述操作***中本地线程的数量;
根据所述各线程与所述各本地线程之间的配对关系,将所述各线程分别绑定在所述目标处理器集合中的对应处理器上,以使所述各线程由对应的处理器调度。
在本实施例中,通过将目标虚拟机进程中的线程绑定到目标处理器集合中的对应处理器上,避免了多线程执行时争抢同一处理器时间片的现象,解决了同一处理器的服务线程过多、实时线程的服务时间过长造成的多线程任务排队阻塞的问题,减小了其他线程的执行时延,提高了线程执行的实时性,使得任务执行的实时性得到有效保障,能够高效发挥服务器多核处理器的优势。
可选的,在一个可能的设计中,在所述获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,所述方法还包括:
将所述目标虚拟机进程与所述目标处理器集合进行绑定。
通过将目标虚拟机进程与目标处理器集合绑定,可以目标虚拟机进程可以和操作***中的其他虚拟机进程隔离开,目标处理器集合可以和操作***中的其他处理器隔离开,这样目标处理器集合中的处理器调度目标虚拟机进程中的线程时不会对其他虚拟机进程和其他处理器产生影响。
可选的,在一个可能的设计中,在所述将所述目标虚拟机进程与所述目标处理器集合进行绑定之后,所述方法还包括:
获取所述目标虚拟机进程中各线程的线程信息;
根据所述各线程的线程信息,确定并存储所述各线程与所述各本地线程之间的配对关系。
通过将目标虚拟机进程与目标处理器集合进行绑定,并获取目标虚拟机进程中各线程的线程信息及根据各线程的线程信息,确定并存储各线程与各本地线程之间的配对关系,其为后续将各线程分别绑定在目标处理器集合中的对应处理器上,使各线程由对应的处理器调度提供了实现可能,为解决现有抢占式线程调度方法中可能出现的多线程排队阻塞问题奠定了基础。
可选的,在一个可能的设计中,所述各线程与所述目标处理器集合中的至少一个处理器绑定。
这样目标虚拟机进程中的线程只能由该目标处理器集合中的某个处理器或某些处理器调度,或者说某一处理器的资源只为某一线程服务或者只为某几个线程服务,减少了线程的上下文切换次数,降低了多线程并发导致的处理器资源抢占概率,相应的,减少了线程任务执行时的时延抖动。
可选的,在一个可能的设计中,所述各线程与所述目标处理器集合中的一个处理器绑定。
这样能够保证实时任务线程被优先分配服务时间,且在执行过程中不被其他线程任务干扰,避免了虚拟机中线程的上下文切换问题,减少上下文切换引起的处理器资源消耗,保障线程的执行时间平稳,解决多线程任务并发导致的处理器资源抢占,导致时延抖动的问题。
可选的,在一个可能的设计中,所述方法还包括:
根据所述各线程的线程信息,更改所述各线程中各实时线程的调度策略,以使所述各实时线程的调度策略为实时调度策略。这样能够确保目标虚拟机进程中的实时线程被优先调度,且不会被其他线程抢占处理器资源,提高了实时线程的执行平稳性。
可选的,在一个可能的设计中,所述线程信息包括下述至少一项:线程名、线程号、线程的优先级、线程的运行状态、线程的调度策略、所属的处理器集合。
第二方面,本申请实施例提供一种线程调度装置,包括:获取模块和处理模块;
所述获取模块,用于获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,所述各本地线程与目标处理器集合相对应,所述目标处理器集合包括操作***中的至少一个处理器,所述目标虚拟机进程中的线程数量小于或等于所述操作***中本地线程的数量;
所述处理模块,用于根据所述获取模块获取到的所述各线程与所述各本地线程之间的配对关系,将所述各线程分别绑定在所述目标处理器集合中的对应处理器上,以使所述各线程由对应的处理器调度。
可选的,在一个可能的设计中,所述处理模块,还用于在所述获取模块获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,将所述目标虚拟机进程与所述目标处理器集合进行绑定。
可选的,在一个可能的设计中,所述获取模块,还用于在所述处理模块将所述目标虚拟机进程与所述目标处理器集合进行绑定之后,获取所述目标虚拟机进程中各线程的线程信息;
所述处理模块,还用于根据所述获取模块获取到的所述各线程的线程信息,确定并存储所述各线程与所述各本地线程之间的配对关系。
可选的,在一个可能的设计中,所述各线程与所述目标处理器集合中的至少一个处理器绑定。
可选的,在一个可能的设计中,所述各线程与所述目标处理器集合中的一个处理器绑定。
可选的,在一个可能的设计中,所述处理模块,还用于根据所述获取模块获取到的所述各线程的线程信息,更改所述各线程中各实时线程的调度策略,以使所述各实时线程的调度策略为实时调度策略。
可选的,在一个可能的设计中,所述线程信息包括下述至少一项:线程名、线程号、线程的优先级、线程的运行状态、线程的调度策略、所属的处理器集合。
上述第二方面和第二方面的各可能的设计所提供的线程调度装置,其有益效果可以参见上述第一方面和第一方面的各可能的设计所带来的有益效果,在此不加赘述。
第三方面,本申请实施例提供一种线程调度装置,包括用于执行以上第一方面的方法的至少一个处理元件(或芯片)。
第四方面,本申请实施例提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述第一方面和第一方面的各种可能的设计中的方法。
第五方面,本申请实施例提供一种芯片,所述芯片包括:用于执行上述第一方面和第一方面的各可能的设计所提供的线程调度装置的模块或单元。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面和第一方面的各种可能的设计中的方法。
第七方面,本申请实施例提供一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面和第一方面的各种可能的设计中的方法。
本申请实施例提供的线程调度方法、装置、电子设备及存储介质,通过获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,并根据该配对关系,将各线程分别绑定在目标处理器集合中的对应处理器上,以使各线程由对应的处理器调度,避免了多线程执行时争抢同一处理器时间片的现象,解决了同一处理器的服务线程过多、实时线程的服务时间过长造成的多线程任务排队阻塞的问题,减小了其他线程的执行时延,提高了线程执行的实时性,使得任务执行的实时性得到有效保障,能够高效发挥服务器多核处理器的优势。
附图说明
图1为现有抢占式线程调度中某一JVM进程中各线程的执行状态示意图;
图2为本申请实施例提供的线程调度方法实施例一的流程示意图;
图3为本申请实施例中目标虚拟机进程中各线程的执行状态示意图;
图4为本申请实施例提供的线程调度方法实施例二的流程示意图;
图5为本申请实施例提供的线程调度装置实施例一的结构示意图;
图6为本申请实施例提供的线程调度装置实施例二的结构示意图。
具体实施方式
以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解:
JVM:
Java虚拟机(java virtual machine,JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令***。Java虚拟机屏蔽了与具体操作***平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),便可以在多种操作***平台上无需修改地正常运行。
CPU:
中央处理器(central processing unit,CPU)是一块超大规模的集成电路,是一台计算机的运算核心(core)和控制核心(control unit),其功能主要是解释计算机指令以及处理计算机软件中的数据。
JNA:
Java直接访问本地动态库(java native access,JNA)是建立在Java本地接口(java native interface,JNI)之上的Java开源框架,用来调用C、C++代码,尤其是底层库文件(windows中叫dll文件,linux下是so[shared object]文件),也即,JNA提供一组Java工具类用于在运行期动态访问***本地库(如window的dll)而不需要编写任何Native/JNI代码,开发人员只要在一个java接口中描述目标本地库的函数与结构,JNA将自动实现java接口到本地库函数的映射。
下面首先针对本申请实施例适用场景进行简要说明。
在软件应用开发中,应用的性能是需要着重关注的点。尤其在当今社会,随着互联网和移动互联网快速的发展,使得业务量和数据量呈现***式增长,从而催生了“大数据”产业,且大并发、低延时成为大多数大数据应用的性能指标。
为了与大数据应用的大并发和低延时特点相适应,提高大数据应用的并发量,多线程技术已广泛运用于各种应用中,多核处理器以其高性能、低功耗优势已逐步成为市场服务器的主流。目前,很多开源大数据产品,比如:hadoop、hbase、yarn、spark、flink、VoltDB等等都运行于JVM环境中,所以JVM性能调优也是开发过程中经常关注的问题。
现有操作***大多是多任务操作***,即操作***可以同时运行多个任务。一个任务一般对应一个进程,也可能包含多个进程。一般来说,当运行一个应用程序时,就启动了一个进程(或者多个进程)。进程启动时,操作***会为进程分配资源,其中最主要的资源是内存空间,这是由于程序在内存中运行。可选的,线程是进程中乱序执行的代码流程,当多个线程同时运行时,即是线程并发执行。
在JVM多线程环境中,由于线程调度是由操作***自动分配CPU,因而,可能会出现多线程共同抢占同一个CPU的时间,又由于各线程的运行状态是不可控的,因而,线程并发量的增大会对线程的时延指标造成较大影响,无法高效发挥服务器具有多核CPU的优势。现阶段,由于时延方面的现有方案没有解决时延抖动的问题,也没有可预测时延指标的方法,尤其在时延敏感实时性要求苛刻的场景,如金融风控中,时延的微抖动都可能使得防欺诈检测超时,从而使得欺诈交易通过,造成经济损失,进而如何精确控制线程调度是亟待解决的问题。
线程调度是指操作***为线程分配处理器使用权的过程,现有的线程调度主要分两种,分别是协同式线程调度和抢占式线程调度。对于协同式线程调度,线程的执行时间由线程本身控制,线程把自己的任务执行完之后,要主动通知操作***将处理器切换到另外一个线程上,该方法实现简单,切换操作对线程自己是可知的,没有线程同步问题,但是线程的执行时间不可控制,如果一个线程有问题,可能一直阻塞在那里,影响其他线程的执行,因而,在多线程环境中,线程大都采用抢占式调度使用处理器的资源。
对于抢占式线程调度,每个线程将由操作***来分配CPU,由对应的CPU分配执行时间(可选的,CPU为每个线程分配的服务时间也就是线程的执行时间),线程的切换由CPU确定(其中,对于Java,线程可以利用Thread.yield()自动让出执行时间,但无法自动获取执行时间),即,线程的执行时间系是操作***中的处理器控制的,因而,不会存在有某个线程永久执行导致整个进程阻塞的问题。
目前,Java中线程的调度机制都由JVM实现,假如有若干条线程,你想让某些线程拥有更长的执行时间,或某些线程分配少点执行时间,这时就涉及“线程优先级”。可选的,若某个线程被创建时没有明确声明优先级,则使用默认优先级,进而JVM在后续运行过程中,操作***的CPU将根据每个线程的优先级分配来执行时间。可选的,在实际应用中,Java的线程优先级共包括10个级别,即优先级值(1)至优先级值(10),因而,在Java中,可以定义三个常量:Thread.MIN_PRIORITY、Thread.NORM_PRIORITY、Thread.MAX_PRIORITY,分别用来表示最小优先级值(1)、默认优先级值(5)、最大优先级值(10)。
线程的调度策略决定上层多线程运行机制,JVM的线程调度器实现了抢占式调度,每条线程的执行时间由该线程调度器分配管理,它将按照线程优先级对线程的执行时间进行分配,优先级越高,可能得到CPU的服务时间越长。这样在多线程争抢CPU时间片时,优先级高的线程先执行任务,且可能执行的时间很长,这样则可能会出现线程任务排队阻塞的问题,使其他的线程执行时延增大,影响任务执行的实时性。
当前Linux***下任务调度策略主要有三种:
1、SCHED_OTHER:分时调度策略,操作***创建线程时默认是SCHED_OTHER。
2、SCHED_FIFO:实时任务调度策略,先到先服务。一旦占用CPU资源则一直运行,直到有更高优先级的线程任务到达或该线程自己放弃。
3、SCHED_RR:实时任务调度策略,时间片轮转。当某一线程分配的时间片用完,操作***将重新分配CPU,且该CPU重新分配时间片,并置于该CPU执行的线程队列尾部,这样保证了所有具有相同优先级的线程任务可以被公平调度。可选的,各线程任务通过移位类指令RR,即不带进位的循环右移顺序被CPU调度。
值得说明的是,以上三种调度策略在现有的JVM中是无法进行修改的。
此外,在上述抢占式线程调度方式中,线程在CPU分配的执行时间内执行对应的任务,当某个线程分配的执行时间结束,但该线程的任务未执行完,即CPU的时间片轮转时,CPU则需要把正在运行的线程的当前状态保存下来,同时加载下一个线程,这时就出现上下文切换现象,该过程会对实时任务造成一定的性能损耗,导致线程任务出现时延抖动,影响任务执行的实时性。
例如,图1为现有抢占式线程调度中某一JVM进程中各线程的执行状态示意图。可选的,该图以该JVM进程包括四个线程,服务器具有四核处理器进行说明。如图1所示,该JVM进程中的多个线程运行在多个CPU上执行,当CPU时间片轮转的时候,运行中的线程会被暂时打断,需要等待CPU重新调度。
针对上述问题,本申请实施例提供了一种线程调度方法、装置、电子设备及存储介质,通过将目标虚拟机进程中的线程绑定到目标处理器集合中的对应处理器上,避免了由于某一处理器服务的实时线程过多、且某些实时线程占用CPU的时间较长,造成该CPU对应多线程排队阻塞的问题,降低了其他线程的执行时延,提高了线程执行的实时性。下面,通过具体实施例对本申请的技术方案进行详细说明。
需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本申请实施例提供的线程调度方法实施例一的流程示意图。如图2所示,本申请实施例提供的线程调度方法,可以包括如下步骤:
步骤21:获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系。
其中,各本地线程与目标处理器集合相对应,该目标处理器集合包括操作***中的至少一个处理器,该目标虚拟机进程中的线程数量小于或等于该操作***中本地线程的数量。
在本申请实施例中,目标虚拟机进程是指在目标虚拟机上运行的应用程序,这里,目标虚拟机可以是Java虚拟机(JVM)、Linux虚拟机、微软虚拟机等多种虚拟机中的一种,本申请实施例并不对目标虚拟机的具体种类进行限定。可选的,本申请实施例中目标虚拟机可以以JVM进行举例说明。
可选的,由于虚拟机的实现需要以宿主操作***为基础,因此,目标虚拟机进程的各线程与操作***中各本地线程具有一定的配对关系。在本实施例中,若该目标虚拟机进程的各线程由操作***中的目标处理器集合中的处理器调度,那么,目标虚拟机进程中的各线程被调度之前,需要首先获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,这里,操作***的各本地线程与目标处理器集合相对应,因而,获取的是目标虚拟机各线程与操作***中目标处理器集合对应的各本地线程之间的配对关系。
值得说明的是,在本申请实施例中,若目标虚拟机进程中的各线程能够被分别调度,独立执行,该目标虚拟机进程中的线程数量可以小于或等于该操作***中本地线程的数量。
步骤22:根据各线程与各本地线程之间的配对关系,将各线程分别绑定在目标处理器集合中的对应处理器上,以使各线程由对应的处理器调度。
在本实施例中,当确定目标虚拟机进程的各线程由目标处理器集合中的处理器调度,且获取到各线程与各本地线程之间的配对关系后,便可以将各线程分别绑定在目标处理器集合中的对应处理器上,以使各线程由对应的处理器调度。通过将各线程与对应处理器的绑定,使得目标虚拟机进程中的各线程与其他进程中的线程隔离,这样不管目标虚拟机进程中各线程的执行情况如何(执行时间长短、调度处理器的性能)均不会对其他进程中的线程产生影响。
可选的,本申请实施例中的目标虚拟机进程中的每个线程可以由目标处理器集合中的一个或多个处理器调度,本申请实施例对此不做限定。
可选的,在本申请实施例中,目标处理器集合可以是操作***中目前处于空闲状态的一组处理器,或者是根据处理器资源实际使用情况确定的一组处理器,本申请实施例对此不做具体限定。
可选的,若本申请中的虚拟机为JVM,那么将各线程分别绑定在目标处理器集合中的对应处理器上可以通过如下方式实现,具体的:在java代码中通过Java直接访问本地动态库(JNA)调用操作***(OS)lib库的pthread_setaffinity_np函数实现目标JVM进程中各JVM线程与目标处理器集合中的处理器分组绑定。
其中,pthread_setaffinity_np函数是pthread库自带的线程亲和性设置函数,其用来设置线程与处理器亲和性,即某一线程由哪个处理器分配执行时间,运行在哪个处理器上。
在本申请实施例的一种可能实现方式中,目标虚拟机进程的各线程与上述目标处理器集合中的至少一个处理器绑定。
可选的,对于具有某一特性的线程,例如,进程中的优先级为默认优先级,且需要长时间运行的虚拟机线程,可以将其与目标处理器集合中的某个或某些处理器绑定,这样目标虚拟机进程中的线程只能由该目标处理器集合中的某个处理器或某些处理器调度,或者说某一处理器的资源只为某一线程服务或者只为某几个线程服务,减少了线程的上下文切换次数,降低了多线程并发导致的处理器资源抢占概率,相应的,减少了线程任务执行时的时延抖动。
在本申请实施例的另一种可能实现方式中,目标虚拟机进程的各线程与上述目标处理器集合中的一个处理器绑定。
在该种可能实现方式中,对于某些优先级较高的线程,可以将该线程与目标处理器集合中的一个处理器绑定,且分配足够长的执行时间,以使该线程对应的处理器优先为该线程服务,并在该线程执行完毕后再为其他线程服务,这样能够保证实时任务线程被优先分配服务时间,且在执行过程中不被其他线程任务干扰,避免了虚拟机中线程的上下文切换问题,减少上下文切换引起的处理器资源消耗,保障线程的执行时间平稳,解决多线程任务并发导致的处理器资源抢占,导致时延抖动的问题。
例如,图3为本申请实施例中目标虚拟机进程中各线程的执行状态示意图。如图3所示,当将目标虚拟机进程的各线程与目标处理器集合中的一个处理器绑定后,目标虚拟机进程中各线程在各自分配的处理器上独立执行,不会出现由于线程间切换产生的上下文切换问题而互相影响。
本申请实施例提供的线程调度方法,通过获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,并根据该配对关系,将各线程分别绑定在目标处理器集合中的对应处理器上,以使各线程由对应的处理器调度,避免了多线程执行时争抢同一处理器时间片的现象,解决了同一处理器的服务线程过多、实时线程的服务时间过长造成的多线程任务排队阻塞的问题,减小了其他线程的执行时延,提高了线程执行的实时性,使得任务执行的实时性得到有效保障,能够高效发挥服务器多核处理器的优势。
可选的,在上述实施例的基础上,图4为本申请实施例提供的线程调度方法实施例二的流程示意图。如图4所示,在上述步骤21(获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系)之前,本申请实施例提供的线程调度方法,还可以包括如下步骤41:
步骤41:将目标虚拟机进程与目标处理器集合进行绑定。
在本申请实施例中,由于目标虚拟机进程的各线程需要与操作***中目标处理器集合对应的本地线程相对应,因而在获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,首先需要从操作***的所有处理器中确定出一个处理器集合,并且将该目标虚拟机进程与目标处理器集合进行绑定。可选的,该目标处理器集合可以由处于空闲状态的至少一个处理器组成,这样目标虚拟机进程与目标处理器集合绑定后,两者与操作***中的其他虚拟机进程和其他处理器隔离开之后,不会对其他虚拟机进程和其他处理器产生影响。
可选的,在本实施例中,目标虚拟机进程与目标处理器集合绑定可以通过如下方式实现,具体的,对于JVM,可以在客户端java代码中通过JNA调用操作***lib库的sched_setaffinity函数来实现目标虚拟机进程与操作***中目标处理器集合的分组绑定。目标虚拟机进程与目标处理器集合绑定后,目标虚拟机进程的进程号便映射到了处理器集合里面,为将目标虚拟机进程的各线程分别绑定到目标处理器集合中的对应处理器上奠定了基础。
可选的,在图4所示的实施例中,如图4所示,在步骤41(将目标虚拟机进程与目标处理器集合进行绑定)之后,该线程调度方法还可以包括如下步骤42和步骤43:
步骤42:获取目标虚拟机进程中各线程的线程信息。
可选的,该线程信息可以包括下述至少一项:线程名、线程号、线程的优先级、线程的运行状态、线程的调度策略、所属的处理器集合。
其中,线程名是线程创建时为线程设置的名字,其方便线程调度器区别不同的线程,可选的,线程调度器可以通过线程标识关联一个线程名称为每个线程设置名字实现,通过为线程设置名字方便管理和调试线程。
线程号可以是线程标识,通过线程号可以找到线程。
线程优先级用于表明每个线程的重要程度,优先级越高,线程越重要,对应的处理器为其分配的执行时间越长,即操作***的CPU可以根据每个线程的优先级分配来执行时间。
线程的运行状态可以包括五种:新建(NEW)、可运行(RUNNABLE)、运行(RUNNING)、阻塞(BLOCKED)和死亡(DEAD)。其中,新建(NEW)表示新创建了一个线程对象;可运行(RUNNABLE)表示线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法;运行(RUNNING)指可运行状态(runnable)的线程获得了处理器的时间片,执行程序代码;阻塞(BLOCKED):阻塞状态是指线程因为某种原因放弃了处理器的使用权,暂时停止运行;死亡(DEAD):线程run()、main()方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。
线程的调度策略包括三种:SCHED_OTHER(分时调度策略)、SCHED_FIFO(实时任务调度策略,先到先服务)和SCHED_RR(实时任务调度策略,时间片轮转)。
所属的处理器集合即是可以调度线程的处理器集合。例如,目标虚拟机进程未与目标处理器集合绑定时,目标虚拟机进程中各线程所属的处理器集合是操作***的所有处理器,当目标虚拟机进程与目标处理器集合绑定后,目标虚拟机进程中各线程所属的处理器集合是操作***中目标处理器集合中的处理器。
在本申请实施例中,当目标虚拟机进程与目标处理器集合绑定后,目标虚拟机进程中各线程的线程信息某些可能发生了改变,比如,所属的处理器集合等。因而,为了后续将目标虚拟机进程中各线程绑定到目标处理器集合中的对应处理器上,首先需要获取目标虚拟机进程中各线程的线程信息。
可选的,获取各线程的线程信息的方式可以包括如下几种方式中的至少一种:
1、基于RMI JMX的ThreadMXBean获取目标虚拟机进程中各线程的线程信息。
JMX(java management extensions)是一个为应用程序植入管理功能的框架,RMI(remote method invocation)是不同JVM之间的对象通信协议。ThreadMXBean接口提供了线程时间管理、争用监视等功能。因而,基于RMI JMX的ThreadMXBean可以获取各线程的线程信息。
2、基于JVMTI VMAgent实现agentlib代码注入,通过指令修改获取目标虚拟机进程中各线程的线程信息。
JVMTI(JVM tool interface)是JVM暴露出来的一些供用户扩展的接口集合,用于开发JVM监控、问题定位与性能调优工具的通用编程接口(API)。VMAgent是一个轻量级进程可以配置、管理和加速虚拟机,因而,在该种实现方式中,基于JVMTI VMAgent可以将agentlib代码注入到JVM中,进而通过指令修改可以获取到目标虚拟机进程中各线程的线程信息。
3、基于外部命令调用jstack分析输出实现获取目标虚拟机进程中各线程的线程信息。
由于jstack是Java虚拟机自带的一种堆栈跟踪工具,其用于打印出给定的Java进程ID或core file或远程调试服务的Java堆栈信息。所以,基于外部命令通过调用jstack分析输出实现获取目标虚拟机进程中各线程的线程信息。
4、基于Java VirtualMachine Attach API和HotSpotVirtualMachine.remoteDataDump()获取目标虚拟机进程中各线程的线程信息。
Java VirtualMachine代表着一个JVM进程,Attach API是一套非标准的可以连接到JVM上的API,VirtualMachine的子类HotSpotVirtualMachine表示hotspot的虚拟机,remoteDataDump()表示远程数据泵,因而,基于Java VirtualMachine Attach API和HotSpotVirtualMachine.remoteDataDump()可以获取到目标虚拟机进程中各线程的线程信息。
值得说明的是,上述四种方式的任意一种均能获取到各线程的线程信息,因而,在具体实现时,可以根据实际情况选择最合适的方式来获取各线程的线程信息,本申请实施例并不对此进行限定,此外,本申请实施例也不限定上述四种获取各线程的线程信息的方式,其还可能包括其他方式,此处不再赘述。
步骤43:根据各线程的线程信息,确定并存储各线程与各本地线程之间的配对关系。
在本申请实施例中,在目标虚拟机进程与目标处理器集合绑定,且获取到各线程的线程信息后,目标虚拟机进程的各线程若想被正常调度,那么需要确定出各线程与目标处理器集合中处理器对应的各本地线程具有的配对关系。相应的,根据上述获取到的各线程的线程信息,可以确定出各线程与各本地线程之间的配对关系,并将其存储起来,这样方便后续直接获取。可选的,根据各线程的线程信息确定的各线程与各本地线程之间的配对关系可以存储在操作***中,这样后续需要时可以直接在操作***中查询,进而获取该配对关系。
可选的,由于虚拟机中各进程的线程优先级与各种不同操作***的本地线程优先级必然存在某种映射关系,这样才足以封装所有操作***的优先级提供统一的优先级语义。例如:虚拟机中的1-10线程优先级值在linux操作***中可能要与0-99优先级值进行映射,而在windows操作***则可能与7个优先级进行映射,因而,需要根据实际情况,确定出各线程与各本地线程之间的配对关系。
本申请实施例提供的线程调度方法,通过在获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,将目标虚拟机进程与目标处理器集合进行绑定,获取目标虚拟机进程中各线程的线程信息,及根据各线程的线程信息,确定并存储各线程与各本地线程之间的配对关系,其为后续将各线程分别绑定在目标处理器集合中的对应处理器上,使各线程由对应的处理器调度提供了实现可能,为解决现有抢占式线程调度方法中可能出现的多线程排队阻塞问题奠定了基础。
可选的,在本申请的一实施例中,该线程调度方法还可以包括如下步骤:
根据各线程的线程信息,更改各线程中各实时线程的调度策略,以使各实时线程的调度策略为实时调度策略。
可选的,由于操作***在创建线程时,默认线程的调度方式是SCHED_OTHER(分时调度策略),但目标虚拟机进程中的各线程有些可能是实时线程,因而,为了确保实时线程能够被优先调度,且不会被其他线程抢占处理器资源,可以根据各线程的线程信息,更改各线程中各实时线程的调度策略,将各实时线程的调度策略更改为实时调度策略,以提高实时线程的执行平稳性。
可选的,对于JVM,那么可以通过如下方式更改各线程中各实时线程的调度策略,具体的,在java代码中通过JNA调用操作***lib库的sched_setscheduler函数实现JVM线程实时调度策略更改。
其中,该sched_setscheduler()函数用以修改线程的调度策略以及调度参数,即用于设置线程的调度策略。
本申请实施例提供的线程调度方法,首先可以应用于纯java库,在上层虚拟机应用中直接被调用,用于解决虚拟机应用平台的不足,例如,线程堵塞问题,提升了平台性能;其次,该线程调度方法也可以广泛应用于各种实时计算加速场景,解决了快数据内存计算由于处理器调度引起的任务得不到及时执行,导致任务执行时延波动大,任务执行完成时间不可预测的问题,减小了任务执行时延波动,使得任务执行完成时间可预测;再次,该线程调度方法可以解决虚拟机本身功能不足的限制,实现对目标虚拟机进程中线程与目标处理器集合的自由组合排布,修改虚拟机中线程的实时调度策略,使得实时线程始终运行在固定的处理器上,不被其他线程所影响,减少上下文切换引起的处理器资源消耗,保障线程任务执行时间平稳。
图5为本申请实施例提供的线程调度装置实施例一的结构示意图。该线程调度装置可以通过软件、硬件或者两者的结合实现,也可以为集成在计算机中的芯片。如图5所示,该线程调度装置可以包括:获取模块51和处理模块52。
其中,该获取模块51,用于获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系。
在本实施例中,所述各本地线程与目标处理器集合相对应,所述目标处理器集合包括操作***中的至少一个处理器,所述目标虚拟机进程中的线程数量小于或等于所述操作***中本地线程的数量。
该处理模块52,用于根据上述获取模块51获取到的所述各线程与所述各本地线程之间的配对关系,将所述各线程分别绑定在所述目标处理器集合中的对应处理器上,以使所述各线程由对应的处理器调度。
本申请实施例提供的线程调度装置,其实现原理和技术效果与前述图2所示的方法实施例类似,在此不再赘述。
可选的,在本申请的一实施例中,上述处理模块52,还用于在上述获取模块51获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,将所述目标虚拟机进程与所述目标处理器集合进行绑定。
可选的,在本申请的上述实施例中,上述获取模块51,还用于在上述处理模块52将所述目标虚拟机进程与所述目标处理器集合进行绑定之后,获取所述目标虚拟机进程中各线程的线程信息。
相应的,上述处理模块52,还用于根据上述获取模块51获取到的所述各线程的线程信息,确定并存储所述各线程与所述各本地线程之间的配对关系。
可选的,在本申请的上述任一实施例中,所述各线程与所述目标处理器集合中的至少一个处理器绑定。
可选的,所述各线程与所述目标处理器集合中的一个处理器绑定。
可选的,在本申请的另一实施例中,上述处理模块52,还用于根据上述获取模块51获取到的所述各线程的线程信息,更改所述各线程中各实时线程的调度策略,以使所述各实时线程的调度策略为实时调度策略。
可选的,在本申请的上述任一实施例中,所述线程信息包括下述至少一项:线程名、线程号、线程的优先级、线程的运行状态、线程的调度策略、所属的处理器集合。
可选的,本申请实施例提供的线程调度装置可以是一种快数据实时处理的通用设备,执行的代码和数据可定制,具有极快的执行速度,并能根据性能需要水平扩展,其在金融风控、物联网实时处理、实时分析、实时决策等多种对时延敏感和性能要求严格的场景中具有重要的作用。
图6为本申请实施例提供的线程调度装置实施例二的结构示意图。如图6所示,本申请实施例提供的线程调度装置,包括:存储器61和处理器62。
其中,存储器61,用于存储程序指令,该存储器可以是flash(闪存)。处理器62,用于调用并执行存储器61中的程序指令,以实现图2和图4所示的线程调度方法中的各个步骤。具体可以参见前面方法实施例中的相关描述,此处不再赘述。
可选地,存储器61既可以是独立的,也可以是与处理器62集成在一起的。
本申请实施例还提供一种电子设备,该电子设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述图2和图4所示的线程调度方法。
本申请实施例还提供一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述图2和图4所示的线程调度方法。
本申请实施例还提供一种程序产品,该程序产品包括计算机程序,该计算机程序存储在存储介质中。线程调度装置的至少一个处理器可以从存储介质读取该计算机程序,至少一个处理器执行该计算机程序使得线程调度装置执行上述图2和图4所示的线程调度方法的各个步骤。
可选的,本申请实施例提供还一种运行指令的芯片,所述芯片用于执行上述图2和图4所示实施例的方法。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,确定模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上确定模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,ASIC),或,一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessing unit,CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上***(system-on-a-chip,SOC)的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。
可以理解的是,在本申请的实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
Claims (16)
1.一种线程调度方法,其特征在于,包括:
获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,所述各本地线程与目标处理器集合相对应,所述目标处理器集合包括操作***中的至少一个处理器,所述目标虚拟机进程中的线程数量小于或等于所述操作***中本地线程的数量;
根据所述各线程与所述各本地线程之间的配对关系,将所述各线程分别绑定在所述目标处理器集合中的对应处理器上,以使所述各线程由对应的处理器调度。
2.根据权利要求1所述的方法,其特征在于,在所述获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,所述方法还包括:
将所述目标虚拟机进程与所述目标处理器集合进行绑定。
3.根据权利要求2所述的方法,其特征在于,在所述将所述目标虚拟机进程与所述目标处理器集合进行绑定之后,所述方法还包括:
获取所述目标虚拟机进程中各线程的线程信息;
根据所述各线程的线程信息,确定并存储所述各线程与所述各本地线程之间的配对关系。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述各线程与所述目标处理器集合中的至少一个处理器绑定。
5.根据权利要求4所述的方法,其特征在于,所述各线程与所述目标处理器集合中的一个处理器绑定。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
根据所述各线程的线程信息,更改所述各线程中各实时线程的调度策略,以使所述各实时线程的调度策略为实时调度策略。
7.根据权利要求3所述的方法,其特征在于,所述线程信息包括下述至少一项:线程名、线程号、线程的优先级、线程的运行状态、线程的调度策略、所属的处理器集合。
8.一种线程调度装置,其特征在于,包括:获取模块和处理模块;
所述获取模块,用于获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系,所述各本地线程与目标处理器集合相对应,所述目标处理器集合包括操作***中的至少一个处理器,所述目标虚拟机进程中的线程数量小于或等于所述操作***中本地线程的数量;
所述处理模块,用于根据所述获取模块获取到的所述各线程与所述各本地线程之间的配对关系,将所述各线程分别绑定在所述目标处理器集合中的对应处理器上,以使所述各线程由对应的处理器调度。
9.根据权利要求8所述的装置,其特征在于,
所述处理模块,还用于在所述获取模块获取目标虚拟机进程中各线程与操作***中各本地线程之间的配对关系之前,将所述目标虚拟机进程与所述目标处理器集合进行绑定。
10.根据权利要求9所述的装置,其特征在于,
所述获取模块,还用于在所述处理模块将所述目标虚拟机进程与所述目标处理器集合进行绑定之后,获取所述目标虚拟机进程中各线程的线程信息;
所述处理模块,还用于根据所述获取模块获取到的所述各线程的线程信息,确定并存储所述各线程与所述各本地线程之间的配对关系。
11.根据权利要求8-10任一项所述的装置,其特征在于,所述各线程与所述目标处理器集合中的至少一个处理器绑定。
12.根据权利要求11所述的装置,其特征在于,所述各线程与所述目标处理器集合中的一个处理器绑定。
13.根据权利要求8-10任一项所述的装置,其特征在于,
所述处理模块,还用于根据所述获取模块获取到的所述各线程的线程信息,更改所述各线程中各实时线程的调度策略,以使所述各实时线程的调度策略为实时调度策略。
14.根据权利要求10所述的装置,其特征在于,所述线程信息包括下述至少一项:线程名、线程号、线程的优先级、线程的运行状态、线程的调度策略、所属的处理器集合。
15.一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上述权利要求1-7任一项所述的方法。
16.一种存储介质,其特征在于,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395327.1A CN108804211A (zh) | 2018-04-27 | 2018-04-27 | 线程调度方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810395327.1A CN108804211A (zh) | 2018-04-27 | 2018-04-27 | 线程调度方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108804211A true CN108804211A (zh) | 2018-11-13 |
Family
ID=64094102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810395327.1A Pending CN108804211A (zh) | 2018-04-27 | 2018-04-27 | 线程调度方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108804211A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347489A (zh) * | 2019-07-12 | 2019-10-18 | 之江实验室 | 一种基于Spark的多中心数据协同计算的流处理方法 |
CN111181871A (zh) * | 2019-08-02 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种报文传输的方法及相关装置 |
CN111242943A (zh) * | 2020-01-22 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、图像处理设备及存储介质 |
CN111324432A (zh) * | 2020-01-21 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 处理器调度方法、装置、服务器及存储介质 |
CN111650895A (zh) * | 2020-04-08 | 2020-09-11 | 上海航天精密机械研究所 | 一种自动线生产任务动态调度方法 |
CN111736959A (zh) * | 2020-07-16 | 2020-10-02 | 南京南软科技有限公司 | 异构集群下考虑数据亲和性的Spark任务调度方法 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111813521A (zh) * | 2020-07-01 | 2020-10-23 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN111858056A (zh) * | 2020-07-24 | 2020-10-30 | 南方电网数字电网研究院有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
WO2020238967A1 (zh) * | 2019-05-28 | 2020-12-03 | 深圳市道通智能航空技术有限公司 | 多线程退出方法及移动终端 |
CN112579249A (zh) * | 2019-09-30 | 2021-03-30 | 奇安信安全技术(珠海)有限公司 | 多cpu虚拟机的运行方法及装置、存储介质、计算机设备 |
CN112631802A (zh) * | 2019-04-29 | 2021-04-09 | 杭州涂鸦信息技术有限公司 | 一种线程间通信方法及相关装置 |
CN112817762A (zh) * | 2021-01-29 | 2021-05-18 | 中汽创智科技有限公司 | 一种基于自适应汽车开放***架构标准的调度***及其调度方法 |
CN113467884A (zh) * | 2021-05-25 | 2021-10-01 | 阿里巴巴新加坡控股有限公司 | 资源配置方法和装置、电子设备及计算机可读存储介质 |
CN114706671A (zh) * | 2022-05-17 | 2022-07-05 | 中诚华隆计算机技术有限公司 | 一种多处理器调度优化方法与*** |
CN115794450A (zh) * | 2023-02-13 | 2023-03-14 | 中国人民解放军国防科技大学 | 一种面向微内核***服务的并行性优化方法、***及介质 |
CN116627549A (zh) * | 2023-05-30 | 2023-08-22 | 云海链控股股份有限公司 | Sgx多线程下通用的函数调用方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976201A (zh) * | 2010-10-22 | 2011-02-16 | 北京航空航天大学 | 基于cpu亲和力的虚拟cpu动态绑定方法 |
CN103617071A (zh) * | 2013-12-02 | 2014-03-05 | 北京华胜天成科技股份有限公司 | 一种资源独占及排它的提升虚拟机计算能力的方法及装置 |
CN105700949A (zh) * | 2014-11-24 | 2016-06-22 | 中兴通讯股份有限公司 | 一种多核处理器下的数据处理方法及装置 |
CN106371894A (zh) * | 2016-08-31 | 2017-02-01 | 华为技术有限公司 | 一种配置方法、装置和数据处理服务器 |
CN106775927A (zh) * | 2016-11-25 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种基于kvm虚拟化技术的处理器隔离方法及装置 |
-
2018
- 2018-04-27 CN CN201810395327.1A patent/CN108804211A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101976201A (zh) * | 2010-10-22 | 2011-02-16 | 北京航空航天大学 | 基于cpu亲和力的虚拟cpu动态绑定方法 |
CN103617071A (zh) * | 2013-12-02 | 2014-03-05 | 北京华胜天成科技股份有限公司 | 一种资源独占及排它的提升虚拟机计算能力的方法及装置 |
CN105700949A (zh) * | 2014-11-24 | 2016-06-22 | 中兴通讯股份有限公司 | 一种多核处理器下的数据处理方法及装置 |
CN106371894A (zh) * | 2016-08-31 | 2017-02-01 | 华为技术有限公司 | 一种配置方法、装置和数据处理服务器 |
CN106775927A (zh) * | 2016-11-25 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种基于kvm虚拟化技术的处理器隔离方法及装置 |
Non-Patent Citations (1)
Title |
---|
黄煜 等: ""KVM虚拟化技术中处理器隔离的实现"", 《计算机***应用》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112631802B (zh) * | 2019-04-29 | 2024-04-12 | 杭州涂鸦信息技术有限公司 | 一种线程间通信方法及相关装置 |
CN112631802A (zh) * | 2019-04-29 | 2021-04-09 | 杭州涂鸦信息技术有限公司 | 一种线程间通信方法及相关装置 |
WO2020238967A1 (zh) * | 2019-05-28 | 2020-12-03 | 深圳市道通智能航空技术有限公司 | 多线程退出方法及移动终端 |
US11853153B2 (en) | 2019-05-28 | 2023-12-26 | Autel Robotics Co., Ltd. | Multi-thread exit method and mobile terminal |
CN110347489A (zh) * | 2019-07-12 | 2019-10-18 | 之江实验室 | 一种基于Spark的多中心数据协同计算的流处理方法 |
CN110347489B (zh) * | 2019-07-12 | 2021-08-03 | 之江实验室 | 一种基于Spark的多中心数据协同计算的流处理方法 |
CN111181871B (zh) * | 2019-08-02 | 2022-03-25 | 腾讯科技(深圳)有限公司 | 一种报文传输的方法及相关装置 |
CN111181871A (zh) * | 2019-08-02 | 2020-05-19 | 腾讯科技(深圳)有限公司 | 一种报文传输的方法及相关装置 |
CN112579249A (zh) * | 2019-09-30 | 2021-03-30 | 奇安信安全技术(珠海)有限公司 | 多cpu虚拟机的运行方法及装置、存储介质、计算机设备 |
CN111324432A (zh) * | 2020-01-21 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 处理器调度方法、装置、服务器及存储介质 |
CN111242943A (zh) * | 2020-01-22 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、图像处理设备及存储介质 |
CN111242943B (zh) * | 2020-01-22 | 2022-10-28 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、图像处理设备及存储介质 |
CN111650895A (zh) * | 2020-04-08 | 2020-09-11 | 上海航天精密机械研究所 | 一种自动线生产任务动态调度方法 |
CN111650895B (zh) * | 2020-04-08 | 2023-07-04 | 上海航天精密机械研究所 | 一种自动线生产任务动态调度方法 |
CN111797110A (zh) * | 2020-06-23 | 2020-10-20 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111797110B (zh) * | 2020-06-23 | 2024-01-26 | 北京金堤科技有限公司 | 一种生成调度模型的方法、装置、计算机设备及存储介质 |
CN111813521A (zh) * | 2020-07-01 | 2020-10-23 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN111736959A (zh) * | 2020-07-16 | 2020-10-02 | 南京南软科技有限公司 | 异构集群下考虑数据亲和性的Spark任务调度方法 |
CN111858056A (zh) * | 2020-07-24 | 2020-10-30 | 南方电网数字电网研究院有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN112817762A (zh) * | 2021-01-29 | 2021-05-18 | 中汽创智科技有限公司 | 一种基于自适应汽车开放***架构标准的调度***及其调度方法 |
CN113467884A (zh) * | 2021-05-25 | 2021-10-01 | 阿里巴巴新加坡控股有限公司 | 资源配置方法和装置、电子设备及计算机可读存储介质 |
WO2022247698A1 (zh) * | 2021-05-25 | 2022-12-01 | 阿里巴巴(中国)有限公司 | 资源配置方法和装置、电子设备及计算机可读存储介质 |
CN114706671A (zh) * | 2022-05-17 | 2022-07-05 | 中诚华隆计算机技术有限公司 | 一种多处理器调度优化方法与*** |
CN114706671B (zh) * | 2022-05-17 | 2022-08-12 | 中诚华隆计算机技术有限公司 | 一种多处理器调度优化方法与*** |
CN115794450A (zh) * | 2023-02-13 | 2023-03-14 | 中国人民解放军国防科技大学 | 一种面向微内核***服务的并行性优化方法、***及介质 |
CN116627549A (zh) * | 2023-05-30 | 2023-08-22 | 云海链控股股份有限公司 | Sgx多线程下通用的函数调用方法、装置、设备及介质 |
CN116627549B (zh) * | 2023-05-30 | 2024-03-26 | 云海链控股股份有限公司 | Sgx多线程下通用的函数调用方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108804211A (zh) | 线程调度方法、装置、电子设备及存储介质 | |
US9886305B2 (en) | Determining the status of plurality of threads by monitoring the execution of folded thread | |
US9465663B2 (en) | Allocating resources in a compute farm to increase resource utilization by using a priority-based allocation layer to allocate job slots to projects | |
KR101312886B1 (ko) | 프로세스 쓰레드의 적응형 파티셔닝을 이용하는 프로세스스케쥴러 | |
KR100898315B1 (ko) | 인핸스드 런타임 호스팅 | |
US8631409B2 (en) | Adaptive partitioning scheduler for multiprocessing system | |
EP1912119A1 (en) | Synchronization and concurrent execution of control flow and data flow at task level | |
CN111324427B (zh) | 一种基于dsp的任务调度方法及装置 | |
CN106371894A (zh) | 一种配置方法、装置和数据处理服务器 | |
JP2005534116A (ja) | 複数の消費者をもつコンピュータシステムで資源を動的に割当てて管理する方法 | |
WO2022257435A1 (zh) | 一种批量任务处理方法、装置、计算设备及存储介质 | |
US8006064B2 (en) | Lock-free vector utilizing a resource allocator for assigning memory exclusively to a thread | |
Yu et al. | Colab: a collaborative multi-factor scheduler for asymmetric multicore processors | |
Huh et al. | Cross‐layer resource control and scheduling for improving interactivity in Android | |
US9229716B2 (en) | Time-based task priority boost management using boost register values | |
Casini et al. | Addressing analysis and partitioning issues for the Waters 2019 challenge | |
Müller et al. | MULTI SLOTH: An efficient multi-core RTOS using hardware-based scheduling | |
US11301304B2 (en) | Method and apparatus for managing kernel services in multi-core system | |
Parikh et al. | Performance parameters of RTOSs; comparison of open source RTOSs and benchmarking techniques | |
Finkelstein et al. | Real time threads interface | |
CN115051980B (zh) | 一种HTCondor超算网格文件传输方法及*** | |
Liu et al. | CPS: A Cooperative Para-virtualized Scheduling Framework for Manycore Machines | |
US20240036868A1 (en) | Schedulable Asynchronous Methods with Semi-Reactive Completion Stages | |
Craciunas et al. | Real-time scheduling for workload-oriented programming | |
CN117369970A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220214 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: No. 127, Jinye Road, high tech Zone, Xi'an, Shaanxi 710075 Applicant before: Huawei Technologies Co.,Ltd, Xi'an |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181113 |
|
RJ01 | Rejection of invention patent application after publication |