CN117539595A - 一种协同调度方法和相关设备 - Google Patents
一种协同调度方法和相关设备 Download PDFInfo
- Publication number
- CN117539595A CN117539595A CN202210914711.4A CN202210914711A CN117539595A CN 117539595 A CN117539595 A CN 117539595A CN 202210914711 A CN202210914711 A CN 202210914711A CN 117539595 A CN117539595 A CN 117539595A
- Authority
- CN
- China
- Prior art keywords
- processing unit
- power information
- information
- environment
- task
- 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 113
- 238000012545 processing Methods 0.000 claims abstract description 855
- 238000004364 calculation method Methods 0.000 claims abstract description 182
- 230000008878 coupling Effects 0.000 claims description 8
- 238000010168 coupling process Methods 0.000 claims description 8
- 238000005859 coupling reaction Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 20
- 230000007704 transition Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 230000005012 migration Effects 0.000 description 9
- 238000013508 migration Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004148 unit process Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/54—Interprogram communication
-
- 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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Power Sources (AREA)
Abstract
本申请实施例提供了一种协同调度方法和相关设备。该方法包括:通过第一运行环境中的第一接口接收第一信息,第一信息包括第一任务的算力信息;在第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,在第一运行环境中,根据第一任务的算力信息确定第二处理单元;在第一运行环境中,通过第二处理单元运行第一处理单元。其中,第一处理单元用于在第二运行环境中运行第一任务。该方法可以实时的在第一运行环境和第二运行环境中同步第二运行环境中的算力需求,从而可以较为快速准确地对第一运行环境与第二运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
Description
技术领域
本申请实施例涉及计算机领域,并且更具体地,涉及一种协同调度的方法、计算装置、计算设备、芯片***和计算机可读存储介质。
背景技术
随着云与互联网场景数据的***性增长,非结构化数据的比例大幅上升,计算设备中上层应用的业务特征也随之发生变化。目前计算设备中的主流负载特征从中央处理器(central processing unit,CPU)密集型演变为输入输出(input output,IO)密集型。随着应用的业务特征的变化,在计算设备中,异构众核的处理器架构成为了主流。异构众核的处理器架构可以通过非一致性内存访问(non-uniform memory access,NUMA)实现处理器算力的大幅横向扩展,还可以通过大小核非对称多处理器(asymmetric multi-processing,AMP)架构面向不同的应用场景,从而进一步提升计算设备的算力。NUMA技术可以使计算设备的多个处理器(例如CPU)中的每个处理器均可以快速地访问部分内存,从而提升处理器访问内存的速度。大小核AMP技术可以将计算设备中的部分处理器(大核)用于应对计算密集型任务,并将部分处理器(小核)用于处理轻量型任务,从而为计算设备提供优秀的能效比。
在虚拟化场景下,计算设备中一般存在多种运行环境,例如第一运行环境(例如物理运行环境)和第二运行环境(例如虚拟运行环境)。目前可以通过统计第二运行环境中的第一处理单元(例如虚拟处理器)在每个时钟周期内可以执行的指令数(instruction perclock,IPC)和第一处理单元的利用率的乘积,并根据该乘积确定是否需要将该第一处理单元从第一运行环境中的第三处理单元(例如物理小核处理器)迁移至第一运行环境中的第二处理单元(例如物理大核处理器)中运行。但该方法通过第一处理单元的历史数据预测第一处理单元的实际算力需求,存在预测误差,容易出错。或者,目前还可以通过静态配置的方法将第二运行环境中的第一处理单元(例如虚拟小核处理器)固定在第一运行环境中的第三处理单元(例如物理小核处理器)中运行,并将第二运行环境中的第四处理单元(例如虚拟大核处理器)固定在第一运行环境中的第二处理单元(例如物理大核处理器)中运行。但该方法在第一处理单元或第四处理单元的运行过程中,无法更改第一处理单元或第四处理单元的调度配置,因此无法在第一处理单元或第四处理单元中线程的算力需求变更时进行及时的调度调整。也就是说,上述方法均无法实时地在第一运行环境中确定第二运行环境中的算力需求,无法快速准确地对第一运行环境或第二运行环境中的处理单元进行调度,从而无法使第二运行环境中的线程可以在合适算力的处理单元中运行,不能发挥计算设备中硬件的最大计算能效。
因此,如何在第一运行环境中实时地确定第二运行环境中的算力需求,从而较为快速准确地对第一运行环境或第二运行环境中的处理单元进行调度成为亟待解决的问题。
发明内容
本申请实施例提供一种协同调度的方法、计算装置、计算设备、芯片***和计算机可读存储介质,可以实时地在第一运行环境和第二运行环境中同步第二运行环境中的算力需求,从而可以较为快速准确地对第一运行环境或第二运行环境中的处理单元进行协同调度,进而可以有效提升计算设备的计算性能。
第一方面,提供了一种协同调度方法。该方法包括:通过第一运行环境中的第一接口接收第一信息;在第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,在第一运行环境中,根据第一任务的算力信息确定第二处理单元;在第一运行环境中,通过第二处理单元运行第一处理单元。
其中,第一信息包括第一任务的算力信息。第一任务为第二运行环境中的第一处理单元中待运行的任务,第一任务的算力信息用于指示运行第一任务的处理单元的最小算力。第一处理单元的算力信息根据第三处理单元的算力信息确定,第三处理单元用于在第一运行环境中运行第一处理单元。
本申请实施例中,计算设备可以通过第一接口,实时地将第二运行环境中任务的算力信息传递至第一运行环境中,从而便于计算设备在第一运行环境中调度处理单元,进而满足第二运行环境中的算力需求。通过本申请实施例中的方法,计算设备可以实时地在第一运行环境和第二运行环境中同步第二运行环境中的算力需求,从而可以较为快速准确地对第一运行环境与第二运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
结合第一方面,在第一方面的某些实现方式中,第一接口包括超级调用hypercall接口。
本申请实施例中,计算设备可以通过hypercall接口,将第二运行环境中的任务的算力信息传递至第一运行环境中,从而便于计算设备根据第二运行环境中的算力需求,对第一运行环境和第二运行环境中的处理单元进行协同调度。
结合第一方面,在第一方面的某些实现方式中,在第二运行环境中,确定第一任务的算力信息和第一处理单元的算力信息不匹配;在第二运行环境中,调用第一接口,从第二运行环境转换为第一运行环境。
本申请实施例中,计算设备可以在确定第一任务的算力信息与第一处理单元的算力信息不匹配时,通过第一接口,将第一任务的算力信息传递至第一运行环境中,即实现第一任务的算力信息的透传通道。通过本申请实施例的方法,可以避免计算设备在第一运行环境与第二运行环境之间的频繁转换,从而避免转换导致的性能损耗。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:在第一运行环境中,根据第二处理单元的算力信息,更新第一处理单元的算力信息。
本申请实施例中可以根据目前运行第一处理单元的第二处理单元,更新第一处理单元的算力信息,从而便于计算设备可以及时的在第一运行环境和第二运行环境中同步第一处理单元的算力信息。
结合第一方面,在第一方面的某些实现方式中,第一处理单元的算力信息存储在共享内存中,共享内存由运行在第一运行环境或第二运行环境中的计算设备访问。
本申请实施例中,通过在计算设备中设置共享内存,从而使得计算设备无论在第一运行环境还是第二运行环境中,均可以访问该共享内存,进而可以获得第二运行环境中的第一处理单元的算力信息。
结合第一方面,在第一方面的某些实现方式中,共享内存包括模型特定MSR寄存器或***寄存器。
本申请实施例中,可以通过MSR寄存器或***寄存器实现共享内存的功能,从而使得计算设备可以通过该MSR寄存器或***寄存器在第一运行环境或第二运行环境中均可以获得第一处理单元的算力信息。
结合第一方面,在第一方面的某些实现方式中,根据第二运行环境中的第二接口,获得第一处理单元的第一算力信息;在第一处理单元的第二算力信息与第一算力信息不匹配的情况下,在第二运行环境中,根据第二任务的算力信息和第一算力信息确定第四处理单元;在第二运行环境中,通过第四处理单元运行第二任务。
其中,第一处理单元的第一算力信息根据第二处理单元的算力信息确定。第二算力信息根据第三处理单元的算力信息确定。第二任务为第一处理单元中待运行的任务。
本申请实施例中,计算设备可以通过第二接口,实时地将第一运行环境或第二运行环境中的处理单元已被重新调度的信息传递至第二运行环境中,从而便于在第二运行环境中及时地对线程进行调度。通过本申请实施例中的方法,计算设备可以实时地在第一运行环境和第二运行环境中同步处理单元的算力信息,从而可以较为快速准确地对第一运行环境与第二运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
结合第一方面,在第一方面的某些实现方式中,第二接口包括虚拟中断或虚拟高级配置和电源管理接口ACPI事件,虚拟中断或虚拟ACPI事件用于指示第一处理单元的算力信息已更新。
本申请实施例中,计算设备可以通过虚拟中断或虚拟ACPI事件,将第一处理单元的算力信息已更新的信息传递至第二运行环境中,从而便于计算设备在第二运行环境中确定是否需要对第一处理单元中待运行的部分线程进行重新调度,进而使得第二运行环境中的每个线程可以运行在具有合适算力的处理单元中。
结合第一方面,在第一方面的某些实现方式中,将第一算力信息更新至第二运行环境中的第一存储空间中。
本申请实施例中,计算设备可以在第二运行环境中的第一存储空间中存储第一处理单元的算力信息,还可以在第一处理单元的算力信息已更新的情况下,在第一存储空间中更新第一处理单元的算力信息。通过本申请实施例中的方法,计算设备可以在第二运行环境中,从第一存储空间中获得第一处理单元的算力信息,从而便于实时地确定第二运行环境中的算力需求是否满足,进而及时地进行调度。
结合第一方面,在第一方面的某些实现方式中,在第一运行环境中,确定第一算力信息与第二算力信息不匹配;在第一运行环境中,调用第二接口,从第一运行环境转换为第二运行环境。
本申请实施例中,计算设备可以在确定第一算力信息与第二算力信息不匹配时,通过第二接口,将第一处理单元的算力信息已被更新的信息传递至第二运行环境中,即实现算力信息更新的通知通道。通过本申请实施例的方法,可以避免计算设备在第一运行环境与第二运行环境之间的频繁转换,从而避免转换导致的性能损耗。
结合第一方面,在第一方面的某些实现方式中,第一算力信息和第二算力信息存储在共享内存中,共享内存由运行在第一运行环境或第二运行环境中的计算设备访问。
本申请实施例中,通过在计算设备中设置共享内存,从而使得计算设备可以及时地在该共享内存中更新第一处理单元的算力信息,即将第二算力信息更新为第一算力信息。通过本申请实施例中的方法,可以使得计算设备在第二运行环境中也可获得第一处理单元更新后的算力信息,进而可以及时地对第一处理单元中的部分线程进行重新调度。
结合第一方面,在第一方面的某些实现方式中,共享内存包括模型特定MSR寄存器或***寄存器。
本申请实施例中,可以通过MSR寄存器或***寄存器实现共享内存的功能,从而使得计算设备可以通过该MSR寄存器或***寄存器在第二运行环境中获得第一处理单元更新后的算力信息,即第一算力信息。
第二方面,提供了一种协同调度方法。该方法包括:根据第二运行环境中的第二接口,获得第一处理单元的第一算力信息;在第一处理单元的第二算力信息与第一算力信息不匹配的情况下,在第二运行环境中,根据第二任务的算力信息和第一算力信息确定第四处理单元;在第二运行环境中,通过第四处理单元运行第二任务。
其中,第一处理单元的第一算力信息根据第二处理单元的算力信息确定。第二算力信息根据第三处理单元的算力信息确定。第二任务为第一处理单元中待运行的任务。
本申请实施例中,计算设备可以通过第二接口,实时地将第一运行环境或第二运行环境中的处理单元已被重新调度的信息传递至第二运行环境中,从而便于在第二运行环境中及时地对线程进行调度。通过本申请实施例中的方法,计算设备可以实时地在第一运行环境和第二运行环境中同步处理单元的算力信息,从而可以较为快速准确地对第一运行环境与第二运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
结合第二方面,在第二方面的某些实现方式中,第二接口包括虚拟中断或虚拟高级配置和电源管理接口ACPI事件,虚拟中断或虚拟ACPI事件用于指示第一处理单元的算力信息已更新。
本申请实施例中,计算设备可以通过虚拟中断或虚拟ACPI事件,将第一处理单元的算力信息已更新的信息传递至第二运行环境中,从而便于计算设备在第二运行环境中确定是否需要对部分线程进行重新调度,进而使得第二运行环境中的每个线程可以运行在具有合适算力的处理单元中。
结合第二方面,在第二方面的某些实现方式中,将第一算力信息更新至第二运行环境中的第一存储空间中。
本申请实施例中,计算设备可以在第二运行环境中的第一存储空间中存储第一处理单元的算力信息,还可以在第一处理单元的算力信息已更新的情况下,在第一存储空间中更新第一处理单元的算力信息。通过本申请实施例中的方法,计算设备可以在第二运行环境中,从第一存储空间中获得第一处理单元的算力信息,从而便于实时地确定第二运行环境中的算力需求是否满足,进而及时地进行调度。
结合第二方面,在第二方面的某些实现方式中,在第一运行环境中,确定第一算力信息与第二算力信息不匹配;在第一运行环境中,调用第二接口,从第一运行环境转换为第二运行环境。
本申请实施例中,计算设备可以在确定第一算力信息与第二算力信息不匹配时,通过第二接口,将第一处理单元的算力信息已被更新的信息传递至第二运行环境中,即实现算力信息更新的通知通道。通过本申请实施例的方法,可以避免计算设备在第一运行环境与第二运行环境之间的频繁转换,从而避免转换导致的性能损耗。
结合第二方面,在第二方面的某些实现方式中,第一算力信息和第二算力信息存储在共享内存中,共享内存由运行在第一运行环境或第二运行环境中的计算设备访问。
本申请实施例中,通过在计算设备中设置共享内存,从而使得计算设备可以及时地在该共享内存中更新第一处理单元的算力信息,即将第二算力信息更新为第一算力信息。通过本申请实施例中的方法,可以使得计算设备在第二运行环境中也可获得第一处理单元更新后的算力信息,进而可以及时地对第一处理单元中的部分线程进行重新调度。
结合第二方面,在第二方面的某些实现方式中,共享内存包括模型特定MSR寄存器或***寄存器。
本申请实施例中,可以通过MSR寄存器或***寄存器实现共享内存的功能,从而使得计算设备可以通过该MSR寄存器或***寄存器在第二运行环境中获得第一处理单元更新后的算力信息,即第一算力信息。
第三方面,本申请实施例提供一种计算装置,该计算装置包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第四方面,本申请实施例提供一种计算装置,该计算装置包括用于实现第二方面或第二方面的任一种可能的实现方式的单元。
第五方面,本申请实施例提供一种计算机设备,该计算机设备包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式,或者执行第二方面或第二方面的任一种可能的实现方式。
第六方面,本申请实施例提供一种芯片***,该芯片***包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式,或者执行第二方面或第二方面的任一种可能的实现方式。
第七方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式,或者执行第二方面或第二方面的任一种可能的实现方式。
第八方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式,或者执行第二方面或第二方面的任一种可能的实现方式。
附图说明
图1是计算设备100的示意性框图。
图2是根据本申请一个实施例的协同调度方法的示意性***架构图。
图3是根据本申请一个实施例的协同调度方法的示意性流程图。
图4是根据本申请另一实施例的协同调度方法的示意性流程图。
图5是根据本申请另一实施例的协同调度方法的示意性流程图。
图6是根据本申请另一实施例的协同调度方法的示意性流程图。
图7是根据本申请一个实施例的计算装置的结构示意图。
图8是根据本申请另一实施例的计算装置的结构示意图。
图9是根据本申请一个实施例的计算设备的结构示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
本申请实施例的技术方案可以应用于各种具有异构众核的处理器架构的计算设备中,例如具有大小核AMP架构的计算设备等,本申请实施例对此并不限定。本申请实施例的技术方案还可以应用于具有各类处理器(processing unit,PU)异构计算平台的计算设备,例如具有智能处理器(intelligence processing unit,IPU)、深度学***台的计算设备等,本申请实施例对此并不限定。
为便于理解本申请实施例,首先对本申请中涉及的几个术语做简单说明。
1、物理计算设备
物理计算设备是指由实体的硬件设备构成、具有完整硬件***功能的、可以对数据进行计算或运行程序的计算设备。
2、物理处理单元
物理处理单元是实体的硬件设备,例如可以是物理中央处理器(physicalcentral processing unit,pCPU)或物理图形处理器(physical graphics processingunit,pGPU)等硬件,负责在物理计算设备中处理数据或运行程序等。每个物理计算设备中可以包括一个或多个物理处理单元。每个物理计算设备中的一个或多个物理处理单元中的每个物理处理单元的算力可以相同,或者也可以不同,本申请实施例对此并不限定。物理处理单元可以具有两种不同的运行模式。在一种运行模式下,物理处理单元可以运行该物理处理单元中的虚拟处理单元。在另一种运行模式下,物理处理单元可以运行物理运行环境中的进程或线程等。
3、物理运行环境
物理运行环境是指物理计算设备的运行环境。在物理运行环境中,物理计算设备可以直接通过物理处理单元实现数据的处理或程序的运行等功能。
4、虚拟计算设备(虚拟机)
虚拟计算设备是指通过软件模拟的具有完整硬件***功能的、运行在一个完全隔离环境中的完整计算机***。物理计算设备可以实现的功能在虚拟计算设备中均可以实现。虚拟计算设备依托于物理计算设备,即虚拟计算设备运行在物理计算设备中。在物理计算设备中创建虚拟计算设备时,需要将物理计算设备中的部分存储空间划分给虚拟计算设备使用,即将物理计算设备中的部分存储设备的容量作为虚拟计算设备的存储容量。每个物理计算设备中可以创建一个或多个虚拟计算设备,每个虚拟计算设备均具有各自独立的虚拟处理单元、存储空间和操作***。
5、虚拟处理单元
虚拟处理单元不是实体的硬件设备。虚拟处理单元负责虚拟计算设备中的数据计算和程序运行等功能。虚拟处理单元依托于物理处理单元,即虚拟处理单元运行在物理处理单元中。也就是说,在虚拟处理单元计算数据或运行程序时,实际是在运行该虚拟处理单元的物理处理单元中计算数据或运行程序。每个物理处理单元中可以包括一个或多个虚拟处理单元。每个虚拟计算设备中可以具有一个或多个虚拟处理单元。每个虚拟计算设备中的一个或多个虚拟处理单元中的每个虚拟处理单元的算力可以相同,或者也可以不同,本申请实施例对此并不限定。也就是说,每个虚拟计算设备中的多个处理单元可以执行对称多处理器(symmetric multi-processing,SMP)调度策略,或者每个虚拟计算设备中的多个虚拟处理单元可以执行AMP调度策略,本申请实施例对此并不限定。其中,SMP调度策略指的是根据对称多处理器(SMP)的处理单元算力相同的特点,对多个处理单元进行无差异的任务调度。AMP调度策略指的是根据非对称多处理器(AMP)的处理单元算力不同的特点,对于多个处理单元进行有差异的任务调度。
6、虚拟运行环境
虚拟运行环境是指虚拟计算设备的运行环境。在虚拟运行环境中,虚拟计算设备可以通过虚拟处理单元实现数据的处理或程序的运行等功能。
图1是计算设备100的示意性框图。计算设备100中主要包括第二运行环境110、第一运行环境120和硬件130。在一些实施例中,计算设备100中可以包括一个或多个第二运行环境110,下面以计算设备100中包括一个第二运行环境110为例进行说明。
第二运行环境110可以是虚拟运行环境。第二运行环境110中可以包括应用111、应用管理模块112和第二内核113。应用111可以是第二运行环境110中的上层应用,例如可以是各类通讯、娱乐等应用程序。应用管理模块112中可以对应用111中的各类应用的调度策略进行管理,例如可以设置或调整应用111中的各类应用的优先级或运行该应用所需的算力或计算资源等。第二内核113是第二运行环境110中的内核,负责管理第二运行环境110中的进程或线程调度、内存、文件、网络***和驱动程序。第二内核113中包括第二调度模块1131和第二驱动模块1132。第二调度模块1131可以负责管理第二运行环境110中的进程或线程调度。第二驱动模块1132中可以包括第二运行环境110中的处理器驱动(例如CPU驱动)和设备驱动。
第一运行环境120可以是物理运行环境。第一运行环境120中可以包括第一内核121。第一内核121是第一运行环境120中的内核,负责管理第一运行环境120中的进程或线程调度、内存、文件、网络***和驱动程序。第一内核121中包括第一调度模块1211和第一驱动模块1212。第一调度模块1211可以负责管理第一运行环境120中的进程或线程调度。第一驱动模块1212中可以包括第一运行环境120中的虚拟化驱动、处理器驱动(例如CPU驱动)和设备驱动。
硬件130中包括计算设备100的实体硬件。硬件130中可以包括大核131、小核132和存储设备133。其中,大核131可以是用于处理计算密集型任务的物理处理器,小核132可以是用于处理轻量型任务的物理处理器。存储设备133可以负责存储大核131或小核132运行过程中所需的数据或指令,还可以负责存储大核131或小核132的计算结果。
图2是根据本申请实施例提供的协同调度方法的示意性***架构图。图2中可以包括第二内核210和第一内核220。
图2中的第二内核210可以是图1中的第二运行环境110的第二内核113。第二内核210中可以包括第二调度模块211和第二驱动模块212。
第二调度模块211可以负责管理图1中的第二运行环境110中的任务调度。第二调度模块211中可以包括第二大小核调度模块2111。
应理解,第二运行环境中的任务可以包括第二运行环境中的进程或线程,下面以任务包括线程为例进行说明。还应理解,任务包括进程时的方法与任务包括线程时的方法类似,即任务包括进程时也可执行本申请实施例中的方法。
在一些实施例中,第二大小核调度模块2111可以实现第二运行环境110中的线程类型配置接口,提供配置线程或应用的调度策略的编程接口。
在一些实施例中,第二大小核调度模块2111可以获得图1中的应用管理模块112中的应用调度策略,并可以根据每个应用的应用调度策略,确定每个应用的每个线程的算力信息,即确定运行每个线程所需的算力,或者说确定每个线程的算力需求。每个应用可以包括一个或多个线程。也就是说,第二大小核调度模块2111可以确定负责运行每个线程的处理单元应该满足的计算速度或计算能力。第二大小核调度模块2111还可以将每个线程的算力信息传递给第二协同调度模块2121。第二大小核调度模块2111还可以存储每个线程的算力信息。
例如,第二大小核调度模块2111可以根据第一处理单元中待运行的第一应用的调度策略,确定第一应用的第一线程的算力信息。第二大小核调度模块2111还可以将第一线程的算力信息传递给第二协同调度模块2121。第一处理单元为图1中的第二运行环境110中的处理单元。
在一些实施例中,第二大小核调度模块2111中还可以存储图1中的第二运行环境110中的一个或多个处理单元中每个处理单元的算力信息。并且,第二大小核调度模块2111还可以接收第二协同调度模块2121的第一通知信息,该第一通知信息中可以包括一个或多个处理单元更新后的算力信息。第二大小核调度模块2111可以根据该第一通知信息,更新存储的处理单元的算力信息。第二大小核调度模块2111还可以根据该处理单元中待运行的线程的算力信息和更新后的该处理单元的算力信息,对线程进行调度和迁移,使得每个线程可以在满足该线程的算力需求的处理单元中运行。
例如,第二大小核调度模块2111可以存储第一处理单元的第二算力信息和第四处理单元的第二算力信息。该第四处理单元为图1中的第二运行环境110中的处理单元。第二大小核调度模块2111可以接收第一处理单元的第一算力信息。该第一算力信息为第一处理单元更新后的算力信息。第二大小核调度模块2111可以将已存储的第一处理单元的第二算力信息更新为第一算力信息,并根据第二线程的算力信息和该第一算力信息,确定第四处理单元。该第二线程为第一处理单元中待运行的线程。在第二线程的算力信息和第一算力信息匹配的情况下,该第四处理单元与第一处理单元相同。在第二线程的算力信息和第一算力信息不匹配的情况下,该第四处理单元与第一处理单元不同,并且该第四处理单元的第二算力信息与第二线程的算力信息匹配。在第四处理单元与第一处理单元不同的情况下,第二大小核调度模块2111可以将第二线程迁移至第四处理单元中运行。
在一些实施例中,第二大小核调度模块2111还可以进行负载均衡处理,即在满足每个线程的算力需求的基础上,为每个线程重新分配或调整运行该线程的处理单元,从而使图1中的第二运行环境110中的负载可以达到均衡。
第二驱动模块212可以包括图1中的第二运行环境110中的处理器驱动和设备驱动。第二驱动模块212中可以包括第二协同调度模块2121。
在一些实施例中,第二协同调度模块2121可以接收第二大小核调度模块2111传递的每个线程的算力信息,并可以从共享内存中获得运行每个线程的处理单元的算力信息。第二协同调度模块2121还可以确定每个线程的算力信息和运行每个线程的处理单元的算力信息是否匹配。在确定每个线程的算力信息和运行每个线程的处理单元的算力信息匹配的情况下,第二协同调度模块2121可以驱动该处理单元运行该线程。在确定每个线程的算力信息和运行每个线程的处理单元的算力信息不匹配的情况下,第二协同调度模块2121可以调用第一接口,将计算设备从第二运行环境110转换至第一运行环境120,从而使计算设备可以调度第一运行环境120或第二运行环境110中的处理单元,使得每个线程的算力需求可以被满足。第二协同调度模块2121还可以将线程的算力需求作为参数携带在第一接口中。
例如,第二协同调度模块2121可以接收来自于第二大小核调度模块2111的第一线程的算力信息,并可以从共享内存中获得第一处理单元的算力信息。该第一处理单元的算力信息根据第三处理单元的算力信息确定。该第三处理单元为图1中的第一运行环境120中实际运行该第一处理单元的处理单元。第二协同调度模块2121还可以确定第一线程的算力信息与第一处理单元的算力信息是否匹配。在确定第一线程的算力信息与第一处理单元的算力信息匹配的情况下,第二协同调度模块2121可以驱动第一处理单元运行该第一线程。在确定第一线程的算力信息与第一处理单元的算力信息不匹配的情况下,第二协同调度模块2121可以调用第一接口,使计算设备从图1中的第二运行环境110转换为第一运行环境120。并且,第一接口中可以包括第一信息,该第一信息包括第一线程的算力信息。
在一些实施例中,第二协同调度模块2121可以根据第二接口,从共享内存中读取图1中的第二运行环境110中每个处理单元更新后的算力信息。第二协同调度模块2121还可以向第二大小核调度模块2111发送第一通知信息。该第一通知信息中包括处理单元更新后的算力信息。该第一通知信息可以用于通知第二大小核调度模块2111更新处理单元的算力信息,还可以用于通知第二大小核调度模块2111进行线程的调度和迁移。
例如,第二协同调度模块2121可以根据第二接口,从共享内存中读取第一处理单元的第一算力信息。第二协同调度模块2121还可以向第二大小核调度模块2111发送第一通知信息。该第一通知信息中包括第一处理单元的第一算力信息。
在一些实施例中,第二协同调度模块2121可以在获得处理单元更新的算力信息后,确定每个处理单元中待运行的线程的算力信息与该处理单元更新后的算力信息是否匹配。在确定每个处理单元中待运行的线程的算力信息与该处理单元更新后的算力信息匹配的情况下,第二协同调度模块2121可以驱动该处理单元运行该线程。在确定每个处理单元中待运行的线程的算力信息与该处理单元更新后的算力信息不匹配的情况下,第二协同调度模块2121可以向第二大小核调度模块2111发送第一通知信息。该第一通知信息中包括处理单元更新后的算力信息。该第一通知信息用于通知第二大小核调度模块2111更新处理单元的算力信息,还可以用于通知第二大小核调度模块2111进行线程的调度和迁移。
例如,第二协同调度模块2121可以确定第二线程的算力信息与第一处理单元的第一算力信息是否匹配。该第二线程为第一处理单元中待运行的线程。在确定第二线程的算力信息与第一处理单元的第一算力信息匹配的情况下,第二协同调度模块2121可以驱动第一处理单元运行该第二线程。在确定第二线程的算力信息与第一处理单元的第一算力信息不匹配的情况下,第二协同调度模块2121可以向第二大小核调度模块2111发送第一通知信息。该第一通知信息包括第一处理单元的第一算力信息,即第一处理单元更新后的算力信息。
图2中的第一内核220可以是图1中的第一运行环境120的第一内核121。第一内核220中可以包括第一调度模块221和第一驱动模块222。
第一调度模块221可以负责管理图1中的第一运行环境120中的进程和线程调度。第一调度模块221中可以包括第一大小核调度模块2211。
在一些实施例中,第一大小核调度模块2211可以负责在第一运行环境120中调度第二运行环境110中的处理单元在硬件130的大核131或小核132上的调度运行。
在一些实施例中,第一大小核调度模块2211可以接收来自于第一协同调度模块2221的第二通知信息,该第二通知信息中包括第二运行环境110中的线程的算力信息。第一大小核调度模块2211中可以存储第二运行环境110中每个处理单元的算力信息。第一大小核调度模块2211中还可以存储第二运行环境110中每个处理单元待运行的每个线程的算力信息。第一大小核调度模块2211还可以根据每个线程的算力信息,在第一运行环境120中确定可以运行该线程的处理单元。该处理单元可以运行第二运行环境110中运行该线程的处理单元。
例如,第一大小核调度模块2211可以接收来自于第一协同调度模块2221的第二通知信息,该第二通知信息中包括第一处理单元中第一线程的算力信息。该第一处理单元为第二运行环境110中的处理单元。第一大小核调度模块2211中可以存储该第一处理单元的算力信息。第一大小核调度模块2211中还可以存储该第一线程的算力信息。第一大小核调度模块2211可以根据第一线程的算力信息,确定第一运行环境120中的第二处理单元。该第二处理单元可以用于运行第一处理单元,并且该第二处理单元的算力信息与第一线程的算力信息匹配。也就是说,第一大小核调度模块2211可以将第一处理单元从第三处理单元迁移至第二处理单元中运行,从而使得第一处理单元在运行第一线程时可以满足第一线程的算力需求。
在一些实施例中,第一大小核调度模块2211可以在接收到来自于第一协同调度模块2221的第二通知信息后,确定第二通知信息中所包括线程的算力信息与即将运行该线程的处理单元的算力信息是否匹配。若线程的算力信息与即将运行该线程的处理单元的算力信息匹配,则计算设备可以执行进入操作,从第一运行环境120转换为第二运行环境110,从而在第二运行环境110中运行该线程。若线程的算力信息与即将运行该线程的处理单元的算力信息不匹配,则第一大小核调度模块2211可以根据每个线程的算力信息,在第一运行环境120中确定可以满足该线程的算力需求的处理单元。
例如,第一大小核调度模块2211可以在接收到来自于第一协同调度模块2221的第二通知信息后,确定第一线程的算力信息与第一处理单元的算力信息是否匹配。若第一线程与第一处理单元的算力信息匹配,则计算设备可以执行进入操作,从第一运行环境120转换为第二运行环境110。若第一线程与第一处理单元的算力信息不匹配,则第一大小核调度模块2211可以根据第一线程的算力信息,确定第二处理单元,并将第一处理单元迁移至第二处理单元中运行。
在一些实施例中,第一大小核调度模块2211可以将第二运行环境110中的处理单元从第一运行环境120中的一个处理单元迁移至另一个处理单元中运行。第一大小核调度模块2211还可以确定第二运行环境110中的处理单元更新后的算力信息与更新前的算力信息是否匹配。第二运行环境110中的处理单元更新后的算力信息可以根据迁移后的第一运行环境120中的处理单元确定。第二运行环境110中的处理单元更新前的算力信息可以根据迁移前的第一运行环境120中的处理单元确定。若确定第二运行环境110中的处理单元更新后的算力信息与更新前的算力信息匹配,则可以在迁移后的第一运行环境120中的处理单元中运行该第二运行环境110中的处理单元。若确定第二运行环境110中的处理单元更新后的算力信息与更新前的算力信息不匹配,则可以向第一协同调度模块2221发送第三通知信息。该第三通知信息中包括第二运行环境110中的处理单元更新后的算力信息。
例如,第一大小核调度模块2211可以将第一处理单元从第三处理单元迁移至第二处理单元中运行。该第三处理单元和第二处理单元为第一运行环境120中的处理单元。第一大小核调度模块2211可以确定第一处理单元的第一算力信息和第二算力信息是否匹配。第一处理单元的第一算力信息根据第二处理单元的算力信息确定。第一处理单元的第二算力信息根据第三处理单元的算力信息确定。若第一处理单元的第一算力信息和第二算力信息匹配,则可以在第三处理单元中运行第一处理单元。若第一处理单元的第一算力信息和第二算力信息不匹配,则可以向第一协同调度模块2221发送第三通知信息。该第三通知信息中包括第一处理单元的第一算力信息。
第一驱动模块222可以包括图2中的第一运行环境120中的虚拟化驱动、处理器驱动和设备驱动。第一驱动模块222中可以包括第一协同调度模块2221。
在一些实施例中,第一协同调度模块2221可以通过第一接口接收第一信息,该第一信息包括第二运行环境110中的线程的算力信息。第一协同调度模块2221还可以向第一大小核调度模块2211发送第二通知信息。该第二通知信息中可以包括线程的算力信息。第一协同调度模块2221还可以在接收到来自于第一大小核调度模块2211的第三通知信息后,获得运行该线程的处理单元更新后的算力信息,并在共享内存中更新该处理单元的算力信息。
例如,第一协同调度模块2221可以根据第一接口,获得第一线程的算力信息。第一协同调度模块2221还可以向第一大小核调度模块2211发送该第一线程的算力信息。第一协同调度模块2221还可以在接收到来自于第一大小核调度模块2211的第三通知信息后,获得第一处理单元更新后的算力信息,并在共享内存中更新该第一处理单元的算力信息。
在一些实施例中,第一协同调度模块2221可以在接收到来自于第一大小核调度模块2211的第三通知信息后,调用第二接口,将计算设备从第一运行环境120转换为第二运行环境110。计算设备可以在转换为第二运行环境110后,进行线程的调度,从而使得第二运行环境110中的处理单元在执行每个线程时可以满足每个线程的算力需求。
可选地,该共享内存可以是模型特定(model-specific register,MSR)寄存器或***寄存器(systems registers),或者也可以是其他类型的共享存储设备,例如可以是随机存取存储器(random access memory,RAM)、动态随机存取存储器(dynamic randomaccess memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)等,本申请实施例对此并不限定。该共享内存可以被图2中的第二协同调度模块2121和第一协同调度模块2221访问。
可选地,第一接口可以是超级调用hypercall接口,或者也可以是其他类型的接口,本申请实施例对此并不限定。
可选地,第二接口可以包括虚拟中断或虚拟高级配置和电源管理接口(advancedconfiguration and power management interface,ACPI)事件,或者第二接口也可以是其他类型的接口,例如访问特殊存储设备或偏移地址的接口。或者,第二接口可以包括其他事件,本申请实施例对此并不限定。第二接口或第二接口中包括的事件可以用于指示第二运行环境中的处理单元的算力信息已更新。也就是说,虚拟中断或虚拟ACPI事件可以用于指示第一处理单元的算力信息已更新。
通过图2所示的***,可以在计算设备100的第一运行环境和第二运行环境中同步第二运行环境中的线程的算力信息,即在第一运行环境中实时地确定第二运行环境中的算力需求,从而可以较为快速准确地对第一运行环境与第二运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
图3是本申请实施例提供的协同调度方法的示意性流程图。图3中的方法包括如下步骤。
S310,通过第一运行环境中的第一接口接收第一信息。
计算设备可以在第一运行环境中,通过第一接口接收第一信息。其中,第一信息包括第一任务的算力信息。第一任务为第二运行环境中的第一处理单元中待运行的任务,第一任务的算力信息用于指示运行第一任务的处理单元的最小算力。
应理解,在第一运行环境为物理运行环境的情况下,第二运行环境可以为虚拟运行环境,第一处理单元为虚拟处理单元。并且,第一处理单元实际运行在第一运行环境中的第三处理单元中。第三处理单元为物理处理单元。
可选地,在步骤S310前,计算设备可以执行步骤S301或S302。
S301,在第二运行环境中,确定第一任务的算力信息。
可选地,第一任务可以包括第一进程或第一线程。第一进程为第二运行环境中的第一处理单元中待运行的进程。第一线程为第二运行环境中的第一处理单元中待运行的线程。下面以第一任务包括第一线程为例进行说明。
应理解,第一任务包括第一进程时的方法与第一任务包括第一线程时的方法类似,为表述简洁,不再赘述。
可选地,第一处理单元中待运行的第一线程的算力信息可以根据该第一线程所属的第一应用的调度策略确定。也就是说,计算设备可以在第二运行环境中,根据第一处理单元中待运行的第一应用的调度策略,确定第一线程的算力信息。该第一线程属于该第一应用。
在一些实施例中,在第二运行环境中可以包括一个或多个应用,每个应用可以包括一个或多个线程。第一应用为一个或多个应用中的任一个应用,第一线程为第一应用的一个或多个线程中的任一个线程。计算设备可以为每个应用设置相同或不同的调度策略。该调度策略可以包括应用的优先级、运行该应用所需的算力或计算资源等。根据每个应用的调度策略,计算设备可以确定每个应用的每个线程的算力信息,即确定运行每个线程所需的算力,或者说确定每个线程的算力需求。每个线程的算力信息可以是处理单元在运行该线程时需要满足的计算速度或计算能力,即每个线程的算力信息可以用于指示运行该线程的处理单元的最小算力。
可选地,第一线程的算力信息可以存储在第二运行环境中的第一存储空间中。该第一存储空间为计算设备创建第二运行环境时,为第二运行环境分配的存储空间。该第一存储空间是第一运行环境中的第二存储空间的部分或全部空间。
在一些实施例中,第一线程的算力信息可以存储在第二运行环境的第二内核的任务结构体中。例如,可以在第二内核的任务结构体中增加特征标识结构,用于存储第一线程的算力信息。
在一些实施例中,第一线程的算力信息可以通过第一预设数值范围中的数值表示。该第一预设数值范围例如可以是0至1,或者可以是0至256,或者可以是0至1024,本申请实施例对此并不限定。在第一预设数值范围为0至1024的情况下,第一线程的算力信息可以是0至1024中的任一个数值。表示第一线程的算力信息的数值越大,说明第一线程的算力需求越大。或者,表示第一线程的算力信息的数值越大,说明第一线程的算力需求越小,本申请实施例对此并不限定。
应理解,第一预设数值范围越大,则可以越准确地表示第一线程的算力信息。第一预设数值范围越小,则越无法准确地表示第一线程的算力信息。
S302,在第二运行环境中,确定第一任务的算力信息与第一处理单元的算力信息是否匹配。
可选地,在第二运行环境中,计算设备可以根据共享内存,获得第一处理单元的算力信息。也即,该共享内存中可以存储第一处理单元的算力信息。该共享内存可以由运行在第二运行环境或第一运行环境中的计算设备访问,即计算设备无论运行在第二运行环境中,还是运行在第一运行环境中,均可以访问该共享内存。
在一些实施例中,该共享内存可以是MSR寄存器或***寄存器,或者也可以是其他类型的共享存储设备,例如可以是RAM、DRAM、SRAM等,本申请实施例对此并不限定。
在一些实施例中,第一处理单元的算力信息可以根据计算设备创建第二运行环境时的ACPI表或设备树源码(devicetree source,DTS)配置信息确定。
可选地,第一处理单元的算力信息可以存储在第二运行环境中的第一存储空间中。
在一些实施例中,第一处理单元的算力信息可以存储在第二运行环境的第二内核的处理单元调度队列结构中。例如,可以在第二内核的CPU调度队列结构中增加大小核算力标识数据结构,用于存储第一处理单元的算力信息。
在一些实施例中,第一处理单元的算力信息可以通过第二预设数值范围中的数值表示。该第二预设数值范围例如可以是0至1,或者可以是0至256,或者可以是0至1024,本申请实施例对此并不限定。在第二预设数值范围为0至1024的情况下,第一处理单元的算力信息可以是0至1024中的任一个数值。表示第一处理单元的算力信息的数值越大,说明第一处理单元可以提供的算力越大。或者,表示第一处理单元的算力信息的数值越大,说明第一处理单元可以提供的算力越小,本申请实施例对此并不限定。
在一些实施例中,表示第一处理单元的算力信息的数值可以用于表示该第一处理单元的类型。例如,在第二预设数值范围为0至1024的情况下,若第一处理单元的算力信息为0,则可以表示第一处理单元为小核。若第一处理单元的算力信息为512,则可以表示该第一处理单元为普通核。若第一处理单元的算力信息为1024,则可以表示该第一处理单元为大核。
应理解,第二预设数值范围越大,则可以越准确地表示第一处理单元的算力信息。第二预设数值范围越小,则越无法准确地表示第一处理单元的算力信息。还应理解,第一预设数值范围可以与第二预设数值范围相同,或者也可以不同,本申请实施例对此并不限定。
可选地,计算设备可以根据用于表示第一任务的算力信息和第一处理单元的算力信息的数值,确定第一任务的算力信息与第一处理单元的算力信息是否匹配。下面以第一任务包括第一线程为例进行说明。
例如,在第一预设数值范围与第二预设数值范围相同的情况下,若表示第一线程的算力信息的数值小于表示第一处理单元的算力信息的数值,则说明第一线程的算力信息与第一处理单元的算力信息匹配。若表示第一线程的算力信息的数值大于表示第一处理单元的算力信息的数值,则说明第一线程的算力信息与第一处理单元的算力信息不匹配。
例如,在第一预设数值范围与第二预设数值范围不相同的情况下,可以等比例地放大范围较小的预设数值范围,使得第一预设数值范围与第二预设数值范围相同。并且,可以等比例地放大使用范围较小的预设数值范围中的数值表示的算力信息,从而通过比较第一线程的算力信息和第一处理单元的算力信息的数值的大小,确定第一线程的算力信息和第一处理单元的算力信息是否匹配。
例如,在第一预设数值范围与第二预设数值范围均为0至1024的情况下,若第一线程的算力信息为1024,而第一处理单元的算力信息为512,则第一线程的算力信息与第一处理单元的算力信息不匹配。也就是说,若第一线程的算力信息与第一处理单元的算力信息不匹配,则第一处理单元无法提供足够的算力以运行第一线程,或者可以说第一处理单元在运行第一线程时速度较慢,甚至容易出错。
例如,在第一预设数值范围与第二预设数值范围相同的情况下,若表示第一线程的算力信息的数值与表示第一处理单元的算力信息的数值位于第一预设数值范围中的相同范围内,则说明第一线程的算力信息与第一处理单元的算力信息匹配。若表示第一线程的算力信息的数值与表示第一处理单元的算力信息的数值位于第一预设数值范围中的不同范围内,则说明第一线程的算力信息与第一处理单元的算力信息不匹配。
例如,在第一预设数值范围与第二预设数值范围均为0至1024的情况下,若第一线程的算力信息为512,而第一处理单元的算力信息为1024,则第一线程的算力信息位于第一预设范围中的0至512的范围内,而第一处理单元的算力信息位于第一预设数值范围中的513至1024的范围内。也就是说,第一线程的算力信息与第一处理单元的算力信息不匹配,即第一线程不能运行在第一处理单元中。
若第一任务的算力信息与第一处理单元的算力信息匹配,则计算设备可以直接在第二运行环境中的第一处理单元中运行第一任务。
若第一任务的算力信息与第一处理单元的算力信息不匹配,则说明第一处理单元无法为第一任务提供足够的算力,也即第二运行环境中的任务的调度并不合适。因此计算设备可以根据第一接口,从第二运行环境转换为第一运行环境。并且,计算设备可以在第一运行环境中通过第一接口,接收第一信息。该第一信息包括第一任务的算力信息。也就是说,计算设备可以通过第一接口将第二运行环境中第一任务的算力信息传递至第一运行环境中,从而可以在第一运行环境中为第一处理单元进行重新调度,进而满足第一任务的算力需求。也就是说,计算设备可以通过第一接口实现算力信息透传通道。
在一些实施例中,第一接口可以包括超级调用hypercall接口。该hypercall接口中可以包括第一任务的算力信息,即第一任务的算力信息可以作为hypercall接口的参数。或者,第一接口也可以是其他类型的接口,本申请实施例对此并不限定。
应理解,计算设备可以在确定第二运行环境中的线程的算力需求无法被满足时,通过第一接口将线程的算力信息传递至第一运行环境中,即进行线程的算力信息的透传,因此可以避免在第二运行环境和第一运行环境之间的频繁切换而导致性能损耗。
S320,在第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,在第一运行环境中,根据第一任务的算力信息确定第二处理单元。
计算设备可以在确定第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,在第一运行环境中对第一处理单元进行重新调度,即根据第一任务的算力信息确定第二处理单元。其中,第一处理单元的算力信息根据第三处理单元的算力信息确定,第三处理单元用于在第一运行环境中运行第一处理单元。
应理解,在第一运行环境为物理运行环境的情况下,第二处理单元为物理处理单元。
可选地,第一运行环境中的处理单元(例如第二处理单元和第三处理单元等)的算力信息可以根据计算设备启动时,基本输入输出***(basic input output system,BIOS)提供的ACPI表或DTS配置信息确定。
在一些实施例中,计算设备可以在第一运行环境中的第二存储空间中,存储第一运行环境中的处理单元的算力信息。例如,可以在第一运行环境中的第一内核的CPU调度队列结构中增加大小核算力标识数据结构,用于存储第一运行环境中的处理单元的算力信息。
在一些实施例中,计算设备还可以在第二存储空间中存储第二运行环境中的处理单元(例如第一处理单元)的算力信息。计算设备还可以在第二存储空间中存储第二运行环境中的处理单元待运行的线程(例如第一线程)的算力信息。
在一些实施例中,在第一运行环境中,计算设备可以在共享内存中存储第二运行环境中的处理单元的算力信息。该共享内存可以由运行在第二运行环境或第一运行环境中的计算设备访问,即计算设备无论运行在第二运行环境中,还是运行在第一运行环境中,均可以访问该共享内存。
在一些实施例中,该共享内存可以是MSR寄存器或***寄存器,或者也可以是其他类型的共享存储设备,例如可以是RAM、DRAM、SRAM等,本申请实施例对此并不限定。
在一些实施例中,第一运行环境中的处理单元的算力信息可以通过第三预设数值范围中的数值表示。该第三预设数值范围例如可以是0至1,或者可以是0至256,或者可以是0至1024,本申请实施例对此并不限定。在第三预设数值范围为0至1024的情况下,第一运行环境中的处理单元的算力信息可以是0至1024中的任一个数值。表示第一运行环境中的处理单元的算力信息的数值越大,说明该处理单元可以提供的算力越大。或者,表示第一运行环境中的处理单元的算力信息的数值越小,说明该处理单元可以提供的算力越小,本申请实施例对此并不限定。
在一些实施例中,表示第一运行环境中的处理单元的算力信息的数值可以用于表示该处理单元的类型。例如,在第三预设数值范围为0至1024的情况下,若第三处理单元的算力信息为0,则可以表示第三处理单元为小核。若第三处理单元的算力信息为512,则可以表示该第三处理单元为普通核。若第三处理单元的算力信息为1024,则可以表示该第三处理单元为大核。
可选地,计算设备可以在第一运行环境中直接根据第一接口,确定第二运行环境中的第一处理单元无法满足第一线程的算力需求,从而在第一运行环境中确定第二处理单元。或者,计算设备可以在第一运行环境中,确定第一线程的算力信息与第一处理单元的算力信息是否匹配,从而在不匹配的情况下,根据第一线程的算力信息确定第二处理单元,本申请实施例对此并不限定。
在一些实施例中,若第一线程的算力信息与第一处理单元的算力信息匹配,则计算设备可以在第三处理单元中继续运行第一处理单元。并且,计算设备可以在第一处理单元继续运行第一线程。
应理解,由于第一处理单元的算力信息根据在第一运行环境中运行该第一处理单元的处理单元确定,因此在第三处理单元运行该第一处理单元时,若该第一线程的算力信息与第一处理单元的算力信息匹配,则说明目前的调度方案可以满足第二运行环境中的算力需求,因此可以继续在第三处理单元中运行第一处理单元,并在第一处理单元中运行该第一线程。
在一些实施例中,若第一线程的算力信息与第一处理单元的算力信息不匹配,则计算设备可以根据第一线程的算力信息,确定第二处理单元,该第二处理单元与第三处理单元不同。
在第二处理单元与第三处理单元不同的情况下,计算设备还可以根据第二处理单元的算力信息,更新第一处理单元的算力信息。也即,第一处理单元更新后的算力信息根据第二处理单元的算力信息确定。
例如,假设第二处理单元的算力信息为1024,则第一处理单元更新后的算力信息可以为1024。
在一些实施例中,计算设备可以在共享内存中更新第一处理单元的算力信息。或者可以说,计算设备可以将第一处理单元更新后的算力信息存储至共享内存中。
可选地,计算设备可以根据用于表示第一任务的算力信息和第一运行环境中的处理单元的算力信息的数值,确定第二处理单元。下面以第一任务包括第一线程为例进行说明。
在一些实施例中,在第一预设数值范围与第三预设数值范围相同的情况下,若表示第一线程的算力信息的数值小于表示第五处理单元的算力信息的数值,则说明第一线程的算力信息与第五处理单元的算力信息匹配,即可以确定第五处理单元为第二处理单元。若表示第一线程的算力信息的数值大于表示第五处理单元的算力信息的数值,则说明第一线程的算力信息与第五处理单元的算力信息不匹配,即第五处理单元不可以为第二处理单元。第五处理单元是第一运行环境中除第三处理单元外的任一个处理单元。
在一些实施例中,在第一预设数值范围与第三预设数值范围不相同的情况下,可以等比例地放大范围较小的预设数值范围,使得第一预设数值范围与第二预设数值范围相同。并且,可以等比例地放大使用范围较小的预设数值范围中的数值表示的算力信息,从而通过比较第一线程的算力信息和第一运行环境中的处理单元的算力信息的数值的大小,确定第二处理单元。
例如,在第一预设数值范围与第三预设数值范围均为0至1024的情况下,若第一线程的算力信息为1024,第五处理单元的算力信息为512,则第一线程的算力信息与第五处理单元的算力信息不匹配,即该第五处理单元不可以为第二处理单元。若第一线程的算力信息为1024,第五处理单元的算力信息为1024,则第一线程的算力信息与第五处理单元的算力信息匹配,即该第五处理单元可以为第二处理单元。或者,若第一线程的算力信息为512,第五处理单元的算力信息为1024,则第一线程的算力信息与第五处理单元的算力信息匹配,即该第五处理单元可以为第二处理单元。
在一些实施例中,在第一预设数值范围与第三预设数值范围相同的情况下,若表示第一线程的算力信息的数值与表示第五处理单元的算力信息的数值位于第一预设数值范围中的相同范围内,则说明第一线程的算力信息与第五处理单元的算力信息匹配,即可以确定第五处理单元为第二处理单元。若表示第一线程的算力信息的数值与表示第五处理单元的算力信息的数值位于第一预设数值范围中的不同范围内,则说明第一线程的算力信息与第五处理单元的算力信息不匹配,即第五处理单元不可以为第二处理单元。
例如,在第一预设数值范围与第三预设数值范围均为0至1024的情况下,若第一线程的算力信息为512,第五处理单元的算力信息为1024,则第一线程的算力信息位于第一预设范围中的0至512的范围内,而第五处理单元的算力信息位于第一预设数值范围中的513至1024的范围内。也就是说,第一线程的算力信息与第五处理单元的算力信息不匹配,即第五处理单元不可以为第二处理单元。若第一线程的算力信息为512,第五处理单元的算力信息为512,则第一线程的算力信息与第五处理单元的算力信息均位于第一预设范围中的0至512的范围内。也就是说,第一线程的算力信息与第五处理单元的算力信息匹配,即可以确定第五处理单元为第二处理单元。
S330,在第一运行环境中,通过第二处理单元运行第一处理单元。
在计算设备确定第二处理单元后,计算设备可以将第一处理单元从第三处理单元中迁移至第二处理单元中运行,并在第一处理单元中运行第一线程。
应理解,由于第二处理单元的算力信息与第一线程的算力信息匹配,因此在将第一处理单元迁移至该第二处理单元中运行后,该第一处理单元的算力得到提升。该第一处理单元的算力信息可以根据第二处理单元的算力信息确定。也就是说,将第一处理单元迁移至第二处理单元中运行后,第一处理单元可以满足第一线程的算力需求,因此可以继续在第一处理单元中运行该第一线程。
例如,假设第一预设数值范围、第二预设数值范围和第三预设数值范围均为0至1024,第一线程的算力信息为1024,第三处理单元的算力信息是512。由于第一处理单元更新前的算力信息根据第三处理单元的算力信息确定,因此第一处理单元更新前的算力信息为512。计算设备可以直接根据第一接口,在第一运行环境中确定第一线程的算力信息与第一处理单元的算力信息不匹配。假设第二处理单元的算力信息为1024,则计算设备可以从已存储的第一运行环境中的处理单元的算力信息中,确定第二处理单元的算力信息与第一线程的算力信息匹配,从而确定第二处理单元。在第一处理单元被迁移至第二处理单元中运行后,第一处理单元的算力信息根据第二处理单元的算力信息确定,即第一处理单元的算力信息为1024。也就是说,第一处理单元更新后的算力信息可以满足第一线程的算力需求,即可以在第一处理单元中继续运行该第一线程。
可选地,在步骤S330后,计算设备还可以根据第二运行环境中的第二接口,获得第二运行环境中的第一处理单元的第一算力信息。其中,第一处理单元从第一运行环境中的第三处理单元迁移至第一运行环境中的第二处理单元中运行,第一算力信息根据第二处理单元的算力信息确定。计算设备还可以在第一处理单元的第二算力信息与第一算力信息不匹配的情况下,在第二运行环境中,根据第二任务的算力信息和第一算力信息确定第四处理单元。其中,第二算力信息根据第三处理单元的算力信息确定。第二任务为第一处理单元中待运行的任务,第二任务的算力信息用于指示运行第二任务的处理单元的最小算力。计算设备还可以在第二运行环境中,通过第四处理单元运行第二任务。具体实现方式可以参见图5的描述。
计算设备可以通过第一接口,实时地将第二运行环境中线程的算力信息传递至第一运行环境中,从而便于计算设备在第一运行环境中调度处理单元,进而满足第二运行环境中的算力需求。通过本申请实施例中的方法,计算设备可以在第一运行环境和第二运行环境中同步第二运行环境中的算力需求,从而可以较为快速准确地对第二运行环境与第一运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
图4是本申请实施例提供的协同调度方法的示意性流程图。图4中的方法包括如下步骤。
S410,在第一处理单元中进行第一任务的处理单元上下文切换。
在第二运行环境中,计算设备在第一处理单元中运行第一任务前,需要进行第一任务的处理单元上下文切换。第一处理单元为第二运行环境中的处理单元。第一任务的处理单元上下文切换指的是将处理单元的寄存器中已存储的前一任务的数据存储至第一存储空间中,并将第一任务的数据切换至处理单元的寄存器中。下面以第一任务包括第一线程为例进行说明。
应理解,计算设备在创建第二运行环境时,为第二运行环境中的第一处理单元分配了一个或多个寄存器,用于存储第一处理单元在运行线程的过程中所需的数据或计算的结果。计算设备在第一处理单元运行第一线程前,需要将前一线程的数据或计算结果存储至第二运行环境中的第一存储空间中。该前一线程为第一处理单元运行第一线程前运行的线程。该第一存储空间为计算设备创建第二运行环境时,为第二运行环境分配的存储空间。该第一存储空间是第一运行环境中的第二存储空间的部分或全部空间。第一处理单元在运行完该前一线程后,该前一线程运行所需的数据或计算结果等信息仍存储在第一处理单元的一个或多个寄存器中。计算设备在将前一线程的数据或计算结果存储至第一存储空间后,计算设备还需将第一线程运行所需的数据或计算结果等信息切换至第一处理单元的一个或多个寄存器中,然后第一处理单元才可以运行该第一线程。
可选地,计算设备在步骤S410前,还需执行步骤S401。
S401,根据第一处理单元中待运行的第一应用的调度策略,确定第一任务的算力信息。步骤S401的具体实现方式与步骤S301类似,此处不再赘述。
计算设备在第一处理单元中进行第一任务的处理单元上下文切换后,不会直接在第一处理单元中运行第一任务,还需执行步骤S420。
S420,确定第一任务的算力信息与第一处理单元的算力信息是否匹配。步骤S420的具体实现方式与步骤S302类似,此处不再赘述。
在确定第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,计算设备可以执行步骤S430。
在确定第一任务的算力信息与第一处理单元的算力信息匹配的情况下,计算设备可以执行步骤S470。
S430,根据第一接口,从第二运行环境转换为第一运行环境,获得第一任务的算力信息。
计算设备可以通过在第二运行环境中调用第一接口,从第二运行环境转换为第一运行环境。计算设备还可以在第一接口中携带第一信息。该第一信息包括第一任务的算力信息。计算设备还可以在转换至第一运行环境后,通过第一接口接收第一信息,从而获得第一任务的算力信息,具体实现方式可以参见步骤S310的描述。
S440,根据第一任务的算力信息,确定第二处理单元。步骤S440与步骤S320类似,此处不再赘述。
可选地,在执行步骤S440前,计算设备还可以执行步骤S402。
S402,确定第一任务的算力信息与第一处理单元的算力信息是否匹配。
在第一运行环境中,计算设备可以确定第一任务的算力信息与第一处理单元的算力信息是否匹配。计算设备在第一运行环境中确定第一任务的算力信息与第一处理单元的算力信息是否匹配的具体实现方式与步骤S302类似,此处不再赘述。
应理解,虽然计算设备在第二运行环境中已确定第一任务的算力信息与第一处理单元的算力信息不匹配,但计算设备在第一运行环境中可能无法通过第一接口,准确地判断出当前第二运行环境中的第一任务的算力信息与第一处理单元的算力信息不匹配。因此,计算设备仍需在第一运行环境中,重新确定第一任务的算力信息与第一处理单元的算力信息是否匹配。
在确定第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,计算设备可以执行步骤S440。
在确定第一任务的算力信息与第一处理单元的算力信息匹配的情况下,计算设备可以执行步骤S460。
S450,将第一处理单元迁移至第二处理单元运行,更新第一处理单元的算力信息。步骤S450的具体实现方式与步骤S330类似,此处不再赘述。
S460,根据进入操作,从第一运行环境转换为第二运行环境。
计算设备可以在对第一处理单元进行协同调度,并更新第一处理单元的算力信息后,执行进入操作,从第一运行环境转换为第二运行环境。此时,第一处理单元实际在第一运行环境中的第二处理单元中运行,并且第一处理单元可以满足第一任务的算力需求。
可选地,计算设备可以在转换为第二运行环境之后,根据第一处理单元更新后的算力信息,在第二运行环境中的第一存储空间中,更新第一处理单元的算力信息。或者说,计算设备可以在第二运行环境中,将第一处理单元更新后的算力信息更新至第一存储空间中。
S470,在第一处理单元中运行第一任务。
计算设备在对第一处理单元进行重新调度,并从第一运行环境转换为第二运行环境后,可以在第一处理单元中运行第一任务。或者,在第二运行环境中,计算设备在确定第一任务的算力信息与第一处理单元的算力信息匹配的情况下,计算设备可以直接在第一处理单元中运行该第一任务。
应理解,由于计算设备在步骤S410中,已经将第一任务所需的数据切换至第一处理单元的寄存器中,因此第一处理单元可以直接开始运行第一任务。并且,由于第一处理单元的算力已经得到提升,因此第一处理单元可以为第一任务提供足够的算力,从而可以发挥计算设备的最大计算能效,有效提升计算设备的整体吞吐率与瞬时响应速度。
计算设备可以在第一运行环境中实时地接收到第二运行环境的算力需求,从而可以较为快速准确地对第一运行环境和第二运行环境中的处理单元进行协同调度,有效提升第二运行环境中处理单元的算力,进而可以提升计算设备的计算性能。
图5是本申请实施例提供的协同调度方法的示意性流程图。图5中的方法包括如下步骤。
S510,根据第二运行环境中的第二接口,获得第二运行环境中的第一处理单元的第一算力信息。
在第二运行环境中,计算设备可以根据第二接口,获得第一处理单元的第一算力信息。其中,第一处理单元从第一运行环境中的第三处理单元迁移至第一运行环境中的第二处理单元中运行。第一处理单元的第一算力信息根据第二处理单元的算力信息确定。
应理解,在第一运行环境为物理运行环境的情况下,第二处理单元和第三处理单元为物理处理单元。第二运行环境为虚拟运行环境,第一处理单元为虚拟处理单元。并且,第一处理单元实际运行在第一运行环境中的第三处理单元或第二处理单元中。
在一些实施例中,在第一运行环境中,计算设备可能会对第二运行环境或第一运行环境中的处理单元进行资源的重新调度或分配,可能将原本处理计算密集型任务的处理单元调整为处理轻量型任务的处理单元,即将大核调整为小核。或者,可能将原本处理轻量型任务的处理单元调整为处理计算密集型任务的处理单元,即将小核调整为大核。但对第二运行环境中的第一处理单元进行重新调度后,第一处理单元中的部分任务可以不再适合在第一处理单元中运行。因此,计算设备可以通过第二接口,达到向第二运行环境传递处理单元已被重新调度的信息的目的,从而可以在第二运行环境中为部分任务分配更合适的处理单元。也就是说,计算设备可以通过第二接口实现消息通知通道。
可选地,第二接口可以包括虚拟中断或虚拟ACPI事件,或者第二接口也可以是其他类型的接口,例如访问特殊存储设备或偏移地址的接口。或者,第二接口可以包括其他事件,本申请实施例对此并不限定。第二接口或第二接口中包括的事件可以用于指示第二运行环境中的处理单元的算力信息已更新。也就是说,虚拟中断或虚拟ACPI事件可以用于指示第一处理单元的算力信息已更新。
可选地,计算设备可以根据第二接口,从共享内存中获得第一处理单元的第一算力信息。也即,该共享内存中可以存储第一处理单元的第一算力信息。该共享内存可以由运行在第二运行环境或第一运行环境中的计算设备访问,即计算设备无论运行在第二运行环境中,还是运行在第一运行环境中,均可以访问该共享内存。
在一些实施例中,该共享内存可以是MSR寄存器或***寄存器,或者也可以是其他类型的共享存储设备,例如可以是RAM、DRAM、SRAM等,本申请实施例对此并不限定。
可选地,第一处理单元的第一算力信息可以存储在第二运行环境中的第一存储空间中。或者说,第二运行环境中的第一存储空间中可以存储第二运行环境中的处理单元的算力信息。计算设备可以在第二运行环境中,将第一处理单元更新后的第一算力信息更新至第一存储空间中。
在一些实施例中,第一处理单元的第一算力信息可以存储在第二运行环境的第二内核的处理单元调度队列结构中。例如,可以在第二内核的CPU调度队列结构中增加大小核算力标识数据结构,用于存储第一处理单元的第一算力信息。
可选地,第一处理单元的算力信息可以通过第二预设数值范围中的数值表示。该第二预设数值范围例如可以是0至1,或者可以是0至256,或者可以是0至1024,本申请实施例对此并不限定。在第二预设数值范围为0至1024的情况下,第一处理单元的算力信息可以是0至1024中的任一个数值。表示第一处理单元的算力信息的数值越大,说明第一处理单元可以提供的算力越大。或者,表示第一处理单元的算力信息的数值越大,说明第一处理单元可以提供的算力越小,本申请实施例对此并不限定。
在一些实施例中,表示第一处理单元的算力信息的数值可以用于表示该第一处理单元的类型。例如,在第二预设数值范围为0至1024的情况下,若第一处理单元的算力信息为0,则可以表示第一处理单元为小核。若第一处理单元的算力信息为512,则可以表示该第一处理单元为普通核。若第一处理单元的算力信息为1024,则可以表示该第一处理单元为大核。
应理解,第二预设数值范围越大,则可以越准确地表示第一处理单元的算力信息。第二预设数值范围越小,则越无法准确地表示第一处理单元的算力信息。
可选地,在步骤S510前,计算设备还可以执行步骤S501。
S501,在第一运行环境中,确定第一处理单元的第一算力信息与第一处理单元的第二算力信息是否匹配。
在计算设备对第二运行环境或第一运行环境中的处理单元进行重新调整后,计算设备需要重新确定第二运行环境中的任务是否可以在原处理单元中运行,从而保证可以满足第二运行环境中的算力需求。因此计算设备需要在第一运行环境中确定第一处理单元在迁移前后的算力信息是否匹配,即在第一运行环境中确定第一处理单元的第一算力信息与第二算力信息是否匹配。若第一算力信息与第二算力信息不匹配,则计算设备可以通过调用第二接口,向第二运行环境中传递第一处理单元的算力信息已变更的信息。
在一些实施例中,计算设备可以从第二存储空间中获得第一处理单元的第二算力信息,即第一处理单元的第二算力信息可以存储在第一运行环境中的第二存储空间中。
例如,可以在第一运行环境中的第二内核的CPU调度队列结构中增加大小核算力标识数据结构,用于存储第一运行环境中的处理单元的第二算力信息。
可选地,第一运行环境中的处理单元(例如第三处理单元和第二处理单元)的算力信息可以根据计算设备启动时,BIOS提供的ACPI表或DTS配置信息确定。
可选地,第一运行环境中的处理单元的算力信息可以通过第三预设数值范围中的数值表示。该第三预设数值范围例如可以是0至1,或者可以是0至256,或者可以是0至1024,本申请实施例对此并不限定。在第三预设数值范围为0至1024的情况下,第一运行环境中的处理单元的算力信息可以是0至1024中的任一个数值。表示第一运行环境中的处理单元的算力信息的数值越大,说明该处理单元可以提供的算力越大。或者,表示第一运行环境中的处理单元的算力信息的数值越大,说明该处理单元可以提供的算力越小,本申请实施例对此并不限定。
在一些实施例中,表示第一运行环境中的处理单元的算力信息的数值可以用于表示该处理单元的类型。例如,在第三预设数值范围为0至1024的情况下,若第三处理单元的算力信息为0,则可以表示第三处理单元为小核。若第三处理单元的算力信息为512,则可以表示该第三处理单元为普通核。若第三处理单元的算力信息为1024,则可以表示该第三处理单元为大核。
应理解,第二预设数值范围可以与第三预设数值范围相同,或者也可以不同,本申请实施例对此并不限定。
可选地,计算设备可以根据第三处理单元的算力信息确定第一处理单元的第二算力信息。计算设备还可以根据第二处理单元的算力信息确定第一处理单元的第一算力信息。
例如,假设第二预设数值范围和第三预设数值范围均为0至1024,第三处理单元的算力信息是512,则第一处理单元的第二算力信息可以为512。假设第二处理单元的算力信息是1024,则第一处理单元的第一算力信息可以为1024。
可选地,计算设备可以根据第一处理单元的第一算力信息和第二算力信息的数值,确定第一算力信息与第二算力信息不匹配。若第一算力信息的数值表示的处理单元的类型与第二算力信息的数值表示的处理单元的类型相同,则说明第一算力信息与第二算力信息匹配。若第一算力信息的数值表示的处理单元的类型与第二算力信息的数值表示的处理单元的类型不同,则说明第一算力信息与第二算力信息不匹配。
例如,若第一算力信息为512,第二算力信息为1024,则第一算力信息的数值表示的处理单元的类型为小核,第二算力信息的数值表示的处理单元的类型为大核。也就是说,第一算力信息与第二算力信息不匹配。
在一些实施例中,若第一算力信息与第二算力信息不匹配,则说明第二运行环境中的大核调整为了小核,即第一处理单元目前在第一运行环境中的小核上运行。或者,若第一算力信息与第二算力信息不匹配,则说明第二运行环境中的小核调整为了大核,即第一处理单元目前在第一运行环境中的大核上运行。也就是说,第二运行环境中的部分任务可能并不在具有合适算力的处理单元中运行,此时计算设备的计算性能较低。因此计算设备可以通过调用第二接口,从第一运行环境转换为第二运行环境,从而在第二运行环境中对部分任务进行重新调度,进而使得每个任务均可以在合适的处理单元中运行。
S520,在第一处理单元的第一算力信息与第二算力信息不匹配的情况下,在第二运行环境中,根据第二任务的算力信息和第一算力信息,确定第四处理单元。
在第二运行环境中,计算设备可以在第一处理单元的第一算力信息与第二算力信息不匹配的情况下,根据第二任务的算力信息和第一处理单元的第一算力信息,确定第四处理单元。其中,第二任务是第一处理单元中待运行的任务。第四处理单元是第二运行环境中的处理单元,第四处理单元用于运行第二任务。
应理解,在第二运行环境为虚拟运行环境的情况下,第四处理单元为虚拟处理单元。
可选地,第二任务的算力信息可以根据该第二任务所属的第二应用的调度策略确定。也就是说,计算设备可以在第二运行环境中,根据第一处理单元待运行的第二应用的调度策略,确定第二任务的算力信息。该第二任务属于该第二应用。
应理解,第二任务可以包括第二进程或第二线程。第二进程为第二运行环境中的第一处理单元中待运行的进程。第二线程为第二运行环境中的第一处理单元中待运行的线程。下面以第二任务包括第二线程为例进行说明。
应理解,第二任务包括第二进程时的方法与第二任务包括第二线程时的方法类似,为表述简洁,不再赘述。
在一些实施例中,在第二运行环境中可以包括一个或多个应用,每个应用可以包括一个或多个线程。第二应用为一个或多个应用中的任一个应用,第二线程为第二应用的一个或多个线程中的任一个线程。计算设备可以为每个应用设置相同或不同的调度策略。该调度策略可以包括应用的优先级、运行该应用所需的算力或计算资源等。根据每个应用的调度策略,计算设备可以确定每个应用的每个线程的算力信息,即确定运行每个线程所需的算力,或者说确定每个线程的算力需求。每个线程的算力信息可以是处理单元在执行该线程时需要满足的计算速度或计算能力,即每个线程的算力信息可以用于指示运行该线程的处理单元的最小算力。
可选地,第二线程的算力信息可以存储在第二运行环境中的第一存储空间中。该第一存储空间为计算设备创建第二运行环境时,为第二运行环境分配的存储空间。该第一存储空间是第一运行环境中的第二存储空间的部分或全部空间。
在一些实施例中,第二线程的算力信息可以存储在第二运行环境的第二内核的任务结构体中。例如,可以在第二内核的任务结构体中增加特征标识结构,用于存储第二线程的算力信息。
在一些实施例中,第二线程的算力信息可以通过第一预设数值范围中的数值表示。该第一预设数值范围例如可以是0至1,或者可以是0至256,或者可以是0至1024,本申请实施例对此并不限定。在第一预设数值范围为0至1024的情况下,第二线程的算力信息可以是0至1024中的任一个数值。表示第二线程的算力信息的数值越大,说明第二线程的算力需求越大。或者,表示第二线程的算力信息的数值越大,说明第二线程的算力需求越小,本申请实施例对此并不限定。
应理解,第一预设数值范围越大,则可以越准确地表示第二线程的算力信息。第一预设数值范围越小,则越无法准确地表示第二线程的算力信息。
可选地,在第二运行环境中,计算设备可以根据第二接口,从共享内存中获得第二运行环境中的处理单元的算力信息,例如第一处理单元的第一算力信息和第四处理单元的算力信息。也即,该共享内存中可以存储第二运行环境中的处理单元的算力信息。该共享内存可以由运行在第二运行环境或第一运行环境中的计算设备访问,即计算设备无论运行在第二运行环境中,还是运行在第一运行环境中,均可以访问该共享内存。
在一些实施例中,该共享内存可以是MSR寄存器或***寄存器,或者也可以是其他类型的共享存储设备,例如可以是RAM、DRAM、SRAM等,本申请实施例对此并不限定。
可选地,第二运行环境中的处理单元的算力信息还可以存储在第二运行环境中的第一存储空间中。
在一些实施例中,第二运行环境中的处理单元的算力信息可以存储在第二运行环境的第二内核的处理单元调度队列结构中。例如,可以在第二内核的CPU调度队列结构中增加大小核算力标识数据结构,用于存储第二运行环境中的处理单元的算力信息。
可选地,计算设备可以在第二运行环境中直接根据第二接口,确定更新后的第一处理单元不适合运行第二线程,从而在第二运行环境中确定第四处理单元。或者,计算设备可以在第二运行环境中,确定第二线程的算力信息与第一处理单元的第一算力信息是否匹配,从而在不匹配的情况下,根据第二线程的算力信息确定第四处理单元,本申请实施例对此并不限定。
在一些实施例中,若第二线程的算力信息与第一处理单元的第一算力信息匹配,则计算设备可以确定第四处理单元为第一处理单元,并在第一处理单元中继续运行第二线程。即,第四处理单元与第一处理单元相同。
应理解,若第二线程的算力信息与第一处理单元的第一算力信息匹配,则说明即使第一处理单元被重新调度,也不会影响第一处理单元可以为第二线程提供的算力,因此可以继续在第一处理单元中运行第二线程。
在一些实施例中,若第二线程的算力信息与第一处理单元的第一算力信息不匹配,则计算设备可以根据第二线程的算力信息,确定第四处理单元,该第四处理单元与第一处理单元不同。也就是说,该第四处理单元为第二运行环境中除第一处理单元外的其他处理单元。
可选地,计算设备可以根据用于表示第二任务的算力信息和第二运行环境中的处理单元的算力信息的数值,确定第四处理单元。下面以第二任务包括第二线程为例进行说明。
例如,假设第一预设数值范围和第二预设数值范围均为0至1024,第二线程的算力信息为1024,第一处理单元的第一算力信息是512,第四处理单元的算力信息为1024。由于第二线程的算力信息与第一处理单元的第一算力信息不匹配,因此计算设备可以从已存储的第二运行环境中的处理单元的算力信息中,确定第四处理单元的算力信息与第一线程的算力信息匹配,从而确定第四处理单元。
可选地,计算设备确定第二线程的算力信息与第一处理单元的算力信息是否匹配的具体实现方式与步骤S302类似,此处不再赘述。
S530,在第二运行环境中,通过第四处理单元运行第二任务。
在计算设备确定该第四处理单元后,计算设备可以将第二任务从第一处理单元中迁移至第四处理单元中运行。
应理解,由于第一处理单元从第三处理单元迁移至第二处理单元时,第一处理单元的算力发生了变化,因此不再适合运行第二任务。而第四处理单元中的算力信息与第二任务的算力信息匹配,因此第四处理单元可以为第二任务提供合适的算力。
可选地,在步骤S530后,计算设备还可以在第二运行环境中,确定第一处理单元中待运行的第一线程的算力信息与第一处理单元的算力信息不匹配。其中,第一线程的算力信息用于指示运行第一线程的处理单元的最小算力。第一处理单元的算力信息根据第三处理单元的算力信息确定,第三处理单元用于在第一运行环境中运行第一处理单元。计算设备还可以根据第一接口,从第二运行环境转换为第一运行环境。其中,第一接口包括第一线程的算力信息。计算设备还可以在第一运行环境中,根据第一线程的算力信息,确定第二处理单元。其中,第二处理单元用于运行第一处理单元,第二处理单元的算力信息与第一线程的算力信息匹配。具体实现方式可以参见图3的描述。
计算设备可以通过第二接口,实时地将第一运行环境和第二运行环境中的处理单元已被重新调度的信息传递至第二运行环境中,从而便于在第二运行环境中及时地对线程进行调度。通过本申请实施例中的方法,计算设备可以实时地在第一运行环境和第二运行环境中同步处理单元的算力信息,从而可以较为快速准确地对第一运行环境与第二运行环境中的处理单元进行协同调度,进而可以提高计算设备的计算性能。
图6是本申请实施例提供的协同调度方法的示意性流程图。图6中的方法包括如下步骤。
S610,将第一处理单元从第三处理单元迁移至第二处理单元中运行。
计算设备可以根据实际计算需求,在第一运行环境中对第二运行环境中的处理单元进行重新调度,例如可以将第二运行环境中的第一处理单元从第一运行环境中的第三处理单元迁移至第一运行环境中的第二处理单元中运行。
计算设备在第一运行环境中对第二运行环境中的第一处理单元进行重新调度后,需要及时地确定第一处理单元的算力信息是否发生改变,从而便于对第二运行环境中的任务进行调度,以满足第二运行环境中的算力需求。
S620,确定第一处理单元的第一算力信息和第二算力信息。
可选地,计算设备可以根据共享内存,获得第一处理单元的第一算力信息。也即,该共享内存中可以存储第一处理单元的第一算力信息。该共享内存可以由运行在第二运行环境或第一运行环境中的计算设备访问,即计算设备无论运行在第二运行环境中,还是运行在第一运行环境中,均可以访问该共享内存。
在一些实施例中,该共享内存可以是MSR寄存器或***寄存器,或者也可以是其他类型的共享存储设备,例如可以是RAM、DRAM、SRAM等,本申请实施例对此并不限定。
在一些实施例中,第一处理单元的第二算力信息可以存储在第一运行环境中的第二存储空间中,即计算设备可以从第二存储空间中获得第一处理单元的第二算力信息。
可选地,计算设备可以根据第三处理单元的算力信息,确定第一处理单元的第二算力信息。计算设备还可以根据第二处理单元的算力信息,确定第一处理单元的第一算力信息。
可选地,第一运行环境中的处理单元(例如第三处理单元和第二处理单元)的算力信息可以根据计算设备启动时,BIOS提供的ACPI表或DTS配置信息确定。
在一些实施例中,计算设备可以在第二存储空间中,存储第一运行环境中的处理单元的算力信息。例如,可以在第一运行环境中的第一内核的CPU调度队列结构中增加大小核算力标识数据结构,用于存储第一运行环境中的处理单元的算力信息。
在一些实施例中,第一处理单元的第一算力信息和第二算力信息可以通过第二预设数值范围中的数值表示。第一运行环境中的处理单元的算力信息可以通过第三预设数值范围中的数值表示。具体表示方式可以参见步骤S501的描述。
S630,确定第一算力信息和第二算力信息是否匹配。步骤S630的具体实现方式与步骤S501类似,此处不再赘述。
若确定第一算力信息和第二算力信息不匹配,则可以执行步骤S640。
若确定第一算力信息和第二算力信息匹配,则可以执行步骤S680。
S640,根据第二接口,从第一运行环境转换为第二运行环境,获得第一算力信息。
计算设备可以通过在第一运行环境中调用第二接口,从第一运行环境转换为第二运行环境。
可选地,第二接口可以包括虚拟中断或虚拟ACPI事件,或者第二接口也可以是其他类型的接口,例如访问特殊存储设备或偏移地址的接口。或者,第二接口可以包括其他事件,本申请实施例对此并不限定。第二接口或第二接口中包括的事件可以用于指示第二运行环境中的处理单元的算力信息已更新。也就是说,虚拟中断或虚拟ACPI事件可以用于指示第一处理单元的算力信息已更新。
可选地,计算设备可以在第一运行环境中配置第二接口中包括的事件的标识,例如配置虚拟中断的中断标识,或者配置虚拟ACPI事件的事件标识等,本申请实施例对此并不限定。计算设备在调用第二接口时,可以执行转换指令,从第一运行环境转换为第二运行环境。计算设备在转换为第二运行环境后,可以根据第二接口中包括的事件的标识,确定第二运行环境中的处理单元的算力信息已更新,即第二接口中包括的事件可以用于指示第二运行环境中的处理单元的算力信息已更新。
计算设备根据第二接口,获得第一算力信息的具体实现方式与步骤S510类似,此处不再赘述。
S650,确定第二任务的算力信息与第一算力信息是否匹配。具体确定方式可以参见步骤S520的描述,此处不再赘述。
在第二任务的算力信息与第一算力信息不匹配的情况下,计算设备可以执行步骤S660。
在第二任务的算力信息与第一算力信息匹配的情况下,计算设备可以执行步骤S670。
S660,根据第二任务的算力信息和第一算力信息,确定第四处理单元。
在第二任务的算力信息与第一算力信息不匹配的情况下,第四处理单元与第一处理单元不同。计算设备根据第二任务的算力信息和第一算力信息,确定第四处理单元的具体实现方式与步骤S520类似,此处不再赘述。
S670,在第一处理单元中运行第二任务。
若第二任务的算力信息与第一算力信息匹配,则说明更新后的第一处理单元可以为第二任务提供合适的算力,因此计算设备可以直接在第一处理单元中运行第二任务,即第四处理单元与第一处理单元相同。
S680,在第二处理单元中运行第一处理单元。
若第一算力信息和第二算力信息匹配,则说明第一处理单元即使从第三处理单元中迁移至第二处理单元中,仍不会使第一处理单元的类型发生改变。也就是说,若第一处理单元在迁移前处理计算密集型任务,则在迁移后仍可以处理计算密集型任务,即迁移前后均为大核。或者,若第一处理单元在迁移前处理轻量型任务,则在迁移后仍处理轻量型任务,即迁移前后均为小核。因此,在确定第一算力信息和第二算力信息匹配的情况下,计算设备可以直接在第二处理单元中运行第一处理单元。
计算设备可以在第二运行环境中实时地接收到处理单元已被重新调度的信息,从而可以较为快速准确地对第二运行环境中的任务进行调度,使得每个任务均可以运行在合适算力的处理单元中,进而可以提高计算设备的计算性能。
图7是根据本申请一个实施例的计算装置700的结构示意图。计算装置700包括接收模块710和处理模块720。
接收模块710用于通过第一运行环境中的第一接口接收第一信息,执行图3的方法中的步骤S310、图4的方法中的步骤S430。
处理模块720用于在第一任务的算力信息与第一处理单元的算力信息不匹配的情况下,在第一运行环境中,根据第一任务的算力信息确定第二处理单元。处理模块720还用于在第一运行环境中,通过第二处理单元运行第一处理单元。处理单元720可以执行图3中的步骤S320、S330、图4中的步骤S402、S440-S460。
在一些实施例中,计算装置700还可以包括第一确定模块(图中未示出)。第一确定模块用于在第二运行环境中,确定第一任务的算力信息和第一处理单元的算力信息不匹配。第一确定模块用于执行图4中的步骤S401、S410、S420、S470。
图8是根据本申请一个实施例的计算装置800的结构示意图。计算装置800包括获取模块810和处理模块820。
获取模块810用于根据第二运行环境中的第二接口,获得第二运行环境中的第一处理单元的第一算力信息。处理模块810可以执行图5中的步骤S510、图6中的步骤S640。
处理模块820用于在第一处理单元的第一算力信息与第二算力信息不匹配的情况下,在第二运行环境中,根据第二任务的算力信息和第一算力信息确定第四处理单元。处理模块820还用于在第二运行环境中,通过第四处理单元运行第二任务。处理模块820执行图5的方法中的步骤S520、S530、图6的方法中的步骤S650-670。
在一些实施例中,计算装置800还可以包括确定模块(图中未示出)。确定模块用于在第一运行环境中,确定第一算力信息与第二算力信息不匹配。确定模块执行图6的方法中的步骤S610-S630、S680。
图9是根据本申请实施例提供的计算设备的结构框图。图9所示的计算设备900包括:处理器901、存储器902和通信接口903,处理器901、存储器902和通信接口903通过总线904相通信。
上述本发明实施例揭示的方法可以应用于处理器901中,或者由处理器901实现。处理器901可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器901中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储器902中,该存储器902可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambusRAM,DR RAM)处理器901读取存储器902中的指令,结合其硬件完成上述方法的步骤。
存储器902可以存储用于执行上述实施例中计算设备执行的方法的指令。处理器901可以执行存储器902中存储的指令结合其他硬件完成上述实施例中计算设备的步骤,具体工作过程和有益效果可以上述实施例中的描述。
存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的***和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
总线904除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线904。
本申请实施例还提供了一种芯片***,该芯片***包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行上述实施例中计算设备执行的各个步骤。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述实施例中的各个步骤。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行上述实施例中的各个步骤。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (39)
1.一种协同调度方法,其特征在于,包括:
通过第一运行环境中的第一接口接收第一信息,所述第一信息包括第一任务的算力信息,所述第一任务为第二运行环境中的第一处理单元中待运行的任务,所述第一任务的算力信息用于指示运行所述第一任务的处理单元的最小算力;
在所述第一任务的算力信息与所述第一处理单元的算力信息不匹配的情况下,在所述第一运行环境中,根据所述第一任务的算力信息确定第二处理单元,所述第一处理单元的算力信息根据第三处理单元的算力信息确定,所述第三处理单元用于在第一运行环境中运行所述第一处理单元;
在所述第一运行环境中,通过所述第二处理单元运行所述第一处理单元。
2.根据权利要求1所述的方法,其特征在于,所述第一接口包括超级调用hypercall接口。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述第二运行环境中,确定所述第一任务的算力信息和所述第一处理单元的算力信息不匹配;
在所述第二运行环境中,调用第一接口,从所述第二运行环境转换为所述第一运行环境。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一运行环境中,根据所述第二处理单元的算力信息,更新所述第一处理单元的算力信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一处理单元的算力信息存储在共享内存中,所述共享内存由运行在所述第一运行环境或所述第二运行环境中的计算设备访问。
6.根据权利要求5所述的方法,其特征在于,所述共享内存包括模型特定MSR寄存器或***寄存器。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述方法还包括:
根据所述第二运行环境中的第二接口,获得所述第一处理单元的第一算力信息,所述第一处理单元的第一算力信息根据所述第二处理单元的算力信息确定;
在所述第一处理单元的第二算力信息与所述第一算力信息不匹配的情况下,在所述第二运行环境中,根据第二任务的算力信息和所述第一算力信息确定第四处理单元,所述第二算力信息根据所述第三处理单元的算力信息确定,所述第二任务为所述第一处理单元中待运行的任务;
在所述第二运行环境中,通过所述第四处理单元运行所述第二任务。
8.根据权利要求7所述的方法,其特征在于,所述第二接口包括虚拟中断或虚拟高级配置和电源管理接口ACPI事件,所述虚拟中断或所述虚拟ACPI事件用于指示所述第一处理单元的算力信息已更新。
9.根据权利要求7或8所述的方法,其特征在于,所述方法还包括:
将所述第一算力信息更新至所述第二运行环境中的第一存储空间中。
10.根据权利要求7至9中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一运行环境中,确定所述第一算力信息与所述第二算力信息不匹配;
在所述第一运行环境中,调用第二接口,从所述第一运行环境转换为所述第二运行环境。
11.根据权利要求7至10中任一项所述的方法,其特征在于,所述第一算力信息和所述第二算力信息存储在共享内存中,所述共享内存由运行在所述第一运行环境或所述第二运行环境中的计算设备访问。
12.根据权利要求11所述的方法,其特征在于,所述共享内存包括模型特定MSR寄存器或***寄存器。
13.一种协同调度方法,其特征在于,包括:
根据第二运行环境中的第二接口,获得所述第二运行环境中的第一处理单元的第一算力信息,所述第一处理单元从第一运行环境中的第三处理单元迁移至第一运行环境中的第二处理单元中运行,所述第一算力信息根据所述第二处理单元的算力信息确定;
在所述第一处理单元的第二算力信息与所述第一算力信息不匹配的情况下,在所述第二运行环境中,根据第二任务的算力信息和所述第一算力信息确定第四处理单元,所述第二算力信息根据所述第三处理单元的算力信息确定,所述第二任务为所述第一处理单元中待运行的任务,所述第二任务的算力信息用于指示运行所述第二任务的处理单元的最小算力;
在所述第二运行环境中,通过所述第四处理单元运行所述第二任务。
14.根据权利要求13所述的方法,其特征在于,所述第二接口包括虚拟中断或虚拟高级配置和电源管理接口ACPI事件,所述虚拟中断或所述虚拟ACPI事件用于指示所述第一处理单元的算力信息已更新。
15.根据权利要求13或14所述的方法,其特征在于,所述方法还包括:
将所述第一算力信息更新至所述第二运行环境中的第一存储空间中。
16.根据权利要求13至15中任一项所述的方法,其特征在于,所述方法还包括:
在所述第一运行环境中,确定所述第一算力信息与所述第二算力信息不匹配;
在所述第一运行环境中,调用第二接口,从所述第一运行环境转换为所述第二运行环境。
17.根据权利要求13至16中任一项所述的方法,其特征在于,所述第一算力信息和所述第二算力信息存储在共享内存中,所述共享内存由运行在所述第一运行环境或所述第二运行环境中的计算设备访问。
18.根据权利要求17所述的方法,其特征在于,所述共享内存包括模型特定MSR寄存器或***寄存器。
19.一种计算装置,其特征在于,包括:
接收模块,用于通过第一运行环境中的第一接口接收第一信息,所述第一信息包括第一任务的算力信息,所述第一任务为第二运行环境中的第一处理单元中待运行的任务,所述第一任务的算力信息用于指示运行所述第一任务的处理单元的最小算力;
处理模块,用于在所述第一任务的算力信息与所述第一处理单元的算力信息不匹配的情况下,在所述第一运行环境中,根据所述第一任务的算力信息确定第二处理单元,所述第一处理单元的算力信息根据第三处理单元的算力信息确定,所述第三处理单元用于在第一运行环境中运行所述第一处理单元;
处理模块,还用于在所述第一运行环境中,通过所述第二处理单元运行所述第一处理单元。
20.根据权利要求19所述的装置,其特征在于,所述第一接口包括超级调用hypercall接口。
21.根据权利要求19或20所述的装置,其特征在于,所述装置还包括第一确定模块,所述第一确定模块,用于:
在所述第二运行环境中,确定所述第一任务的算力信息和所述第一处理单元的算力信息不匹配;
在所述第二运行环境中,调用第一接口,从所述第二运行环境转换为所述第一运行环境。
22.根据权利要求19至21中任一项所述的装置,其特征在于,所述处理模块,还用于在所述第一运行环境中,根据所述第二处理单元的算力信息,更新所述第一处理单元的算力信息。
23.根据权利要求19至22中任一项所述的装置,其特征在于,所述第一处理单元的算力信息存储在共享内存中,所述共享内存由运行在所述第一运行环境或所述第二运行环境中的所述装置访问。
24.根据权利要求23所述的装置,其特征在于,所述共享内存包括模型特定MSR寄存器或***寄存器。
25.根据权利要求19至24中任一项所述的装置,其特征在于,所述装置还包括第二确定模块,所述第二确定模块,还用于:
根据所述第二运行环境中的第二接口,获得所述第一处理单元的第一算力信息,所述第一处理单元的第一算力信息根据所述第二处理单元的算力信息确定;
在所述第一处理单元的第二算力信息与所述第一算力信息不匹配的情况下,在所述第二运行环境中,根据第二任务的算力信息和所述第一算力信息确定第四处理单元,所述第二算力信息根据所述第三处理单元的算力信息确定,所述第二任务为所述第一处理单元中待运行的任务;
在所述第二运行环境中,通过所述第四处理单元运行所述第二任务。
26.根据权利要求25所述的装置,其特征在于,所述第二接口包括虚拟中断或虚拟高级配置和电源管理接口ACPI事件,所述虚拟中断或所述虚拟ACPI事件用于指示所述第一处理单元的算力信息已更新。
27.根据权利要求25或26所述的装置,其特征在于,所述第二确定模块还用于将所述第一算力信息更新至所述第二运行环境中的第一存储空间中。
28.根据权利要求25至27中任一项所述的装置,其特征在于,所述处理模块,还用于:
在所述第一运行环境中,确定所述第一算力信息与所述第二算力信息不匹配;
在所述第一运行环境中,调用第二接口,从所述第一运行环境转换为所述第二运行环境。
29.根据权利要求25至28中任一项所述的装置,其特征在于,所述第一算力信息和所述第二算力信息存储在共享内存中,所述共享内存由运行在所述第一运行环境或所述第二运行环境中的所述装置访问。
30.根据权利要求29所述的装置,其特征在于,所述共享内存包括模型特定MSR寄存器或***寄存器。
31.一种计算装置,其特征在于,包括:
获取模块,用于根据第二运行环境中的第二接口,获得所述第二运行环境中的第一处理单元的第一算力信息,所述第一处理单元从第一运行环境中的第三处理单元迁移至第一运行环境中的第二处理单元中运行,所述第一算力信息根据所述第二处理单元的算力信息确定;
处理模块,用于在所述第一处理单元的第二算力信息与所述第一算力信息不匹配的情况下,在所述第二运行环境中,根据第二任务的算力信息和所述第一算力信息确定第四处理单元,所述第二算力信息根据所述第三处理单元的算力信息确定,所述第二任务为所述第一处理单元中待运行的任务,所述第二任务的算力信息用于指示运行所述第二任务的处理单元的最小算力;
所述处理模块,还用于在所述第二运行环境中,通过所述第四处理单元运行所述第二任务。
32.根据权利要求31所述的装置,其特征在于,所述第二接口包括虚拟中断或虚拟高级配置和电源管理接口ACPI事件,所述虚拟中断或所述虚拟ACPI事件用于指示所述第一处理单元的算力信息已更新。
33.根据权利要求31或32所述的装置,其特征在于,所述处理模块,还用于将所述第一算力信息更新至所述第二运行环境中的第一存储空间中。
34.根据权利要求31至33中任一项所述的装置,其特征在于,所述装置还包括确定模块,所述确定模块用于:
在所述第一运行环境中,确定所述第一算力信息与所述第二算力信息不匹配;
在所述第一运行环境中,调用第二接口,从所述第一运行环境转换为所述第二运行环境。
35.根据权利要求31至34中任一项所述的装置,其特征在于,所述第一算力信息和所述第二算力信息存储在共享内存中,所述共享内存由运行在所述第一运行环境或所述第二运行环境中的所述装置访问。
36.根据权利要求35所述的装置,其特征在于,所述共享内存包括模型特定MSR寄存器或***寄存器。
37.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-18中任一项所述的方法。
38.一种芯片***,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-18中任一项所述的方法。
39.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-18中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210914711.4A CN117539595A (zh) | 2022-08-01 | 2022-08-01 | 一种协同调度方法和相关设备 |
PCT/CN2023/104622 WO2024027413A1 (zh) | 2022-08-01 | 2023-06-30 | 一种协同调度方法和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210914711.4A CN117539595A (zh) | 2022-08-01 | 2022-08-01 | 一种协同调度方法和相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117539595A true CN117539595A (zh) | 2024-02-09 |
Family
ID=89786647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210914711.4A Pending CN117539595A (zh) | 2022-08-01 | 2022-08-01 | 一种协同调度方法和相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117539595A (zh) |
WO (1) | WO2024027413A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022006830A1 (zh) * | 2020-07-10 | 2022-01-13 | 广东石油化工学院 | 一种多队列多集群的任务调度方法及*** |
CN114500521A (zh) * | 2020-11-13 | 2022-05-13 | ***通信有限公司研究院 | 一种算力调度方法、装置、调度设备、***和存储介质 |
CN113037819B (zh) * | 2021-02-26 | 2022-09-23 | 杭州雾联科技有限公司 | 一种边缘算力资源共享方法、装置及设备 |
CN113377540B (zh) * | 2021-06-15 | 2024-08-09 | 上海商汤科技开发有限公司 | 集群资源调度方法及装置、电子设备和存储介质 |
-
2022
- 2022-08-01 CN CN202210914711.4A patent/CN117539595A/zh active Pending
-
2023
- 2023-06-30 WO PCT/CN2023/104622 patent/WO2024027413A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024027413A1 (zh) | 2024-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
US10733019B2 (en) | Apparatus and method for data processing | |
Hashem et al. | MapReduce scheduling algorithms: a review | |
KR101400286B1 (ko) | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 | |
Xu et al. | Adaptive task scheduling strategy based on dynamic workload adjustment for heterogeneous Hadoop clusters | |
US10055248B1 (en) | Virtual processor scheduling via memory monitoring | |
US11157302B2 (en) | Idle processor management in virtualized systems via paravirtualization | |
CN112199173B (zh) | 双核cpu实时操作***数据处理方法 | |
CN107463442B (zh) | 一种星载多核SoC任务级负载均衡并行调度方法 | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
CN112130963A (zh) | 虚拟机任务的调度方法、装置、计算机设备及存储介质 | |
TW202219761A (zh) | 用於封閉迴路動態資源分配控制架構之設備及方法 | |
US20230127112A1 (en) | Sub-idle thread priority class | |
US20210191757A1 (en) | Sub-idle thread priority class | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
Vaidehi et al. | Multicore applications in real time systems | |
US20210055958A1 (en) | Technology For Dynamically Grouping Threads For Energy Efficiency | |
US9684541B2 (en) | Method and apparatus for determining thread execution parallelism | |
Tang et al. | A survey on scheduling techniques in computing and network convergence | |
Shih et al. | Fairness scheduler for virtual machines on heterogonous multi-core platforms | |
CN116360941A (zh) | 一种面向多核dsp的并行计算资源自组织调度方法及*** | |
US9836323B1 (en) | Scalable hypervisor scheduling of polling tasks | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN117539595A (zh) | 一种协同调度方法和相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |