CN117149369A - 一种线程调度方法及处理器 - Google Patents

一种线程调度方法及处理器 Download PDF

Info

Publication number
CN117149369A
CN117149369A CN202210575588.8A CN202210575588A CN117149369A CN 117149369 A CN117149369 A CN 117149369A CN 202210575588 A CN202210575588 A CN 202210575588A CN 117149369 A CN117149369 A CN 117149369A
Authority
CN
China
Prior art keywords
thread
application
application program
determining
processor
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
CN202210575588.8A
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies 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 Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202210575588.8A priority Critical patent/CN117149369A/zh
Publication of CN117149369A publication Critical patent/CN117149369A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

提供了一种线程调度方法及处理器。该方法包括:确定内核中各个线程对应的应用程序特征,根据各个线程对应的应用程序特征确定各个线程的优先级信息,根据各个线程的优先级信息确定各个线程中被调度的线程。该方案通过各个线程的应用程序特征调度线程,可以提高应用程序的性能。

Description

一种线程调度方法及处理器
技术领域
本申请涉及计算机技术领域,尤其涉及一种线程调度方法及处理器。
背景技术
线程是进程中的一个实体,不拥有系统资源,只有运行所必须的数据结构。线程由应用程序通过系统调用创建,用于执行应用程序中的任务。应用程序可以通过系统调用在宿主机的内核创建线程,由该宿主机的处理器(central processing unit,CPU)运行该线程。
处理器通常包括单核CPU或者多核CPU,并且单核CPU或者多核CPU的一个核心一次只能运行一个线程。当有多个线程时,CPU会从多个线程中选择一个线程运行。当该线程运行结束时,CPU从多个线程中重新选择一个线程运行。
在此情况下,如何提高应用程序的性能和CPU的利用率是本领域需解决的问题。
发明内容
本申请提供了一种线程调度方法及处理器,通过各个线程的应用程序特征定义各个线程的调度优先级,并由此进行线程调度,可以提高宿主机的CPU利用率和各个应用程序的性能。
第一方面,本申请实施例提供一种线程调度方法。该方法包括:确定内核中各个线程对应的应用程序特征,根据所述各个线程对应的应用程序特征,确定所述各个线程的优先级信息,根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程。
上述方案中,根据各个线程对应的应用程序特征定义各个线程的优先级信息,在基于此优先级信息调度线程时,可以提高应用程序的性能,以及提高CPU的利用率。
在一种可能的实施方式中,一个线程对应的应用程序特征包括:所述一个线程正在访问的临界区的特征和/或正在访问的应用程序接口的特征。
在一种可能的实施方式中,所述临界区的特征包括:临界区的个数和/或临界区的类型,所述应用程序接口的特征包括:应用程序接口的个数和/或应用程序接口的类型。
在一种可能的实施方式中,所述临界区包括不可休眠临界区,所述确定内核中各个线程的应用程序特征包括:根据所述各个线程使用的锁和/或信号量的数量,确定所述各个线程正在访问的不可休眠临界区的个数。
在一种可能的实施方式中,所述根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程包括:根据所述各个线程的优先级信息,计算所述各个线程的虚拟运行时间,从所述各个线程中选择虚拟运行时间最小的线程作为被调度的线程。
在一种可能的实施方式中,所述各个线程由至少一个应用程序创建,其中,所述至少一个应用程序包括虚拟机、容器或者物理机中安装的应用程序。
第二方面,本申请还提供一种处理器。该处理器包括:确定模块和调度模块。
其中,确定模块用于确定内核中各个线程对应的应用程序特征,确定模块还用于根据所述各个线程对应的应用程序特征确定所述各个线程的优先级信息。
其中,调度模块,用于根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程。
在一种可能的实施方式中,一个线程对应的应用程序特征包括:所述一个线程正在访问的临界区的特征和/或正在访问的应用程序接口的特征。
在一种可能的实施方式中,所述临界区的特征包括:临界区的个数和/或临界区的类型,所述应用程序接口的特征包括:应用程序接口的个数和/或应用程序接口的类型。
在一种可能的实施方式中,所述临界区包括不可休眠临界区,所述确定模块具体用于:根据所述各个线程使用的锁和/或信号量的数量,确定所述各个线程正在访问的不可休眠临界区的个数。
在一种可能的实施方式中,所述调度模块具体用于:根据所述各个线程的优先级信息,计算所述各个线程的虚拟运行时间,从所述各个线程中选择虚拟运行时间最小的线程作为被调度的线程。
在一种可能的实施方式中,所述各个线程由至少一个应用程序创建,其中,所述至少一个应用程序包括虚拟机、容器或者物理机中安装的应用程序。
第三方面,本申请提供一种计算设备。所述计算设备包括:处理器和存储器,所述处理器用于执行存储于所述存储器内的计算机程序以实现第一方面及其可选实施方式中任一所述的方法。
第四方面,本申请提供一种计算机可读存储介质。可读存储介质包括指令,当所述指令在计算机上运行时,使得所述计算机执行第一方面及其可选实施方式中任一所述的方法。
第五方面,本申请提供一种计算机程序产品。计算机程序产品包括程序代码,当计算机运行所述计算机程序产品时,使得所述计算机执行第一方面及其可选实施方式中任一所述的方法。
上述提供的任一种装置或计算机存储介质或计算机程序产品,均用于执行上文所提供的方法,因此,其所能达到的有益效果可参考上文提供的对应方法中的对应方案的有益效果,此处不再赘述。
附图说明
图1是本申请实施例提供的一种虚拟机的结构示意图;
图2是本申请实施例提供的一种对线程进行调度的示意图;
图3是本申请实施例提供的一种线程调度方法的流程图;
图4是本申请实施例提供的一种虚拟机中通过容器间接安装应用程序的示意图;
图5是本申请实施例提供的一种虚拟机中直接安装应用程序的示意图;
图6是本申请实施例提供的一种物理机通过虚拟机和容器间接安装应用程序的示意图;
图7是本申请实施例提供的一种物理机通过虚拟机间接安装应用程序的示意图;
图8是本申请实施例提供的一种物理机直接安装应用程序的示意图;
图9是本申请实施例提供的一种处理器的结构示意图;
图10是本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
在本申请实施例的描述中,“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“例如”、或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在介绍本申请的实施例前,下面先对本申请实施例中出现的名词进行解释。
虚拟机(virtual machine,vm),是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
物理机,是指相对于虚拟机而言的实体计算机。物理机可以给虚拟机提供硬件环境,物理机也称为虚拟机的宿主机。在一个实施例中,通过虚拟机和物理机的配合,一个实体的计算机上可以安装多个操作系统,并且几个操作系统间还可以实现通信,可以达到多台计算机的体验效果。
容器,是计算机操作系统中的一种虚拟化技术。与虚拟机相比,容器主要用于解决以应用程序为中心的问题。容器可以使应用程序运行于相对独立和隔离的环境中,它可以简化应用程序的部署流程、增强应用程序的可移植性和安全性、以及提高系统资源利用率。容器的宿主机可以是前述的虚拟机或者物理机,由此,应用程序可以通过容器部署在虚拟机或者物理机上。在一个实施例中,可以在物理机中同时部署虚拟机和容器,从而提高物理机的系统利用率。
临界区,是指线程或进程中访问共用资源的程序片段。这些共用资源具有无法同时被多个线程访问的特性,当有线程进入临界区,访问临界区对应的共用资源时,其他线程必须等待,以确保共用资源被互斥使用。也就是说,内核中由于等待硬件资源的响应或者多线程竞争资源时,必然出现线程执行的代码段处在等待阶段。在等待阶段,可以主动或被动让出占用的CPU而不对整体应用程序性能产生影响的临界区是可休眠临界区;如果让出CPU对整体应用程序性能产生影响,该临界区是不可休眠临界区。
在一个应用场景中,虚拟机广泛地部署在数据中心的各个服务器内,以支撑数据中心的业务。在一个实施例中,应用程序运行在虚拟机上,以线程为单位参与虚拟机的操作系统的 CPU调度。虚拟机所在宿主机CPU的使用率以及虚拟机CPU的使用率是考量数据中心的重要指标。较高的CPU使用率可以降低数据中心的运营成本,还可以提高应用程序的性能。
以虚拟机CPU对线程进行调度为例,如图1所示,在用户态中应用程序通过系统调用创建线程,在内核态中虚拟机CPU调度线程并运行。该线程在被调度后,按照虚拟机CPU分配的时间片运行,并进入临界区以访问共享资源,以执行应用程序的任务。当给一个线程的时间片结束之后,虚拟机CPU调度下一个线程并运行。
一般情况下,虚拟机CPU可以基于优先级机制,确定各个线程的优先级信息,然后基于各个线程的优先级信息调度线程。在一个具体实施方式中,虚拟机CPU可以根据各个线程的优先级信息,对各个线程的实际运行时间进行处理,根据处理结果确定被调度的线程。其中,优先级信息可以包括各个线程对应的优先级以及优先级的权重。
具体地,如图2所示,线程池中包括线程1~线程3,虚拟机CPU可以根据线程与优先级映射关系匹配各个线程对应的优先级,按照公式(1)所示的计算方式确定各个线程对应的虚拟运行时间vruntime,然后基于各个线程的vruntime选择被调度的线程。具体地,调度器可以从三个线程中确定vruntime最小的线程为被调度的线程。在公式(1)中,runtime表示线程的实际运行时间,priority表示线程的优先级,weight表示优先级对应的权重。
vruntime=(runtime*priority)/weight (1)
在一个实施例中,线程的优先级可以根据虚拟机操作系统默认配置确定,或者还可以根据通过外部接口接收的配置信息确定。例如,根据线程的类型指定线程的优先级。
需要说明的是,各个线程对CPU资源的需求不同。上述确定线程优先级的方案无法体现各个线程对CPU资源的不同需求。当CPU响应线程的需求的时间会影响应用程序的性能。当CPU没有及时调度应用程序的一个关键线程时,可能会降低应用程序的性能。在一些情况下,还可能会降低CPU的利用率。
在一个实施例中,线程的优先级还可以根据线程使用的锁和/或信号量的数量确定。当线程进入一个临界区时,可以对该临界区使用锁或者更新该该临界区的信号量,以避免其他线程访问该临界区。线程使用的锁/信号量的数量不同,线程的优先级不同。例如,线程使用的锁和/或信号量的数量越多,该线程的优先级越高。其中,在Linux系统中,线程使用的锁可以包括自旋锁spinlock、读写锁rwlock、互斥锁mutex和读取-拷贝-更新锁(read-copy-update, rcu)等,线程使用的信号量可以包括读写信号量rwsem等。
需要说明的是,不同的线程在某一个时间点使用的锁和/或者信号量的数量可能会相同。由此,上述确定线程优先级的方案中,当出现两个或者多个线程使用的锁的数量相同,会出现无法区分线程优先级的情况。
为此,本申请实施例提供一种线程调度方法,通过各个线程的应用程序特征确定各个线程的优先级,并据此调度线程。该方法根据各个线程的应用程序特征确定各个线程的优先级,可以更加真实的体现创建线程的应用程序对CPU的需求,从而提高应用程序的性能和提高 CPU利用率。
图3是本申请实施例提供的一种线程调度方法的流程图。该方法可以由虚拟机CPU执行。
如图3所示,该方法包括如下的步骤S301-步骤S303。
在步骤S301中,确定内核中各个线程对应的应用程序特征。
各个线程对应的应用程序特征可以包括各个线程正在访问的临界区的特征和/或正在访问的应用程序接口(application programming interface,API)的特征。临界区的特征包括临界区的类型和/或个数,API接口的特征同样可以包括API接口的类型和/或个数。其中,正在访问是指,线程进入临界区或者调用API接口,但未退出该临界区或者API接口。
在一个实施方式中,如图4所示的虚拟机vm,vm中部署有多个容器(容器1~容器3),每个容器中安装有至少一个应用程序。在一个实施方式中,如图5所示的虚拟机vm,vm中安装有至少一个应用程序。在这两个实施方式中,各个应用程序响应用户的操作,通过系统调用在内核中创建线程,以执行应用程序的任务。vm的CPU可以统计内核中的各个线程正在访问的临界区的个数和API接口的个数,然后,根据统计的个数确定各个线程对应的应用程序特征。
具体地,虚拟机CPU中可以包括计数器,该计数器分别对各个线程访问临界区和API 接口的数量进行计数。例如,当一个线程进入一个临界区或者调用一个API接口时,计数器记录的该线程进入的临界区的个数加1或者调用的API接口的个数加1。当一个线程退出进入的临界区或者退出一个API接口时,计数器记录的该线程进入的临界区的个数加1或者调用的API接口的个数减1。由此,计数器最终记录一个线程对应的临界区的个数加1或者API 接口的个数是一个线程正在访问的个数。
如前所述的,临界区包括可休眠临界区和不可休眠临界区。如图3所示的,虚拟机CPU 在各个线程正在访问的临界区的特征时,可以只对各个线程正在访问的不可休眠临界区的特征进行统计。
在一个实施方式中,开发人员可以预先在虚拟机CPU中配置统计策略,用于指示虚拟机 CPU对哪些类型的临界区和API接口进行统计。这样,虚拟机CPU可以根据统计策略统计各个线程对应的应用程序特征。
在步骤S302中,根据各个线程对应的应用程序特征确定各个线程对应的优先级信息。
如前所述的优先级信息可以包括优先级和优先级对应的权重,可以预先在虚拟机CPU中配置不同优先级与不同权重的映射关系。
虚拟机CPU可以根据在步骤S301确定的各个线程对应的应用程序特征确定各个线程的优先级,然后根据各个线程的优先级、以及不同优先级与不同权重的映射关系确定各个线程的优先级对应的权重,从而获得各个线程对应的优先级信息。
在一个实施方式中,虚拟机CPU确定一个线程的优先级时,可以根据该线程正在访问的不可休眠临界区的个数、不可休眠临界区的个数对应的权重、该线程正在访问的API接口的个数以及API接口的个数对应的权重,计算出该线程对应的参考值,然后根据该线程对应的参考值、以及参考值与不同优先级的映射关系确定该线程的优先级。
在一个实施方式中,虚拟机CPU确定一个线程的优先级时,还可以根据该线程正在访问的不可休眠临界区的个数、该线程正在访问的API接口的个数、以及预先配置的不同优先级对应的临界区个数范围和API接口个数的范围,确定该线程的优先级。
例如,可以配置三个等级的优先级,包括第一等级、第二等级和第三等级,其中,第一等级的优先级最高,第三等级的优先级最低。再例如,可以配置第一等级对应的临界区个数为5个以上、API接口个数为8个以上,配置第二等级对应的临界区个数为2~5个、API接口个数为2~8个,以及配置第一等级对应的临界区个数为2个以下、API接口个数为2个以下。再例如,在前述的配置下,当线程1对应的临界区个数为6、API接口个数为10时,可以确定线程1处于第一等级的优先级。
在步骤S303中,根据各个线程对应的优先级信息确定确定所述各个线程中被调度的线程。
虚拟机CPU可以根据各个线程对应的优先级信息、各个线程对应的实际运行时间以及前述的公式1计算各个线程对应的虚拟运行时间。
然后,虚拟机CPU根据选择各个线程对应的虚拟运行时间,选择虚拟运行时间最小的线程作为被调度的线程。
在一个实施方式中,一个物理机中可以部署有一个或多个虚拟机。与图4和图5所示的部署方式相对应的,物理机中部署虚拟机的场景示意图参见图6和图7。在图6和图7所示的场景中,各个虚拟机的CPU根据各个线程对应的应用程序特征确定各个线程的优先级信息,物理机CPU根据各个虚拟机CPU确定出的各个线程的优先级信息,选择被调度的线程。
本申请实施例还提供一种线程调度方法,该方法由物理机的CPU执行。
参阅图8,该物理机中安装有至少一个应用程序。物理机的CPU可以按照如下的步骤 S801-步骤S803对各个应用程序在内核中创建的线程进行调度.
在步骤S801中,物理机CPU确定内核中各个线程对应的应用程序特征。
在步骤S802中,物理机CPU根据各个线程对应的应用程序特征确定各个线程的优先级信息。
在步骤S803中,物理机CPU根据各个线程的优先级信息确定被调度的线程。
上述步骤S801-步骤S803与前述图3所示的方法实施例中的步骤相似,具体介绍可以参见前述的步骤S201-步骤S203的描述,此处不再赘述。
在其他实施例中,虚拟机CPU或者物理机CPU还可以记录各个线程进入的临界区的类型或者调用的API接口的类型,并根据各个线程对应的临界区的类型和API接口类型确定线程的优先级信息。
为此,虚拟机CPU或者物理机CPU中还可以预先为不同类型的临界区和API接口配置一个权重,不同权重的临界区或者API接口的重要程度不同,其中,权重越大可以表示该类型的临界区和API接口的优先级越高。
在此配置下,以虚拟机CPU为例,虚拟机CPU可以根据各个临界区和API接口对应的权重确定线程的优先级。例如,虚拟机CPU可以根据预先配置的信息,确定线程1进入的临界区或者调用的API接口对应权重,从各个临界区或者各个API接口对应的权重中选择最大权重,并根据该最大权重确定线程1的优先级。
上述方案中,虚拟机CPU或者物理机CPU通过根据各个线程对应的应用程序特征,如正在访问的临界区个数和API接口个数,定义各个线程的调度优先级,可以使CPU优先调度重要程度高的线程,从而提高该线程对应的应用程序的性能,以及提高CPU的利用率。
需要说明的是,本申请前述的方法实施例中的步骤可以应用于单核CPU,还可以应用于多核CPU中的每个核心。也就是说,在多核CPU情况下,其中的每个核心都可以通过前述的方法步骤选择调度哪一个线程,以提高应用程序的性能和该核心的利用率。
本申请实施例还提供一种处理器,该处理器可以是虚拟机CPU或者是物理机CPU,以执行前述的步骤S201-步骤S203,或者执行前述的步骤S801-步骤S803。
图9是本申请实施例提供的一种处理器的结构示意图。如图9所示,该处理器900包括确定模块901和调度模块902。
其中,确定模块901用于确定内核中各个线程对应的应用程序特征,确定模块还用于根据所述各个线程对应的应用程序特征确定所述各个线程的优先级信息。
其中,调度模块902用于根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程。
需要说明的是,图9所示实施例提供的处理器900在执行线程调度方法时,仅以上述各功能模块的划分举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的处理器900与前述的图3所示的线程调度方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10是本申请实施例提供一种计算设备1000的硬件结构示意图。
该计算设备1000可以为上述网络故障显示设备或者上述终端设备。参见图10,该计算设备1000包括处理器1001、存储器1002、通信接口1003和总线1004,处理器1001、存储器1002和通信接口1003通过总线1004彼此连接。处理器1001、存储器1002和通信接口1003也可以采用除了总线1004之外的其他连接方式连接。
其中,存储器1002可以是各种类型的存储介质,例如随机存取存储器(randomaccess memory,RAM)、只读存储器(read-only memory,ROM)、非易失性RAM(non-volatileRAM, NVRAM)、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、电可擦除PROM(electrically erasable PROM,EEPROM)、闪存、光存储器、硬盘等。
其中,处理器1001可以是通用处理器,通用处理器可以是通过读取并执行存储器(例如存储器1002)中存储的内容来执行特定步骤和/或操作的处理器。例如,通用处理器可以是中央处理器(central processing unit,CPU)。处理器1001可以包括至少一个电路,以执行图2 或者图5所示实施例提供的网络故障显示方法的全部或部分步骤。
其中,通信接口1003包括输入/输出(input/output,I/O)接口、物理接口和逻辑接口等用于实现计算设备1000内部的器件互连的接口,以及用于实现计算设备1000与其他设备(例如其他计算设备或用户设备)互连的接口。物理接口可以是以太网接口,光纤接口,ATM接口等。
其中,总线1004可以是任何类型的,用于实现处理器1001、存储器1002和通信接口1003 互连的通信总线,例如系统总线。
上述器件可以分别设置在彼此独立的芯片上,也可以至少部分的或者全部的设置在同一块芯片上。将各个器件独立设置在不同的芯片上,还是整合设置在一个或者多个芯片上,往往取决于产品设计的需要。本申请实施例对上述器件的具体实现形式不做限定。
图10所示的计算设备1000仅仅是示例性的,在实现过程中,计算设备1000还可以包括其他组件,本文不再一一列举。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)) 或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。应理解,在本申请实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,不应对本申请实施例的实施过程构成任何限定。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。

Claims (14)

1.一种线程调度方法,其特征在于,包括:
确定内核中各个线程对应的应用程序特征;
根据所述各个线程对应的应用程序特征,确定所述各个线程的优先级信息;
根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程。
2.根据权利要求1所述的方法,其特征在于,一个线程对应的应用程序特征包括:所述一个线程正在访问的临界区的特征和/或正在访问的应用程序接口的特征。
3.根据权利要求2所述的方法,其特征在于,所述临界区的特征包括:临界区的个数,所述应用程序接口的特征包括:应用程序接口的个数。
4.根据权利要求2或3所述的方法,其特征在于,所述临界区包括不可休眠临界区,所述确定内核中各个线程的应用程序特征包括:
根据所述各个线程使用的锁和/或信号量的数量,确定所述各个线程正在访问的不可休眠临界区的个数。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程包括:
根据所述各个线程的优先级信息,计算所述各个线程的虚拟运行时间;
从所述各个线程中选择虚拟运行时间最小的线程作为被调度的线程。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述各个线程由至少一个应用程序创建,其中,所述至少一个应用程序包括虚拟机、容器或者物理机中安装的应用程序。
7.一种处理器,其特征在于,包括:
确定模块,用于确定内核中各个线程对应的应用程序特征;
确定模块,还用于根据所述各个线程对应的应用程序特征,确定所述各个线程的优先级信息;
调度模块,用于根据所述各个线程的优先级信息,确定所述各个线程中被调度的线程。
8.根据权利要求7所述的处理器,其特征在于,一个线程对应的应用程序特征包括:所述一个线程正在访问的临界区的特征和/或正在访问的应用程序接口的特征。
9.根据权利要求8所述的处理器,其特征在于,所述临界区的特征包括:临界区的个数,所述应用程序接口的特征包括:应用程序接口的个数。
10.根据权利要求7或8所述的处理器,其特征在于,所述临界区包括不可休眠临界区,所述确定模块具体用于:
根据所述各个线程使用的锁和/或信号量的数量,确定所述各个线程正在访问的不可休眠临界区的个数。
11.根据权利要求7-10任一项所述的处理器,其特征在于,所述调度模块具体用于:
根据所述各个线程的优先级信息,计算所述各个线程的虚拟运行时间;
从所述各个线程中选择虚拟运行时间最小的线程作为被调度的线程。
12.根据权利要求7-11任一项所述的处理器,其特征在于,所述各个线程由至少一个应用程序创建,其中,所述至少一个应用程序包括虚拟机、容器或者物理机中安装的应用程序。
13.一种计算设备,其特征在于,所述计算设备包括:处理器和存储器,所述处理器用于执行存储于所述存储器内的计算机程序以实现权利要求1至6任一所述的方法。
14.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1至6任一所述的方法。
CN202210575588.8A 2022-05-24 2022-05-24 一种线程调度方法及处理器 Pending CN117149369A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210575588.8A CN117149369A (zh) 2022-05-24 2022-05-24 一种线程调度方法及处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210575588.8A CN117149369A (zh) 2022-05-24 2022-05-24 一种线程调度方法及处理器

Publications (1)

Publication Number Publication Date
CN117149369A true CN117149369A (zh) 2023-12-01

Family

ID=88897441

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210575588.8A Pending CN117149369A (zh) 2022-05-24 2022-05-24 一种线程调度方法及处理器

Country Status (1)

Country Link
CN (1) CN117149369A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573373A (zh) * 2024-01-15 2024-02-20 中诚华隆计算机技术有限公司 一种基于云计算的cpu虚拟化调度方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573373A (zh) * 2024-01-15 2024-02-20 中诚华隆计算机技术有限公司 一种基于云计算的cpu虚拟化调度方法及系统
CN117573373B (zh) * 2024-01-15 2024-03-26 中诚华隆计算机技术有限公司 一种基于云计算的cpu虚拟化调度方法及系统

Similar Documents

Publication Publication Date Title
US10896065B2 (en) Efficient critical thread scheduling for non privileged thread requests
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
US20180101486A1 (en) Automatic System Service Resource Management for Virtualizing Low-Latency Workloads that are Input/Output Intensive
US20150178116A1 (en) Providing service quality levels through cpu scheduling
US20070294695A1 (en) Method, system, and apparatus for scheduling computer micro-jobs to execute at non-disruptive times
WO2022068697A1 (zh) 任务调度方法及装置
US10782999B2 (en) Method, device, and single-tasking system for implementing multi-tasking in single-tasking system
US20090178045A1 (en) Scheduling Memory Usage Of A Workload
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
JP4348639B2 (ja) マルチプロセッサシステム、ワークロード管理方法
CN111459622B (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN117149369A (zh) 一种线程调度方法及处理器
CN106789337B (zh) 一种kvm的网络性能优化方法
US8464258B2 (en) Virtual computer and CPU allocation method
CN114461365A (zh) 一种进程调度处理方法、装置、设备和存储介质
US20110055831A1 (en) Program execution with improved power efficiency
US11561843B2 (en) Automated performance tuning using workload profiling in a distributed computing environment
US11429424B2 (en) Fine-grained application-aware latency optimization for virtual machines at runtime
CN114035901B (zh) 用于运行进程的容器的构建方法、装置和电子设备
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
US11237860B2 (en) Command-based processing of real-time virtualized jobs
CN114077493A (zh) 一种资源分配方法及相关设备
CN114911538B (zh) 一种运行系统的启动方法及计算设备
KR102443894B1 (ko) 가상화 환경에서 가상머신의 i/o 성능을 높이기 위한 스케줄링 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication