CN114489823A - 用于就近唤醒cpu核心的方法及装置 - Google Patents

用于就近唤醒cpu核心的方法及装置 Download PDF

Info

Publication number
CN114489823A
CN114489823A CN202210132258.1A CN202210132258A CN114489823A CN 114489823 A CN114489823 A CN 114489823A CN 202210132258 A CN202210132258 A CN 202210132258A CN 114489823 A CN114489823 A CN 114489823A
Authority
CN
China
Prior art keywords
computing unit
cpu
critical resource
cpu core
computing
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.)
Granted
Application number
CN202210132258.1A
Other languages
English (en)
Other versions
CN114489823B (zh
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202210132258.1A priority Critical patent/CN114489823B/zh
Publication of CN114489823A publication Critical patent/CN114489823A/zh
Application granted granted Critical
Publication of CN114489823B publication Critical patent/CN114489823B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

本说明书实施例提供了用于就近唤醒CPU核心的方法及装置。在该方法中,当存在多个计算单元竞争同一个临界资源时,多个计算单元中除当前访问临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态,每个计算单元被分配至少一个CPU核心;执行以下循环操作,直至满足循环结束条件:在临界资源被释放时,在已访问计算单元处,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与当前释放临界资源的已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及唤醒目标计算单元,以使目标计算单元访问临界资源。

Description

用于就近唤醒CPU核心的方法及装置
技术领域
本说明书实施例涉及计算机技术领域,具体地,涉及用于就近唤醒CPU核心的方法及装置。
背景技术
在多核、多Die和Chiplet结构下,各个物理的CPU核心是一个独立的执行单元,可以独立地执行一条控制流,各个CPU核心之间可以并行运行程序线程。
在封装CPU的结构中,各个CPU核心可以并行执行操作,而可供各个CPU核心使用的资源有限,尤其是临界资源。由于临界资源每次仅供一个进程使用,当存在多个CPU核心需要竞争同一个临界资源时,由作为竞争胜出者的CPU核心访问临界资源,其他未竞争得到的CPU核心则可以采取轮询忙等的方式,直至临界资源被释放。
发明内容
鉴于上述,本说明书实施例提供了用于就近唤醒CPU核心的方法及装置。通过本说明书实施例的技术方案,在临界资源被释放时以就近唤醒的方式每次仅唤醒一个计算单元,其他竞争临界资源的计算单元保持睡眠状态,减小消耗,节省资源。此外,就近唤醒的方式减少唤醒延迟,从而提高唤醒效率。
根据本说明书实施例的一个方面,提供了一种用于就近唤醒CPU核心的方法,包括:当存在多个计算单元竞争同一个临界资源时,所述多个计算单元中除当前访问所述临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态,每个计算单元被分配至少一个CPU核心;执行以下循环操作,直至满足循环结束条件:在所述临界资源被释放时,在当前释放所述临界资源的已访问计算单元处,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及在所述已访问计算单元处,唤醒所述目标计算单元,以使所述目标计算单元访问所述临界资源。
根据本说明书实施例的一个方面,提供了一种用于就近唤醒CPU核心的方法,所述方法应用于与其他多个计算单元竞争同一临界资源的一个计算单元,处于工作状态的所述计算单元当前访问所述临界资源,所述其他多个计算单元执行睡眠指令进入睡眠状态,所述方法包括:在访问完所述临界资源后,释放所述临界资源;根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及唤醒所述目标计算单元,以使所述目标计算单元访问所述临界资源。
根据本说明书实施例的另一方面,还提供一种用于就近唤醒CPU核心的装置,所述装置应用于与其他多个计算单元竞争同一临界资源的一个计算单元,处于工作状态的所述计算单元当前访问所述临界资源,所述其他多个计算单元执行睡眠指令进入睡眠状态,所述装置包括:资源释放模块,在访问完所述临界资源后,释放所述临界资源;计算单元确定模块,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及计算单元唤醒模块,唤醒所述目标计算单元,以使所述目标计算单元访问所述临界资源。
根据本说明书实施例的另一方面,还提供一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上述任一所述的用于就近唤醒CPU核心的方法。
根据本说明书实施例的另一方面,还提供一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的用于就近唤醒CPU核心的方法。
根据本说明书实施例的另一方面,还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上任一所述的用于就近唤醒CPU核心的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了根据本说明书实施例的用于就近唤醒CPU核心的方法的一个示例的流程图。
图2示出了根据本说明书实施例的多个封装CPU之间的物理结构的一个示例的示意图。
图3示出了根据本说明书实施例的确定待唤醒的目标计算单元的一个示例的流程图。
图4示出了根据本说明书的另一实施例的用于就近唤醒CPU核心的方法的一个示例的流程图。
图5示出了根据本说明书实施例的用于就近唤醒CPU核心的装置的一个示例的方框图。
图6示出了本说明书实施例的用于实现CPU核心就近唤醒方法的电子设备的方框图。
具体实施方式
以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
在本说明书中,临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式来共享临界资源,临界资源包括打印机、磁带机、输入机以及进程之间共享的变量、数据等。
在多核、多Die和Chiplet结构下,各个物理的CPU核心是一个独立的执行单元,可以独立地执行一条控制流,各个CPU核心之间可以并行运行程序线程。
在封装CPU的结构中,各个CPU核心可以并行执行操作,而可供各个CPU核心使用的资源有限,尤其是临界资源。由于临界资源每次仅供一个进程使用,当存在多个CPU核心需要竞争同一个临界资源时,由作为竞争胜出者的CPU核心访问临界资源,其他未竞争得到的CPU核心则可以采取轮询忙等的方式,直至临界资源被释放。
然而,在各个CPU核心未竞争到临界资源时只能处于忙等状态,而处于忙等状态的CPU核心需要消耗资源。越多处于忙等状态的CPU核心,会消耗越多的资源。
鉴于上述,本说明书实施例提供了用于就近唤醒CPU核心的方法及装置。在该方法中,当存在多个计算单元竞争同一个临界资源时,多个计算单元中除当前访问临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态,每个计算单元被分配至少一个CPU核心;执行以下循环操作,直至满足循环结束条件:在临界资源被释放时,在当前释放临界资源的已访问计算单元处,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及在已访问计算单元处,唤醒目标计算单元,以使目标计算单元访问临界资源。通过本说明书实施例的技术方案,在临界资源被释放时以就近唤醒的方式每次仅唤醒一个计算单元,其他竞争临界资源的计算单元保持睡眠状态,减小消耗,节省资源。此外,就近唤醒的方式减少唤醒延迟,从而提高唤醒效率。
下面结合附图对根据本说明书实施例的用于就近唤醒CPU核心的方法及装置进行说明。
图1示出了根据本说明书实施例的用于就近唤醒CPU核心的方法的一个示例100的流程图。
如图1所示,在110,当存在多个计算单元竞争同一个临界资源时,该多个计算单元中除当前访问临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态。
在本说明书实施例中,计算单元可以是被分配有至少一个CPU核心、且能够独立执行操作的执行单元,每个计算单元在运行时可以占用一个CPU核心,通过所占用的一个CPU核心实际地执行计算操作。这里的占用是指该CPU核心分配给该计算单元。
在一个示例中,计算单元可以包括CPU核心或者vCPU,相应地,本说明书实施例的一个应用场景可以是多个CPU核心竞争同一个临界资源,另一个应用场景可以是多个vCPU竞争同一个临界资源。其中,每个vCPU可以被分配至少一个CPU核心,当vCPU运行时可以只占用所分配的至少一个CPU核心中的其中一个CPU核心。
在该示例中,当计算单元是CPU核心时,多个CPU核心可以竞争同一个临界资源。当计算单元是vCPU时,多个vCPU可以竞争同一个临界资源,当该多个vCPU中的其中一个vCPU竞争成功时,该vCPU被分配的CPU核心可以访问该临界资源。
在本说明书实施例中,多个计算单元竞争同一个临界资源是指该多个计算单元需要访问该临界资源。临界资源在每个时间点仅可以被一个计算单元访问,第一个访问临界资源的计算单元可以是多个计算单元中的其中一个计算单元。从而,第一个访问临界资源的计算单元可以以随机的方式从多个计算单元中确定,还可以以其他选取规则从多个计算单元中确定。在第一个访问临界资源的计算单元之后,其他各个计算单元可以根据本说明书实施例提供的就近唤醒方案逐一确定并唤醒。
在临界资源被访问的每个时间点,竞争该临界资源的多个计算单元中仅一个计算单元处于工作状态,用来执行访问该临界资源的操作。其他待访问的各个计算单元执行睡眠指令以进入睡眠状态,等待被唤醒以访问临界资源。通过将待访问临界资源的计算单元处于睡眠状态,减少了电能消耗,节省了资源。
在睡眠指令来源的一个示例中,每个待访问的计算单元的睡眠指令可以由自身来生成。在多个计算单元同时竞争同一临界资源时,仅其中的一个计算单元可以竞争成功从而访问该临界资源,而其他待访问计算单元在竞争失败后,可以响应于竞争失败事件,生成睡眠指令,并执行该睡眠指令以进入睡眠状态。
在睡眠指令来源的另一个示例中,各个待访问的计算单元的睡眠指令可以来自于竞争成功能够访问临界资源的计算单元。具体地,竞争同一临界资源的多个计算单元中的其中一个计算单元竞争成功后,可以生成睡眠指令,然后,可以向该多个计算单元中竞争失败的其他各个计算单元发送睡眠指令,以使该计算单元处于睡眠状态。
在该示例中,睡眠指令发送的方式可以包括广播方式,即,可以向竞争失败的其他各个计算单元广播睡眠指令,每个接收到睡眠指令的计算单元可以响应于该睡眠指令进入睡眠状态。当计算单元是CPU核心时,竞争失败的各个CPU核心可以直接接收到睡眠指令,然后,其他各个CPU核心响应于睡眠指令进入睡眠状态,处于睡眠状态的CPU核心不再执行相关操作,以避免消耗电能以及资源。
当计算单元是vCPU时,虚拟机管理器(比如,Hypervisor)用于管理各个vCPU,竞争成功的计算单元在生成并广播睡眠指令后,虚拟机管理器可以截获睡眠指令,并将所截获的睡眠指令发送给睡眠计算单元信息中未被触发访问临界资源的各个vCPU,各个vCPU可以响应于睡眠指令进入睡眠状态。
在一个示例中,在各个vCPU进入睡眠状态后,分配给该各个vCPU的CPU核心可以分配给其他vCPU,以实现对CPU核心的共享,提高CPU核心的利用率。当处于睡眠状态的vCPU后,可以再将分配给该vCPU的CPU核心重新再分配给该vCPU。
在一个示例中,在多个计算单元中除当前访问临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态之后,在当前访问临界资源的计算单元处,可以将执行睡眠指令的计算单元被分配的CPU核心对应的核心标识以及归属信息记录在睡眠计算单元信息表中。
睡眠计算单元信息表可以用于记录处于睡眠状态的计算单元被分配的CPU核心的相关信息。在睡眠计算单元信息表中,可以按照不同临界资源对处于睡眠状态的计算单元进行分类记录,每一类别对应一个临界资源,属于同一类别的计算单元竞争该类别对应的同一个临界资源。这样,便于睡眠计算单元信息表可以并行地为多个临界资源提供处于睡眠状态的计算单元的相关信息,从而可以在机器运行中并行地执行针对多个临界资源的唤醒操作。
在本说明书实施例中,睡眠计算单元信息表可以进行实时更新,以确保睡眠计算单元信息表中记录的计算单元是处于睡眠状态且待访问对应临界资源的计算单元。在睡眠计算单元信息表中记录的计算单元被唤醒来访问临界资源后,该计算单元可以从睡眠计算单元信息表中删除。
在睡眠计算单元信息表中,记录的每个计算单元可以对应一条数据,每个计算单元对应的一条数据可以包括该计算单元被分配的CPU核心的核心标识以及归属信息。CPU核心的归属信息可以用于表征该CPU核心在物理结构层面上所属的核心集群(cluster)、Die、封装CPU、NUMA(Non Uniform Memory Access)等中至少一种的信息。其中,核心集群可以包括多个CPU核心,一个封装CPU对应一个socket。
在一个示例中,每个CPU核心的物理归属可以包括核心集群、Die、封装CPU、NUMA中的至少一种,相应地,每个CPU核心对应的归属信息可以包括该CPU核心所属核心集群对应的核心集群标识、该CPU核心所属Die对应的Die标识、该CPU核心所属封装CPU的封装CPU标识以及该CPU核心所属NUMA节点对应的NUMA节点标识中的至少一种。
例如,一个CPU核心的归属信息包括核心集群标识、Die标识、封装CPU标识和NUMA节点标识,则可以确定该CPU核心既属于核心集群标识对应的核心集群,还属于Die标识对应的Die、封装CPU标识对应的封装CPU以及NUMA节点标识对应的NUMA节点。
不同的CPU核心所属的物理归属类别可以相同,比如,每个CPU核心所属的物理归属类别都包括核心集群、Die、封装CPU和NUMA节点。此外,不同的CPU核心所属的物理归属类别可以不同,例如,有的CPU核心所属的归属类别包括核心集群、Die、封装CPU和NUMA节点中的部分归属类别,有的CPU核心所属的归属类别包括核心集群、Die、封装CPU和NUMA节点中的全部。
此外,不同的CPU核心所属的物理归属类别中可以存在相同的物理归属,还可以存在不同的物理归属。例如,两个CPU核心均属于同一个核心集群,从而也属于相同的Die、相同的封装CPU以及相同的NUMA节点。又例如,两个CPU核心属于不同的核心集群,也属于不同的Die,但属于相同的封装CPU以及相同的NUMA节点。
通过当前访问临界资源的计算单元的记录操作,可以将竞争同一个临界资源的所有计算单元都记录在睡眠计算单元信息表中。
回到图1,在120,在临界资源被释放时,在当前释放临界资源的已访问计算单元处,根据各个计算单元所分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与该已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元。
在本说明书实施例中,当前释放临界资源的已访问计算单元在释放临界资源之前已对临界资源进行了访问。CPU核心之间的距离可以是物理结构层面上的距离,比如,属于同一Die的两个CPU核心之间的距离小于属于不同的Die且属于同一封装CPU的两个CPU核心之间的距离。
在一个示例中,CPU核心之间的距离可以通过CPU核心所属的核心集群、Die以及封装CPU等物理归属来表示。其中,核心集群可以包括属于同一个Die中的多个CPU核心,每个Die可以集成有多个CPU核心,每个封装CPU可以集成至少一个Die。
属于同一个核心集群的CPU核心之间的距离小于属于不同核心集群、且属于同一个Die的CPU核心之间的距离,属于同一个Die的CPU核心之间的距离小于属于不同Die、且属于同一个封装CPU的CPU核心之间的距离,属于同一个封装CPU的CPU核心之间的距离小于属于不同封装CPU的CPU核心之间的距离。
在一个示例中,在CPU核心之间的距离通过CPU核心所属的核心集群、Die以及封装CPU来表示时,CPU核心之间的距离可以按照核心集群标识、Die标识以及封装CPU标识的顺序依次来确定。
当进行比较的两个CPU核心对应的归属信息包括同一核心集群标识时,表示该两个CPU核心属于同一核心集群,此时,该两个CPU核心之间的距离最小。当进行比较的两个CPU核心对应的归属信息包括不同的核心集群标识、且相同的Die标识时,表示该两个CPU核心属于不同的核心集群且属于同一Die,此时,两个CPU核心之间的距离次之。当进行比较的两个CPU核心对应的归属信息包括不同的Die标识、且相同的封装CPU标识时,表示该两个CPU核心属于不同的Die且属于同一封装CPU,此时,两个CPU核心之间的距离会更大一些。当进行比较的两个CPU核心对应的归属信息包括不同的封装CPU标识时,表示该两个CPU核心属于不同的封装CPU,此时,两个CPU核心之间的距离相对来说最大。
图2示出了根据本说明书实施例的多个封装CPU之间的物理结构的一个示例的示意图。如图2所示,两个封装CPU之间相互连接,每个封装CPU集成有4个Die,该4个Die之间相互连接,每个Die集成有8个CPU核心,各个CPU核心之间相互独立。每个Die中集成的8个CPU核心被分成两个核心集群,每个核心集群包括4个CPU核心。
以图2中的封装CPU0和封装CPU1、Die0和Die1以及核心集群0和核心集群1为例,核心集群0属于Die0中的一个核心集群,核心集群0中的各个CPU核心之间的距离最小,核心集群0中的CPU核心与核心集群1中的CPU核心之间的距离次之,Die0中的CPU核心与Die1中的CPU核心之间的距离再更大一些,封装CPU0中的CPU核心与封装CPU1中的CPU核心之间的距离最大。
针对不同封装CPU之间的距离,可以包括两种情况,第一种情况,不同封装CPU中的Die之间存在直接连接,以图2为例,封装CPU0中的Die1与封装CPU1中的Die7之间存在直接连接,封装CPU0中的Die0与封装CPU1中的Die6之间存在直接连接。第二种情况,不同封装CPU中的Die之间没有直接连接,而是通过其他Die间接连接。以图2为例,封装CPU0中的Die0与封装CPU1中的Die7之间不存在直接连接,而是通过Die1或Die6连接起来。
当两个CPU核心属于第一种情况下的不同封装CPU中的存在直接连接的Die时,该两个CPU核心之间的距离(以下称为第一距离)会偏小,而当两个CPU核心属于第二种情况下的不同封装CPU中的不存在直接连接的Die时,该两个CPU核心之间的距离(以下称为第二距离)会偏大,即,第一距离会小于第二距离。
此外,针对NUMA节点,在一个示例中,NUMA节点可以根据封装CPU来进行划分,即,每个NUMA节点包括至少一个封装CPU。
在该示例中,当NUMA节点包括一个封装CPU时,每个NUMA节点与所包括的封装CPU对应,每个NUMA节点可以相当于对应的封装CPU,属于封装CPU的每个CPU核心同时也属于对应的NUMA节点。此时,属于同一个封装CPU的CPU核心之间的距离等同于属于该封装CPU对应的NUMA节点的CPU核心之间的距离。
当NUMA节点包括至少两个封装CPU时,属于同一个NUMA节点、且属于不同封装CPU的CPU核心之间的距离小于属于不同NUMA节点的CPU核心之间的距离。在一个示例中,当两个CPU核心分属于不同的两个NUMA节点时,该两个CPU核心之间的距离最远。
在一个示例中,在CPU核心之间的距离通过CPU核心所属的核心集群、Die、封装CPU以及NUMA节点来表示时,CPU核心之间的距离可以按照核心集群标识、Die标识、封装CPU标识以及NUMA节点标识的顺序依次来确定。
当进行比较的两个CPU核心对应的归属信息包括不同的封装CPU标识、且同一NUMA节点标识时,表示该两个CPU核心属于不同封装CPU、且属于相同的NUMA节点。此时,两个CPU核心之间的距离比属于同一封装CPU的两个CPU核心之间的距离要大。当进行比较的两个CPU核心对应的归属信息包括不同的NUMA节点标识时,表示该两个CPU核心属于不同的NUMA节点,此时,两个CPU核心之间的距离比最大。
在另一个示例中,NUMA节点可以根据Die来进行划分,即,NUMA节点可以包括至少一个Die。
在该示例中,当NUMA节点包括一个Die时,每个NUMA节点与所包括的Die对应,每个NUMA节点可以相当于对应的Die。属于Die的每个CPU核心同时也属于对应的NUMA节点。此时,属于同一个Die的CPU核心之间的距离等同于属于该Die对应的NUMA节点的CPU核心之间的距离。
当NUMA节点包括至少两个Die时,属于同一个Die的CPU核心之间的距离小于属于不同Die、但属于同一个NUMA节点的CPU核心之间的距离,属于同一个NUMA节点的CPU核心之间的距离小于属于不同NUMA节点、但属于同一个封装CPU的CPU核心之间的距离。
在一个示例中,在CPU核心之间的距离通过CPU核心所属的核心集群、Die、封装CPU以及NUMA节点来表示时,CPU核心之间的距离可以按照核心集群标识、Die标识、NUMA节点标识以及封装CPU标识的顺序依次来确定。
当进行比较的两个CPU核心对应的归属信息包括不同的Die标识、且同一NUMA节点标识时,表示该两个CPU核心属于不同Die、且属于相同的NUMA节点,此时,该两个CPU核心之间的距离比属于同一Die的两个CPU核心之间的距离要大。当进行比较的两个CPU核心对应的归属信息包括不同的NUMA节点标识、且相同的封装CPU标识时,表示该两个CPU核心属于不同的NUMA节点、且属于相同的封装CPU,此时,该两个CPU核心之间的距离比属于不同封装CPU的两个CPU核心之间的距离要小。
在本说明书实施例中,所确定出的目标计算单元与当前释放临界资源的已访问计算单元之间的距离是指该目标计算单元被分配的CPU核心与已访问计算单元被分配的CPU核心之间的距离。
图3示出了根据本说明书实施例的确定待唤醒的目标计算单元的一个示例300的流程图。
如图3所示,在121,在临界资源被释放时,在当前释放临界资源的已访问计算单元处,可以根据睡眠计算单元信息表确定当前释放临界资源的已访问计算单元被分配的第一CPU核心与处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心之间的距离。
在该示例中,第一CPU核心是当前释放临界资源的已访问计算单元被分配的CPU核心,已访问计算单元不会被记录在睡眠计算单元信息表中。第二CPU核心是处于睡眠状态的各个待唤醒计算单元被分配的CPU核心,各个待唤醒计算单元被记录在睡眠计算单元信息表中。
在该示例中,已访问计算单元已通过被分配的第一CPU核心访问完临界资源,并释放该临界资源,因此,可以查询当前访问并释放临界资源的第一CPU核心。在查询的一种方式中,可以从日志中查询并确定第一CPU核心。在查询的另一种方式中,可以记录针对临界资源的每一次访问操作及释放操作,所记录的信息可以包括访问及释放的CPU核心对应的CPU核心标识、访问时间及释放时间等。基于此,可以从所记录的信息中查询当前释放临界资源的第一CPU核心。
在确定出第一CPU核心和各个第二CPU核心后,可以分别计算第一CPU核心与各个第二CPU核心之间的距离,当机器中的CPU核心不涉及NUMA节点的划分时,计算两个CPU核心之间的距离的方式可以按照集群标识、Die标识以及CPU标识的顺序依次来确定。
以图2为例,第一CPU核心是Core0,处于睡眠状态的第二CPU核心包括Core1、Core9和Core57。当Core0访问完成并释放临界资源后,分配计算Core0与Core1、Core9和Core57之间的距离。针对Core0和Core1,首先可以判断出两个CPU核心都属于同一个核心集群0,可以确定Core0与Core1之间的距离最小。针对Core0和Core9,依次可以判断出两个CPU核心不属于同一个核心集群以及同一个Die,当该两个CPU核心所属的Die在同一个封装CPU中,可以确定Core0和Core9之间的距离次之。针对Core0和Core57,依次可以判断出两个CPU核心不属于同一个核心集群,也不属于同一个Die,还不属于同一个封装CPU,即,该两个CPU核心分别属于封装CPU0和封装CPU1,则可以确定Core0和Core57之间的距离最大。
在一个示例中,在临界资源被释放时,在当前释放临界资源的已访问计算单元处,针对已访问计算单元被分配的第一CPU核心与各个待唤醒计算单元被分配的第二CPU核心,根据该第一CPU核心的归属信息以及该第二CPU核心的归属信息,确定第一CPU核心与该第二CPU核心之间的相对位置关系。
在该示例中,相对位置关系是在物理结构层上的位置关系,在一个示例中,相对位置关系可以用所属的核心集群、所属的Die、所属的封装CPU等所属的物理归属关系来表示。以图2为例,Core0与Core1之间的相对位置关系是属于同一个核心集群,Core0和Core9之间的相对位置关系是属于不同的Die但属于同一个封装CPU,Core0和Core57之间的相对位置关系是属于不同的封装CPU。
在确定相对位置关系的一种方式中,可以将每个CPU核心的归属信息中的属于同一物理结构层次上的归属信息进行对应比较,从而可以确定出CPU核心在该物理结构层次上的所属关系。物理结构层次可以包括核心集群、Die、封装CPU和NUMA节点等,针对核心集群的物理结构层次,可以将各个CPU核心的归属信息中的核心集群标识进行比较,以确定该两个CPU核心是否属于同一个核心集群。针对Die的物理结构层次,可以将各个CPU核心的归属信息中的Die标识进行比较,以确定该两个CPU核心是否属于同一Die。针对封装CPU的物理结构层次,可以将各个CPU核心的归属信息中的封装CPU标识进行比较,以确定该两个CPU核心是否属于同一封装CPU。针对NUMA节点的物理结构层次,可以将各个CPU核心的归属信息中的NUMA节点标识进行比较,以确定该两个CPU核心是否属于同一NUMA节点。
在一个示例中,可以按照物理结构层次从低到高的顺序依次进行比较,低层次的物理结构被包含在高层次的物理结构中,比如,Die被包含在封装CPU中,从而物理结构Die的层次低于物理结构封装CPU。
在该示例中,针对两个CPU核心在各个物理结构层次上的比较,当该物理结构层次对应的归属信息中的标识相同时,可以确定该两个CPU核心都属于相同的该物理结构层次,则可以无需再比较比该物理结构层次更高的物理结构层次,可以确定该两个CPU核心在更高物理结构层次上属于相同的物理结构层次。这样,可以提高确定相对位置关系的效率。
例如,在确定两个CPU核心属于同一个Die后,可以确定该两个CPU核心属于同一个封装CPU,从而无需再比较该两个CPU核心的归属信息中的封装CPU标识是否相同,即,无需再比较该两个CPU核心是否属于同一的封装CPU。
在确定出相对位置关系后,可以根据所确定的相对位置关系以及各个计算单元所属的硬件装置之间的连接关系,确定第一CPU核心与该第二CPU核心之间的距离。
各个计算单元所属的硬件装置可以包括Die、封装CPU等。在一个示例中,在一个Die中,集成在该Die中且属于同一核心集群的各个CPU核心之间的相互连接,从而属于同一核心集群中的各个CPU核心之间距离相同。在一个示例中,同一个Die中的不同核心集群之间存在连接,从而属于同一Die中的不同核心集群的各个CPU核心之间距离相同,以图2为例,属于核心集群0中的各个CPU核心与属于核心集群1中的各个CPU核心之间的距离相同。
在一个示例中,同一个封装CPU中包括的各个Die之间相互连接,从而属于同一个封装CPU且属于不同Die的各个CPU核心之间距离相同。以图2为例,Die0、Die1、Die2和Die3两两之间连接,则Die0、Die1、Die2和Die3两两之间的距离相同,比如,Die0中的各个CPU核心与Die1中的各个CPU核心之间的距离相同。
在一个示例中,不同的封装CPU之间存在连接,不同的封装CPU通过各自集成的部分Die连接。以图2为例,封装CPU0和封装CPU1之间的连接包括Die0与Die6之间的连接、Die1与Die7之间的连接、Die2与Die4之间的连接以及Die3与Die5之间的连接。
在该示例中,由于封装CPU中的每个Die仅与其他封装CPU中的一个Die连接,而不是与其他封装CPU中的所有Die连接,则分属于两个封装CPU的两个Die之间的连接可以包括直接连接和间接连接,间接连接是指通过其他Die连接,以图4为例,Die1与Die7之间是直接连接,Die0与Die7之间是间接连接。基于此,直接连接的两个Die之间的距离小于间接连接的两个Die之间的距离。
回到图3,在确定出第一CPU核心与待唤醒的第二CPU核心之间的距离后,在123,在已访问计算单元处,将所确定的距离中的最短距离对应的待唤醒计算单元确定为目标计算单元。
回到图1,在确定出目标计算单元后,在130,在已访问计算单元处,可以唤醒目标计算单元,以使目标计算单元访问临界资源。
唤醒的方式可以包括向目标计算单元发送唤醒指令。当计算单元是CPU核心时,可以将唤醒指令直接发送给该CPU核心,CPU核心可以响应于该唤醒指令来访问临界资源。
当计算单元是vCPU时,在机器生成包括vCPU标识的唤醒指令后,虚拟机管理器可以截获该唤醒指令,并基于唤醒指令中包括的vCPU标识来唤醒该vCPU。唤醒指定可以是指定的指令,比如,ARM WFE指令。
在一个示例中,虚拟机管理器在唤醒vCPU时,可以为该vCPU重新分配CPU核心,重新分配的CPU核心与之前分配给该vCPU的CPU核心相同。唤醒的vCPU通过重新分配的CPU核心来执行访问临界资源的操作。
在140,判断是否满足循环结束条件。如果不满足,则返回执行120的操作;如果满足,则结束按照就近唤醒的方式来唤醒计算单元。在不满足循环结束条件的情况下,当前被唤醒访问临界资源的计算单元成为下一循环中的当前释放临界资源的已访问计算单元。
在一个示例中,循环结束条件可以包括:竞争临界资源的所有计算单元均访问完成,和/或,访问临界资源的时长达到指定时长阈值等。
当循环结束条件是竞争临界资源的所有计算单元均访问完成时,当满足循环结束条件,表示竞争临界资源的所有计算单元均访问完成,此时可以结束唤醒操作。当循环结束条件是访问临界资源的时长达到指定时长阈值时,在一种情况下,当达到指定时长阈值时,竞争临界资源的所有计算单元均访问完临界资源,则可以结束唤醒操作。在另一种情况下,当达到指定时长阈值时,只有部分计算单元访问完临界资源,而另一部分计算单元还处于睡眠状态,此时结束按照就近唤醒方式来唤醒另一部分处于睡眠状态的计算单元,可以采用其他方式来唤醒另一部分处于睡眠状态的计算单元。
在一个示例中,在当前访问临界资源的计算单元处,在访问临界资源的时长达到指定时长阈值且竞争该临界资源的部分计算单元还未访问时,该部分未访问的计算单元处于睡眠状态。此时,可以向该部分计算单元广播唤醒指令,以使该部分计算单元恢复工作状态,并竞争该临界资源。通过该示例,可以避免后续未被唤醒的计算单元的等待时间过长。
图4示出了根据本说明书的另一实施例的用于就近唤醒CPU核心的方法的一个示例400的流程图。
图4所示的方法可以应用于与其他多个计算单元竞争同一临界资源的一个计算单元,处于工作状态的计算单元当前可以访问临界资源,其他多个计算单元执行睡眠指令进入睡眠状态。
如图4所示,在410,在访问完临界资源后,释放该临界资源。
在420,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与计算单元距离最近的待唤醒计算单元,作为目标计算单元。
在430,唤醒目标计算单元,以使目标计算单元访问临界资源。
在该实施例中的410、420和430的操作可以参考上述实施例中的说明,在此不再赘述。
在一个示例中,在临界资源被释放时,根据睡眠计算单元信息表确定当前释放临界资源的已访问计算单元被分配的第一CPU核心与处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心之间的距离,其中,睡眠计算单元信息表用于记录处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心对应的核心标识以及归属信息;以及将所确定的距离中的最短距离对应的待唤醒计算单元确定为目标计算单元。
在一个示例中,在临界资源被释放时,针对已访问计算单元被分配的第一CPU核心与各个待唤醒计算单元被分配的第二CPU核心,根据第一CPU核心的归属信息以及该第二CPU核心的归属信息,确定第一CPU核心与该第二CPU核心之间的相对位置关系;以及根据所确定的相对位置关系以及各个计算单元所属的硬件装置之间的连接关系,确定第一CPU核心与该第二CPU核心之间的距离。
在一个示例中,可以将执行睡眠指令的计算单元被分配的CPU核心对应的核心标识以及归属信息记录在睡眠计算单元信息表中。
在一个示例中,在访问临界资源的时长达到指定时长阈值且竞争临界资源的部分计算单元未访问时,向部分计算单元广播唤醒指令,以使部分计算单元竞争临界资源。
图5示出了根据本说明书实施例的用于就近唤醒CPU核心的装置(以下称为CPU核心唤醒装置500)的一个示例的方框图。
CPU核心唤醒装置500可以应用于与其他多个计算单元竞争同一临界资源的一个计算单元,处于工作状态的计算单元当前访问临界资源,其他多个计算单元执行睡眠指令进入睡眠状态。
如图5所示,CPU核心唤醒装置500包括资源释放模块510、计算单元确定模块520和计算单元唤醒模块530。
资源释放模块510,可以被配置为在访问完临界资源后,释放临界资源。
计算单元确定模块520,可以被配置为在临界资源被释放时,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与该计算单元(即,自身)距离最近的待唤醒计算单元,作为目标计算单元。
在一个示例中,计算单元确定模块520还可以被配置为:在临界资源被释放时,根据睡眠计算单元信息表确定当前释放临界资源的已访问计算单元被分配的第一CPU核心与处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心之间的距离,其中,睡眠计算单元信息表用于记录处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心对应的核心标识以及归属信息;以及将所确定的距离中的最短距离对应的待唤醒计算单元确定为目标计算单元。
在一个示例中,计算单元确定模块520还可以被配置为:在临界资源被释放时,针对已访问计算单元被分配的第一CPU核心与各个待唤醒计算单元被分配的第二CPU核心,根据第一CPU核心的归属信息以及该第二CPU核心的归属信息,确定第一CPU核心与该第二CPU核心之间的相对位置关系;以及根据所确定的相对位置关系以及各个计算单元所属的硬件装置之间的连接关系,确定第一CPU核心与该第二CPU核心之间的距离。
计算单元唤醒模块530,可以被配置为唤醒目标计算单元,以使目标计算单元可以访问临界资源。
在一个示例中,CPU核心唤醒装置500还可以包括唤醒指令广播模块,该唤醒指令广播模块被配置为:在访问临界资源的时长达到指定时长阈值且竞争该临界资源的部分计算单元未访问时,向该部分计算单元广播唤醒指令,以使该部分计算单元竞争临界资源。
在一个示例中,CPU核心唤醒装置500还可以包括信息记录模块,信息记录模块可以被配置为:将执行睡眠指令的计算单元被分配的CPU核心对应的核心标识以及归属信息记录在睡眠计算单元信息表中。
以上参照图1到图5,对根据本说明书实施例的用于就近唤醒CPU核心的方法及装置的实施例进行了描述。
本说明书实施例的用于就近唤醒CPU核心的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书实施例中,用于就近唤醒CPU核心的装置例如可以利用电子设备实现。
图6示出了本说明书实施例的用于实现CPU核心就近唤醒方法的电子设备600的方框图。
如图6所示,电子设备600可以包括至少一个处理器610、存储器(例如,非易失性存储器)620、内存630和通信接口640,并且至少一个处理器610、存储器620、内存630和通信接口640经由总线650连接在一起。至少一个处理器610执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器610:当存在多个计算单元竞争同一个临界资源时,多个计算单元中除当前访问临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态,每个计算单元被分配至少一个CPU核心;执行以下循环操作,直至满足循环结束条件:在临界资源被释放时,在当前释放临界资源的已访问计算单元处,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与该已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及在该已访问计算单元处,唤醒目标计算单元,以使目标计算单元访问临界资源。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器610进行本说明书的各个实施例中以上结合图1-5描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-5描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
本说明书各部分操作所需的计算机程序代码可以用任意一种或多种程序语言编写,包括面向对象编程语言,如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB、NET以及Python等,常规程序化编程语言如C语言、Visual Basic 2003、Per1、COBOL 2002、PHP以及ABAP,动态编程语言如Python、Ruby和Groovy,或者其他编程语言等。该程序编码可以在用户计算机上运行,或者作为独立的软件包在用户计算机上运行,或者部分在用户计算机上运行另一部分在远程计算机运行,或者全部在远程计算机或服务器上运行。在后一种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或者在云计算环境中,或者作为服务使用,比如软件即服务(SaaS)。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

Claims (14)

1.一种用于就近唤醒CPU核心的方法,包括:
当存在多个计算单元竞争同一个临界资源时,所述多个计算单元中除当前访问所述临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态,每个计算单元被分配至少一个CPU核心;
执行以下循环操作,直至满足循环结束条件:
在所述临界资源被释放时,在当前释放所述临界资源的已访问计算单元处,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及
在所述已访问计算单元处,唤醒所述目标计算单元,以使所述目标计算单元访问所述临界资源。
2.如权利要求1所述的方法,其中,在所述临界资源被释放时,在当前释放所述临界资源的已访问计算单元处,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述已访问计算单元距离最近的待唤醒计算单元,作为目标计算单元包括:
在所述临界资源被释放时,在当前释放所述临界资源的已访问计算单元处,根据睡眠计算单元信息表确定当前释放所述临界资源的已访问计算单元被分配的第一CPU核心与处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心之间的距离,其中,所述睡眠计算单元信息表用于记录处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心对应的核心标识以及归属信息;以及
在所述已访问计算单元处,将所确定的距离中的最短距离对应的待唤醒计算单元确定为目标计算单元。
3.如权利要求2所述的方法,其中,各个CPU核心对应的归属信息包括该CPU核心所属核心集群对应的核心集群标识、该CPU核心所属Die对应的Die标识、该CPU核心所属封装CPU的封装CPU标识以及该CPU核心所属NUMA节点对应的NUMA节点标识中的至少一种。
4.如权利要求3所述的方法,其中,CPU核心之间的距离根据以下归属信息序列中的至少一个序列所确定:
核心集群标识、Die标识以及封装CPU标识;
核心集群标识、Die标识、封装CPU标识以及NUMA节点标识;和
核心集群标识、Die标识、NUMA节点标识以及封装CPU标识。
5.如权利要求4所述的方法,其中,在所述临界资源被释放时,在当前释放所述临界资源的已访问计算单元处,根据睡眠计算单元信息表确定当前释放所述临界资源的已访问计算单元被分配的第一CPU核心与处于睡眠状态的各个待唤醒计算单元被分配的第二CPU核心之间的距离包括:
在所述临界资源被释放时,在当前释放所述临界资源的已访问计算单元处,针对所述已访问计算单元被分配的第一CPU核心与各个待唤醒计算单元被分配的第二CPU核心,根据所述第一CPU核心的归属信息以及该第二CPU核心的归属信息,确定所述第一CPU核心与该第二CPU核心之间的相对位置关系;以及
在所述已访问计算单元处,根据所确定的相对位置关系以及所述各个计算单元所属的硬件装置之间的连接关系,确定所述第一CPU核心与该第二CPU核心之间的距离。
6.如权利要求1所述的方法,其中,所述多个计算单元中除当前访问临界资源的计算单元以外的其他待访问的计算单元执行睡眠指令以进入睡眠状态之后,所述方法还包括:
在当前访问临界资源的计算单元处,将执行所述睡眠指令的计算单元被分配的CPU核心对应的核心标识以及归属信息记录在睡眠计算单元信息表中。
7.如权利要求1所述的方法,其中,所述计算单元包括CPU核心或者vCPU。
8.如权利要求1所述的方法,其中,所述循环结束条件包括:
竞争所述临界资源的所有计算单元均访问完成;和/或
访问所述临界资源的时长达到指定时长阈值。
9.如权利要求8所述的方法,其中,所述循环结束条件包括访问所述临界资源的时长达到所述指定时长阈值,所述方法还包括:
在当前访问临界资源的计算单元处,在访问所述临界资源的时长达到所述指定时长阈值且竞争所述临界资源的部分计算单元未访问时,向所述部分计算单元广播唤醒指令,以使所述部分计算单元竞争所述临界资源。
10.一种用于就近唤醒CPU核心的方法,所述方法应用于与其他多个计算单元竞争同一临界资源的一个计算单元,处于工作状态的所述计算单元当前访问所述临界资源,所述其他多个计算单元执行睡眠指令进入睡眠状态,
所述方法包括:
在访问完所述临界资源后,释放所述临界资源;
根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及
唤醒所述目标计算单元,以使所述目标计算单元访问所述临界资源。
11.一种用于就近唤醒CPU核心的装置,所述装置应用于与其他多个计算单元竞争同一临界资源的一个计算单元,处于工作状态的所述计算单元当前访问所述临界资源,所述其他多个计算单元执行睡眠指令进入睡眠状态,所述装置包括:
资源释放模块,在访问完所述临界资源后,释放所述临界资源;
计算单元确定模块,根据各个计算单元被分配的CPU核心之间的距离,从处于睡眠状态的待唤醒计算单元中确定出与所述计算单元距离最近的待唤醒计算单元,作为目标计算单元;以及
计算单元唤醒模块,唤醒所述目标计算单元,以使所述目标计算单元访问所述临界资源。
12.一种电子设备,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器上的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1-9中任一所述的方法或权利要求10所述的方法。
13.一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-9中任一所述的方法或权利要求10所述的方法。
14.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如权利要求1-9中任一所述的方法或权利要求10所述的方法。
CN202210132258.1A 2022-02-14 2022-02-14 用于就近唤醒cpu核心的方法及装置 Active CN114489823B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210132258.1A CN114489823B (zh) 2022-02-14 2022-02-14 用于就近唤醒cpu核心的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210132258.1A CN114489823B (zh) 2022-02-14 2022-02-14 用于就近唤醒cpu核心的方法及装置

Publications (2)

Publication Number Publication Date
CN114489823A true CN114489823A (zh) 2022-05-13
CN114489823B CN114489823B (zh) 2022-11-29

Family

ID=81480679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210132258.1A Active CN114489823B (zh) 2022-02-14 2022-02-14 用于就近唤醒cpu核心的方法及装置

Country Status (1)

Country Link
CN (1) CN114489823B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024007207A1 (en) * 2022-07-06 2024-01-11 Huawei Technologies Co., Ltd. Synchronization mechanism for inter process communication

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109075988A (zh) * 2016-03-31 2018-12-21 华为技术有限公司 任务调度和资源发放系统和方法
CN111475213A (zh) * 2020-04-03 2020-07-31 深圳忆联信息系统有限公司 多核结构固态硬盘的功耗降低方法、装置和计算机设备
CN112306699A (zh) * 2019-07-29 2021-02-02 华为技术有限公司 访问临界资源的方法及装置、计算机设备及可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109075988A (zh) * 2016-03-31 2018-12-21 华为技术有限公司 任务调度和资源发放系统和方法
CN112306699A (zh) * 2019-07-29 2021-02-02 华为技术有限公司 访问临界资源的方法及装置、计算机设备及可读存储介质
CN111475213A (zh) * 2020-04-03 2020-07-31 深圳忆联信息系统有限公司 多核结构固态硬盘的功耗降低方法、装置和计算机设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024007207A1 (en) * 2022-07-06 2024-01-11 Huawei Technologies Co., Ltd. Synchronization mechanism for inter process communication

Also Published As

Publication number Publication date
CN114489823B (zh) 2022-11-29

Similar Documents

Publication Publication Date Title
CN108509260B (zh) 线程识别处理方法、装置、计算机设备和存储介质
JP6947723B2 (ja) 競合の存在下での効率的なタスクスケジューリングのための方法
KR101029414B1 (ko) 프로세서 상태 천이를 검출하기 위해 제공되는 장치 및방법과 머신 액세스 가능 매체와 컴퓨팅 시스템
JP4568292B2 (ja) キャッシュライン・ポーリングを実行する方法、装置、プログラム及び情報処理システム
EP3472684B1 (en) Wake lock aware system wide job scheduling for energy efficiency on mobile devices
US20110265093A1 (en) Computer System and Program Product
JP2018534676A5 (zh)
JP4566264B2 (ja) 格納および予約命令を利用して関連アプリケーションと相互参照してキャッシュライン・ポーリングを行う方法、システム、装置、およびプログラム
JP2015516633A (ja) 装置、システム及びメモリ管理の方法
WO2021018011A1 (zh) 访问临界资源的方法及装置、计算机设备及可读存储介质
US20200371696A1 (en) Method, Apparatus, Device and Storage Medium for Managing Access Request
TWI743719B (zh) 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備
US9798591B2 (en) Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads
CN110580195B (zh) 一种基于内存热插拔的内存分配方法和装置
CN114489823B (zh) 用于就近唤醒cpu核心的方法及装置
CN111052094B (zh) 使用c状态和睿频加速提高用户空间的自旋锁效率
CN111475213A (zh) 多核结构固态硬盘的功耗降低方法、装置和计算机设备
CN105760294A (zh) 线程延迟的分析方法及装置
CN111459622B (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN115981833A (zh) 一种任务处理方法及装置
CN115794680A (zh) 一种基于硬件克隆技术的多核操作系统及其控制方法
WO2020150058A1 (en) Method, apparatus, and electronic device for improving cpu performance
CN112114967A (zh) 一种基于服务优先级的gpu资源预留方法
US20060095905A1 (en) Method and apparatus for servicing threads within a multi-processor system
CN115794450B (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
GR01 Patent grant
GR01 Patent grant