CN106557367B - 用于为计算资源提供粒度化服务质量的装置、方法和设备 - Google Patents
用于为计算资源提供粒度化服务质量的装置、方法和设备 Download PDFInfo
- Publication number
- CN106557367B CN106557367B CN201610525191.2A CN201610525191A CN106557367B CN 106557367 B CN106557367 B CN 106557367B CN 201610525191 A CN201610525191 A CN 201610525191A CN 106557367 B CN106557367 B CN 106557367B
- Authority
- CN
- China
- Prior art keywords
- thread
- processor
- computing
- threads
- processor cores
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 343
- 230000008569 process Effects 0.000 claims abstract description 191
- 230000035945 sensitivity Effects 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 28
- 238000010586 diagram Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 15
- 239000003550 marker Substances 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 6
- 101100135890 Caenorhabditis elegans pdi-6 gene Proteins 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101100481016 Caenorhabditis elegans tag-325 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000033001 locomotion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Multimedia (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Power Sources (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种用于为计算系统中的计算资源提供粒度化服务质量(QoS)的系统、装置、方法及设备。装置包括:处理器,该处理器包括多个处理器核;以及存储器,该存储器存储能够由处理器执行的代码,其中,处理器被配置为能够执行所述代码以进行如下操作:识别属于计算进程的线程;识别与线程关联的一个或更多个线程级标记;基于一个或更多个线程级标记来确定线程的计算需求;及基于计算需求将线程分配给处理器核中的一个处理器核。在某些实施方式中处理器能够执行用于基于进程内优先级将硬件资源分配给线程的代码,其中,从被分配给计算进程的一组硬件资源分配硬件资源。
Description
技术领域
本文所公开的主题涉及计算资源的服务质量(QoS),并且更具体地涉及为计算系统中的计算资源提供粒度化QoS。
背景技术
当今的计算机全速执行线程,而不考虑其需求。计算机这样做是因为程序没有办法告诉系统其需要什么资源或在资源需求方面的期望。尽管有许多先进的调度算法,还是没有办法在同一应用下给予一个线程优先于另一线程的优先级。在应用程序内没有真正的方法在单个核上分离单个线程。频繁的CPU状态变化浪费电力并且增加延迟。
发明内容
公开了一种用于为计算系统中的计算资源提供粒度化服务质量(QoS)的装置。方法和计算机程序产品也执行装置的功能。装置包括:处理器,该处理器包括多个处理器核;以及存储器,该存储器存储能够由处理器执行的代码。存储器包括能够由处理器执行用于识别属于计算进程的线程的代码。存储器包括能够由处理器执行用于识别与线程关联的一个或更多个线程级标记的代码。存储器包括能够由处理器执行用于基于一个或更多个线程级标记来确定线程的计算需求的代码。存储器还包括能够由处理器执行用于基于计算需求将线程分配给处理器核中的一个处理器核的代码。
在某些实施方式中存储器包括能够由处理器执行用于基于一个或更多个线程级标记来确定线程的进程内优先级的代码。存储器还可以包括够由处理器执行用于基于进程内优先级分配硬件资源的代码,其中,从被分配给计算进程的一组硬件资源分配硬件资源。在一些实施方式中,存储器还包括能够由处理器执行用于识别属于计算进程的多个线程之间的线程依赖关系的代码,其中,确定线程的进程内优先级包括基于线程依赖关系来分配进程内优先级。在又一实施方式中,存储器可以包括能够由所述处理器执行用于基于一个或更多个进程级标记来确定计算进程的进程外优先级的代码,其中,基于进程外优先级将一组硬件资源分配给计算进程。
在一些实施方式中,多个处理器核包括以第一处理器速度操作的第一组处理器核和以第二处理器速度操作的第二组处理器核,第二处理器速度小于第一处理器速度。存储器可以包括能够由处理器执行用于进行下述操作的代码:基于一个或更多个线程级标记来确定线程的速度需求;以及基于第二处理器速度来确定线程完成时间。在一些实施方式中,基于计算需求将线程分配给处理器核中的一个处理器核包括响应于线程完成时间小于速度需求将线程分配给第二组处理器核中的处理器核。
在某些实施方式中,存储器包括能够由所述处理器执行用于识别装置的电力状态的代码,其中,还基于电力状态将线程分配给处理器核中的一个处理器核。在一些实施方式中,基于电力状态将线程分配给处理器核中的一个处理器核包括:响应于电力状态为使用电池电力将线程分配给具有较低处理器速度的处理器核,以及响应于所述电力状态为使用外部电力将所述线程分配给具有较低处理器速度的处理器核。在某些实施方式中,识别属于计算进程的至少一个线程包括识别主工作线程,并且其中,将主工作线程分配给处理器核中的一个处理器核包括将主工作线程分配给保留用于所述主工作线程的处理器核。
在一些实施方式中,存储器包括能够由所述处理器执行用于基于一个或更多个进程级标记来确定计算进程的时间需求的代码。存储器还可以包括能够由处理器执行用于确定本地执行计算进程的成本的代码。存储器还可以包括能够由处理器执行用于基于时间需求和本地执行计算进程的成本将计算进程卸载至远程计算设备的代码。
方法包括:通过使用处理器识别属于计算进程的至少一个线程;识别与线程关联的一个或更多个标记;基于一个或更多个标记来确定线程的计算需求;以及基于计算需求将线程分配给处理器核中的一个处理器核。方法还可以包括识别执行计算进程的计算机系统的系统属性,其中,还基于系统属性将线程分配给处理器核中的一个处理器核。
在一些实施方式中,识别属于计算进程的至少一个线程包括识别多个线程。方法可以包括基于一个或更多个标记来确定每个线程的进程内优先级。方法还可以包括识别被分配给计算进程的一组硬件资源。方法还可以包括基于进程内优先级将来自所述一组硬件资源的硬件资源分配给每个线程。在某些实施方式中,识别属于计算进程的至少一个线程包括识别主工作线程,并且将主工作线程分配给处理器核中的一个处理器核包括使主工作线程与所述主工作线程自身的处理器核分离。
在一些实施方式中,基于一个或更多个标记来确定线程的计算需求包括基于所述一个或更多个标记来确定所述线程的时间敏感水平,并且基于所述时间敏感水平将进程内优先级分配给所述线程。在某些实施方式中,基于一个或更多个标记来确定线程的计算需求包括识别线程的存储器缓存需求,其中,基于所述计算需求将线程分配给处理器核中的一个处理器核包括基于所述存储器缓存需求来选择处理器核。在又一实施方式中,基于计算需求将线程分配给处理器核中的一个处理器核还包括基于存储器缓存需求禁用所选择的处理器核上的超线程。
在一些实施方式中,基于一个或更多个标记来确定线程的计算需求包括识别所述线程的速度需求。在又一实施方式中,基于计算需求将线程分配给处理器核中的一个处理器核包括基于速度需求来选择处理器核。
计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质存储能够由处理器执行的代码,可执行代码包括用于进行下述操作的代码:识别属于计算进程的至少一个线程;识别与线程关联的一个或更多个标记;基于一个或更多个标记来确定线程的计算需求;以及基于计算需求将线程分配给处理器核中的一个处理器核。
在某些实施方式中,代码还用于进行下述操作:基于一个或更多个标记将硬件资源分配给线程,其中,从被分配给计算进程的一组资源分配所述硬件资源。在一些实施方式中,代码还用于进行下述操作:识别未标记线程,其中,所述未标记线程未与任何标记关联;将所述未标记线程与一个或更多个线程简档进行比较;以及基于所述比较将一个或更多个标记与所述未标记线程进行关联。
根据本公开,提供一种用于为计算系统中的计算资源提供粒度化服务质量的装置,包括:处理器,所述处理器包括多个处理器核;以及存储器,所述存储器存储能够由所述处理器执行的代码,其中,所述处理器被配置为能够执行所述代码以进行如下操作:识别属于计算进程的线程;识别与所述线程关联的一个或更多个线程级标记;基于所述一个或更多个线程级标记来确定所述线程的计算需求;及基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核。
根据本公开,还提供一种用于为计算系统中的计算资源提供粒度化服务质量的方法,包括:通过使用处理器识别属于计算进程的至少一个线程;识别与所述线程关联的一个或更多个标记;基于所述一个或更多个标记来确定所述线程的计算需求;以及基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核。
根据本公开,还提供一种用于为计算系统中的计算资源提供粒度化服务质量的设备,包括:用于识别属于计算进程的至少一个线程的模块;用于识别与所述线程关联的一个或更多个标记的模块;用于基于所述一个或更多个标记来确定所述线程的计算需求的模块;以及用于基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核的模块。
附图说明
通过参考在附图中例示的特定实施方式,将会呈现如上简要描述的实施方式的更为具体的描述。要理解的是,这些附图仅仅描绘一些实施方式,并且因此不被认为是限制范围。将通过使用附图,利用其他特征和细节来描述和说明上述实施方式。在附图中:
图1是示出了用于为计算系统中的计算资源提供粒度化QoS的系统的一种实施方式的示意性框图;
图2是示出了用于为计算系统中的计算资源提供粒度化QoS的装置的一种实施方式的示意性框图;
图3A是示出了用于为计算系统中的计算资源提供粒度化QoS的标记的集合的一种实施方式的示意性框图;
图3B是示出了用于为计算系统中的计算资源提供粒度化QoS的计算系统的一种实施方式的示意性框图;
图4是示出了用于为计算系统中的计算资源提供粒度化QoS的方法的一种实施方式的流程图;
图5是示出了用于为计算系统中的计算资源提供粒度化QoS的方法的另一实施方式的流程图;以及
图6是示出了用于为计算系统中的计算资源提供粒度化QoS的方法的又一实施方式的流程图;
具体实施方式
如本领域技术人员将明白的,上述实施方式的各个方面可以被具体实现为系统、方法或程序产品。相应地,实施方式可以采用完全硬件实施方式的形式,完全软件实施方式(包括固件、常驻软件、宏代码等)的形式,或者组合了本文中可以统称为“电路”、“模块”或“系统”的软件和硬件方面的实施方式的形式。此外,实施方式可以采用包含在存储下文中被称为代码的机器可读代码、计算机可读代码和/或程序代码的一个或更多个计算机可读存储设备中的程序产品的形式。存储设备可以是有形的、非暂态的和/或非发送的。存储设备可以不包含信号。在某一实施方案中,存储设备仅包含用于访问代码的信号。
在本说明书中描述的许多功能单元已经被标记为模块,以便更为特别地强调它们的实现独立性。例如,模块可以被实现为包括定制VLSI电路或门阵列、比如逻辑芯片、晶体管的现货供应的半导体器件或其他分立组件的硬件电路。模块还可以实现于可编程硬件设备中,比如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等。
还可以在供各种类型的处理器执行的机器可读代码和/或软件中实现模块。代码的识别模块例如可以包括一个或更多个物理或逻辑可执行代码块,所述一个或更多个物理或逻辑可执行代码块可以被组织为对象、程序或函数。然而,可执行的识别模块不必在物理上被放置在一起,而是可以包括存储在不同位置中的不同指令,当在逻辑上连接到一起时,该不同指令包括上述模块并实现该模块的所述目的。
实际上,代码的模块可以是单个指令或多个指令,并且甚至可以分布在若干不同代码段、不同程序以及若干存储器设备上。类似地,在本文中,可以在模块内识别和例示操作数据,并且可以以任何合适的形式实现以及在任何合适类型的数据结构内组织操作数据。操作数据可以被收集作为单个数据集,或者可以分布在不同位置上,包括分布在不同计算机可读存储设备上。在模块或模块的一部分以软件实现的情况下,软件的一部分存储在一个或更多个计算机可读存储设备上。
可以使用一个或更多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读存储介质。计算机可读存储介质可以是存储代码的存储设备。存储设备例如可以是但不限于电、磁、光学、电磁、红外、全息、微机械或半导体系统、装置或设备,或者前述的任何合适组合。
存储设备的更为具体的示例(非穷举性列表)将包括:具有一个或更多个布线的电连接器、便携式计算机盘片、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPROM或快闪存储器)、便携式致密盘只读存储器(CD-ROM)、光学存储设备、磁性存储设备,或前述的任何合适组合。在本文档的上下文中,计算机可读介质可以是任何有形介质,该有形介质可以包含或存储供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备使用的程序。
用于执行实施方式的操作的代码可以以一种或更多种编程语言的任何组合编写,包括比如Python、Ruby、Java、Smalltalk、C++等的面向对象编程语言以及比如“C”编程语言的常规过程编程语言和/或比如汇编语言的机器语言。代码可以整体在用户计算机上执行,作为单独的软件包部分在用户计算机上执行,或者部分在用户计算机上以及部分在远程计算机上执行,或者整体在远程计算机或服务器上执行。在后面的情形下,远程计算机可以通过任何类型的网络连接到用户计算机,包括局域网(LAN)或广域网(WAN),或者可以(例如,通过使用互联网服务提供商的互联网)进行与外部计算机的连接。
整个说明书中的对“一种实施方式”或“实施方式”或类似语言的引用意味着结合该实施方式描述的特定特征、结构或特性被包括在至少一种实施方式中。因此,在整个本说明书中的各处出现的短语“在一种实施方式中”或“在实施方式中”或类似语言不必都指代同一实施方式,而是意味着“一个或多个但不是所有实施方式”,除非以其他方式明确指定。术语“包括”、“包含”、“具有”及其变型意味着“包含但不限于”,除非以其他方式明确指定。对术语的枚举式列出不是隐含上述术语中的任何一个或所有是相互排斥的,除非以其他方式明确指定。术语“一”和“该”也指代“一个或更多个”,除非以其他方式明确指定。
此外,可以按照合适的方式组合上述实施方式中的所述特征、结构或特性。在下面的描述中,提供了许多具体细节(比如,编程、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等的示例),以便提供对实施方式的全面理解。然而,相关领域的技术人员将认识到,各个实施方式可以在没有上述具体细节中的一个或多个的情况下或者利用其他方法、组件、材料等实现。在其他实例中,没有详细地示出或描述公知的结构、材料或操作,以便避免混淆实施方式的各个方面。
下面参照根据实施方式的方法、装置、系统和程序产品的示意性流程图和/或示意性框图,描述上述实施方式的各个方面。将要理解的是,示意性流程图和/或示意性框图中的每个块以及示意性流程图和/或示意性框图中的块的组合可以利用代码来实现。这些代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器来制成机器,从而使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现一个或更多个示意性流程图和/或示意性框图块中指定的功能/动作的模块。
代码还可以存储在存储设备中,该存储设备可以指导计算机、其他可编程数据处理装置或其他设备来以特定方式作用,从而使得将存储设备中存储的指令制成制品,该制品包括用于实现一个或更多个示意性流程图和/或示意性框图块中指定的功能/动作的指令。
还可以将代码加载到计算机、其他可编程数据处理装置或其他设备上,从而使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤来产生计算机实现的进程,从而在计算机或其他可编程装置上执行的指令提供用于实现一个或更多个流程图和/或框图块中指定的功能/动作的进程。
附图中的示意性流程图和/或示意性框图例示了根据各个实施方式的装置、系统、方法和程序产品的可能实现的体系架构、功能和操作。在这点上,示意性流程图和/或示意性框图中的每个块可以表示代码模块、代码段或代码部分,其包括用于实现所指定的逻辑功能的代码的一个或更多个可执行指令。
还应该注意的是,在一些替选实现中,块中记录的功能可以不按照图中记录的顺序出现。例如,取决于所涉及的功能,连续示出的两个块实际上可以是基本上同时执行,或者上述块有时可以按照相反的顺序执行。其他步骤和方法可以被设想为在功能、逻辑或效果上等价于所例示的图中的一个或更多个块或其一部分。
尽管在流程图和/或框图中可以使用各种箭头类型和直线类型,但是它们被理解为不是限制对应实施方式的范围。实际上,可以使用一些箭头或其他连接器来指示仅仅所述实施方式的逻辑流。例如,箭头可以指示所述实施方式的所列出步骤之间的未被指定的持续时间的等待或监视时段。还将注意的是,框图和/或流程图中的每个块以及框图和/或流程图中的块的组合可以利用基于专用硬件的系统或专用硬件和代码的组合来实现,该基于专用硬件的系统执行所指定的功能或动作。
在每个图中对元件的描述可以指代先前图中的元件。在所有图中,相同的附图标记指代相同的元件,包括替选实施方式的相同元件。
总的来说,与传统调度相比,所公开的系统、装置、方法和程序产品为计算系统中的计算资源提供更粒度化的QoS。使用身份和细节来标记线程,以便提高资源分配。虽然大部分应用是多线程的,然而例如在游戏和参数化建模的情况下,总有比其他线程显著更要求高的主工作线程。为了优化应用程序,在单个核上分离主工作线程,其中没有其他线程被调度干扰该主工作线程。其他线程可以在剩余的核上自由分布。在这里,设置应用程序的进程外优先级让调度器知道如何使该应用程序与其他应用程序相平衡,同时不在应用程序整体下而是基于其需求以不同的方式管理计算进程的个体线程。
当今的CPU响应于系统需求的变化而通电和断电。该处理是被动的,并且没有将什么样的工作负荷会到来或者当前工作负荷何时结束纳入考虑。被动式CPU来回移动计算进程,以重新平衡和优化资源;然而,该过程是昂贵的并且在其重新分配计算进程时消耗可能不需要的资源。通过获知新线程的计算需求、重要性和敏感度,调度器可以第一时间将该线程放置在正确的核上。这可以包括结合以较慢且稳定的速度操作的但是对于非计算敏感或时间敏感的许多线程而言是足够的低功率核。通过预先正确分配和平衡资源,大大减少了为了降低总电力消耗或响应于需求所必需的频繁CPU电力状态变化。来自线程重新分配的开销显著减小。该效率减小了平均CPU电力消耗(并且由此降低了总电力消耗)。
当前CPU跨所有核具有固定的L2/L3缓存大小。当CPU代表线程处理请求时,该CPU根据需要在L1、L2和L3缓存之间移动资源。CPU首先按照次序从缓存请求数据。必须传播到下一级的每个请求被称为缓存未命中。每个后续层级的缓存显著慢于其之前的缓存,其中,主存储器是最慢的操作。因此,非常有益的是,尽可能在最靠近CPU的缓存中完成操作。
超线程通过在两个逻辑核之间分割L2缓存进一步限制了L2缓存,这使可用核的数量加倍,但是也增加了缓存未命中的机率。在大多数计算场景下,附加核的益处超过失去缓存的成本。获知线程引入的工作负荷的类型,接着允许改变对一些具有超线程而一些不具有超线程的核的选择,从而使得能够针对工作负荷将线程分配至最适当的核。最终的结果是以较低的开销进行更快更有效的处理。在该情况下的电力节省延伸为主存储器上的需求减少。
获知应用程序工作负荷的完整组成可以使得能够判定是本地处理工作还是将其推送至外部计算设备(例如,计算场)。该判定对于网络资源以及将工作负荷发送至何处更有效。还可以判定哪些网络资源是最有效的或足以重定向工作负荷。这在移动环境中特别有用,其中,连接到电源的膝上型计算机可能有足够的资源来最有效地本地完成工作,而不使用电池电力。
图1描绘了为计算系统中的计算资源提供粒度化QoS的系统100。系统100可以包括电子设备105,电子设备105自身可以包括处理器110、存储器器115、粒度化资源模块120以及网络接口125。在一些实施方式中,电子设备105可以经由数据网络150连接至另一设备,例如远程计算设备130。数据网络150可以是因特网、局域网、广域网、Wi-Fi网、移动电话网或其组合。
电子设备105可以是能够使用微处理器、微控制器或包括但不限于通用计算设备、专用(专门用途的)计算设备等的其他处理设备来执行计算进程的任何数字设备。在一些实施方式中,电子设备105可以是个人计算机,包括但不限于,移动电话、智能电话、平板电脑、膝上型计算机、手持式计算机、可穿戴计算机、台式计算机、游戏控制台等。在其他实施方式中,电子设备105可以是嵌入式计算机,例如片上系统(SOC)、应用规定的标准处理器(ASSP)、专用指令集处理器(ASIP)等。
在一种实施方式中,处理器110可以包括能够执行计算机可读指令和/或能够进行逻辑运算的任何已知的控制器。例如,处理器110可以是微控制器、微处理器、中央处理单元(CPU)、图形处理单元(GPU)、辅助处理单元、FPGA或类似可编程控制器。在一些实施方式中,处理器110执行存储在存储器器115中的指令以执行本文所描述的方法和例程。处理器110通信地耦接至存储器器115、粒度化资源模块120以及网络接口125。
在一些实施方式中,处理器110可以包括多个处理单元例如多个处理核、多个CPU、多个微控制器等。在某些实施方式中,多个处理单元可以具有不同的系统特性。例如,处理器110可以具有第一CPU,该第一CPU具有2.4GHz的处理器速度并且具有八个处理器核。处理器110也可以包括第二CPU,该第二CPU具有4.2GHz的处理器速度并且必须调用处理器核。在其他示例中,第一CPU和第二CPU可以具有不同数量的存储器缓存。
在一种实施方式中,存储器器115是计算机可读存储介质。在一些实施方式中,存储器115包括易失性计算机存储介质。例如,存储器器115可以包括随机存取存储器(RAM),所述随机存取存储器(RAM)包括动态RAM(DRAM)、同步动态RAM(SDRAM)和/或静态RAM(SRAM)。在一些实施方式中,存储器115包括非易失性计算机存储介质。例如,存储器115可以包括硬盘驱动器、闪速存储器或任何其他合适的非易失性计算机存储设备。在一些实施方式中,存储器115包括易失性计算机存储介质和非易失性计算机存储介质二者。
在一些实施方式中,存储器115存储与为计算系统中的计算资源提供粒度化QoS有关的数据,例如,存储器115可以存储线程级标记、进程级标记、线程简档等。在一些实施方式中,存储器器115还存储程序代码及相关数据,例如在电子设备105上操作的操作系统或其他控制器算法。
在一种实施方式中,粒度化资源模块120被配置成识别属于计算过程的线程、识别与该线程相关联的一个或更多个线程级标记、基于一个或更多个线程级标记来确定线程的计算需求以及基于计算需求将线程分配至处理器核中的一个处理器核。粒度化资源模块120可以基于一个或更多个线程级标记来确定线程的进程内优先级。粒度化资源模块120还可以基于进程内优先级将硬件资源分配给线程,其中,从被分配给计算进程的一组硬件资源分配硬件资源。
在一些实施方式中,粒度化资源模块120可以识别执行计算进程的计算机系统的系统属性,其中,还基于系统属性将线程分配给处理器核中的一个处理器核。在一种实施方式中,粒度化资源模块120可以识别未标记线程,其中,未标记线程未与任何标记相关联,并且将未标记线程与一个或更多个线程简档进行比较,并且基于比较将一个或更多个标记与未标记线程进行关联。
在一些实施方式中,电子设备105还可以包括输入设备和/或输出设备。在某些实施方式中,输入设备可以包括可以包括任何已知的计算机输入设备,包括触摸面板、按钮、键盘、触笔、麦克风等。在一些实施方式中,输入设备可以与输出设备集成例如作为触摸屏或类似的触敏显示器。在一些实施方式中,输入设备包括触摸屏,使得可以使用在触摸屏上显示的虚拟键盘和/或通过在触摸屏上进行手写来输入文本。在一些实施方式中,输入设备包括两个或更多个不同的设备,例如键盘和触摸面板。
在某些实施方式中,输出设备可以包括电子可控制显示器或显示设备。输出设备可以被配置成输出视觉、听觉和/或触觉信号。在一些实施方式中,输出设备包括能够向用户输出视觉数据的电子显示器。例如,输出设备可以包括但不限于LCD显示器、LED显示器、OLED显示器、投影仪或能够向用户输出图像、文本等的类似显示设备。作为另一非限制性示例,输出设备可以包括可穿戴显示器例如智能手表、智能眼镜、抬头显示器等。此外,输出设备可以是以下设备的部件:智能电话、个人数字助理、电视机、平板电脑、笔记本(膝上型)计算机、个人计算机、车辆仪表板等。
在某些实施方式中,输出设备包括用于产生声音的一个或更多个扬声器。例如,输出设备可以产生可听警报或通知(例如,嘟嘟声或铃声)。在一些实施方式中,输出设备包括用于产生振动、运动或其他触觉反馈的一个或更多个触觉设备。在一些实施方式中,输出设备中的所有输出设备或一部分输出设备可以与输入设备306集成在一起。例如,输入设备和输出设备可以形成触摸屏或类似的触敏显示器。在其他实施方式中,输出设备可以位于输入设备附近。
在某些实施方式中,电子设备105可以包括网络接口125。在一种实施方式中,网络接口125包括将电子设备105直接或经由数据网络150连接至远程计算设备130的软件和/或硬件。例如,网络接口125可以包括用于使用计算机网络协议将查询发送至远程计算设备130和/或从远程计算设备130接收响应和/或数据的物理网络适配器和一个或更多个协议栈。在一种实施方式中,网络接口125可以包括通过无线电或其他无线通信介质将电子设备105连接至远程计算设备130的无线网络接口。在另一实施方式中,网络接口125可以包括将电子设备105连接至远程计算设备130的有线或光纤接口。在一些实施方式中,网络接口125被配置成通过数据网络150与远程计算设备130建立安全连接。
在一种实施方式中,远程计算设备130被配置成代表电子设备105执行一个或更多个计算进程。例如,电子设备105可以将一个或更多个计算进程卸载至远程计算设备130,其中,远程计算设备130执行卸载的计算进程并且将其结果返回至电子设备105。在某些实施方式中,远程计算设备130可以是服务器。在其他实施方式中,远程计算设备130可以是服务器场或集群的一部分。
如所描绘的,远程计算设备130可以包括至少一个远程处理器135、远程存储器140以及网络接口145。在一种实施方式中,远程处理器135可以包括能够执行计算机可读指令和/或能够进行逻辑运算的任何已知的控制器。例如,远程处理器135可以是微控制器、微处理器、中央处理单元(CPU)、图形处理单元(GPU)、辅助处理单元、FPGA或类似可编程控制器。在一些实施方式中,远程处理器135执行存储在远程存储器140中的指令以执行本文所描述的方法和例程。远程处理器135通信地耦接至远程存储器140和网络接口145。
在一种实施方式中,远程存储器1405是计算机可读存储介质。在一些实施方式中,远程存储器140包括易失性计算机存储介质。例如,远程存储器140可以包括随机存取存储器(RAM),所述随机存取存储器(RAM)包括动态RAM(DRAM)、同步动态RAM(SDRAM)和/或静态RAM(SRAM)。在一些实施方式中,远程存储器140包括非易失性计算机存储介质。例如,远程存储器140可以包括硬盘驱动器、闪速存储器或任何其他合适的非易失性计算机存储设备。在一些实施方式中,远程存储器140包括易失性计算机存储介质和非易失性计算机存储介质二者。
在一些实施方式中,远程存储器140存储与为计算系统中的计算资源提供粒度化QoS有关的数据,例如,远程存储器140可以存储线程简档等。在一些实施方式中,远程存储器140还存储程序代码及相关数据,例如在远程计算设备上操作的操作系统或其他控制器算法。
在一种实施方式中,网络接口145包括将远程计算设备130直接或经由数据网络150连接至电子设备105的软件和/或硬件。例如,网络接口145可以包括用于使用计算机网络协议从电子设备105接收查询和/或发送响应和/或数据的物理网络适配器和一个或更多个协议栈。在一种实施方式中,网络接口145可以包括通过无线电或其他无线通信介质将远程计算设备130连接至电子设备105的无线网络接口。在另一实施方式中网络接口145可以包括将远程计算设备130连接至电子设备105的有线或光纤接口。在一些实施方式中,网络接口145被配置成通过数据网络150与电子设备105建立安全连接。
在某些实施方式中,远程计算设备130还可以包括粒度化资源模块(未示出)。粒度化资源模块可以与上述的粒度化资源模块120基本相似。此外,在一些实施方式中,远程计算设备130可以包括与上述参照电子设备105描述的输入设备和/或输出设备相似的输入设备和/或输出设备。
图2描绘了用于为计算系统中的计算资源提供粒度化QoS的粒度化QoS装置200。粒度化QoS装置200可以包括粒度化资源模块120,并且可以连接耦接至接收输入笔划数据的输入设备125。如所描绘的,粒度化资源模块120包括线程模块205、标记模块210、需求模块215以及分配模块220。在一些实施方式中,粒度化QoS装置200还可以包括以下中的一个或多个:主线程模块225、优先级模块230、依赖关系模块235、强度模块250、时间模块255、缓存模块260、简档模块240、关联模块245属性模块265、分配模块270以及成本模块275。模块205至模块275可以彼此连接耦接。在某些实施方式中,如上所述,可以用硬件电路来实现模块205至模块275中的每个模块。在其他实施方式中,如上所述,可以将模块205至模块275中的一个或更多个模块实现为固件和/或软件,例如在计算机可读介质上实施的程序代码。
在一种实施方式中,线程模块205被配置成识别属于计算进程的线程。在某些实施方式中,计算进程可以是在电子设备105上执行的软件应用程序。在一些实施方式中,计算进程可以是包含单个工作线程的单线程计算进程。在其他实施方式中,计算进程可以是包含多个工作线程的多线程计算进程。在某些实施方式中,多线程计算进程可以包括主工作线程和一个或更多个次级工作线程。
在一些实施方式中,线程模块205可以确定线程是主工作线程还是次级工作线程,可以确定线程的进程内优先级,和/或可以确定计算进程的线程的线程依赖关系。在某些实施方式中,线程模块210可以包括用于执行上述功能的一个或更多个子模块,例如主线程模块225、优先级模块230和/或依赖关系模块235。
在一种实施方式中,主线程模块225被配置成识别用于计算进程的主工作线程。例如,主线程模块225可以确定线程是否是主工作线程。在一种实施方式中,主工作线程执行计算进程的主体。在另一实施方式中,主工作线程可以是用于与用户交互的用户接口线程。在又一实施方式中,主工作线程可以与次级工作线程相配合。
在某些实施方式中,主工作线程与主工作标记相关联,其中,主线程模块225使用主工作标记来识别主工作线程。在另一实施方式中,主线程模块225可以使用对计算进程的运行时分析以确定线程是否是主工作线程。主线程模块225还可以被配置成确定线程是否是次级工作线程。响应于识别主工作线程,主线程模块225可以将指示提供给任务分配模块,其中,任务分配模块220将主工作线程分配给其自身拥有的处理器核(例如,未被分配给计算进程的次级工作线程的处理器核)。
在一种实施方式中,优先级模块230被配置成基于一个或更多个线程级标记来确定线程的进程内优先级。如本文所使用的,线程的进程内优先级指的是该线程相对于同一计算进程的其他线程的重要性(优先级)。例如,计算进程的处理用户交互的线程比同一计算进程的从非易失性存储器115取回数据的线程具有更高的进程内优先级。进程内优先级指示在计算进程内应分配计算资源的顺序。
在某些实施方式中,优先级模块230还可以被配置成基于一个或更多个进程级标记来确定计算进程的进程外优先级。如本文所使用的,进程的进程外优先级指的是计算进程相对于在电子设备105上执行的其他计算进程的重要性(优先级)。优先级模块230可以向CPU调度器或类似的调度算法指示进程外优选级,其中,基于进程外优选级将一组硬件资源分配给计算进程。
在一些实施方式中,优先级模块230可以接收特定线程的时间敏感水平的指示,其中,优先级模块230基于时间敏感水平将进程内优先级分配给线程。例如,标记可以指示线程对延迟的容差(时间敏感水平),其中,优先级模块230可以响应于线程对延迟具有较高的容差将较低的进程内优先级分配给线程。相反,优先级模块230可以响应于线程对延迟具有较低的容差将较高的进程内优先级分配给线程。
在一种实施方式中,依赖关系模块235被配置成识别属于计算进程的多个线程之间的线程依赖关系。在某些实施方式中,依赖关系模块235可以向优先级模块230指示线程依赖关系,其中,优先级模块230基于线程依赖关系来确定线程的进程内优先级。例如,优先级模块230可以基于由依赖关系模块235识别的线程依赖关系来分配进程内优先级。
在一些实施方式中,依赖关系模块235可以使用标记来识别线程依赖关系。例如,编程者可以添加指示第一线程依赖于第二线程的线程级标记。在其他实施方式中,依赖关系模块235可以通过分析计算进程的线程的运行时行为来确定线程依赖关系。例如,依赖关系模块235可以识别第一线程何时在继续执行之前等待第二线程以执行任务。依赖关系模块235还可以识别也在执行之前等待第二线程完成其任务的第三线程。此处,运行时行为可以指示第一线程依赖于第二线程和第三线程,并且第三进程也依赖于第二进程。
在一种实施方式中,标记模块210被配置成识别与线程相关联的一个或更多个标记。在一些实施方式中,特定线程可以与一个或更多个线程级标记以及一个或更多个进程级标记相关联。如本文所使用的,线程级标记指的是描述线程的特征的信息。在一些实施方式中,线程级标记可以识别线程,指示线程的优选级,指示线程的计算需求/偏好,指示与同一计算进程的另一线程的关系等。如本文所使用的,进程级标记指的是描述计算进程的特征的信息。计算进程的每个线程与同一进程级标记相关联(例如,线程继承计算进程的进程级标记)。在一些实施方式中,进程级标记可以识别计算进程,可以指示计算进程的优先级,可以指示计算进程的计算需求/偏好等。
在一些实施方式中,标记模块210可以识别由计算进程的编写者提供的标记。例如,创建计算进程的编程者可以提供指示计算进程的线程的特征和/或计算需求的一个或更多个标记。在一种实施方式中,编写者可以提供一个或更多个线程级标记。在另一实施方式中,编程者可以提供一个或更多个进程级标记。在其他实施方式中,标记模块210可以识别基于计算进程的分析(例如,运行时分析)自动生成的标记。例如,关联模块245可以基于计算进程的运行时分析将一个或更多个线程级标记和/或一个或更多个进程级标记与线程自动关联。
在一些实施方式中,标记模块210可以识别未标记线程,其中,未标记线程不与任何标记相关联。在又一实施方式中,标记模块210可以使一个或更多个标记与计算进程的另外的未标记线程相关联。例如,标记模块210可以将未标记线程与线程简档进行比较,并且基于匹配的线程简档将一个或更多个线程级标记与未标记线程进行关联。在某些实施方式中,标记模块210可以包括用于将一个或更多个标记与计算进程的另外的未标记线程进行关联的一个或更多个子模块,例如简档模块240和/或关联模块245。
在一种实施方式中,简档模块240被配置成将线程与一个或更多个线程简档进行比较。例如,简档模块240可以将未标记线程与一个或更多个线程简档进行比较,其中,关联模块245基于比较将标记与未标记线程进行关联。在另一示例中,简档模块240可以将动态生成的线程简档与一个或更多个存储的线程简档进行比较,其中,针对线程基于存储器中的运行时分析来动态生成所述线程简档,其中,关联模块245基于比较将标记与未标记线程进行关联。
在一些实施方式中,可以将一个或更多个线程简档存储在存储器115中。在其他实施方式中,可以将一个或更多个线程简档存储在外部存储器,例如远程计算设备130的远程存储器140中。简档模块240可以控制网络接口125以向远程计算设备130查询与未标记线程匹配的线程简档。远程计算设备130可以响应于查询返回一个或更多个线程级标记。
在某些实施方式中,简档模块240可以为未标记线程建立简档。在一种实施方式中,简档基于未标记线程的特征,包括但不限于长度、调用、备注等。在一些实施方式中,简档模块240在未标记线程运行时监测处理器110的使用,以便识别特征,例如,等待时间(例如,线程等待另一线程完成任务用了多长时间)、等待计数(例如,线程多少次等待另一线程完成任务)、输入/输出(I/O)操作、使用CPU时间的量、用于完成的时间量(包括执行时间和等待时间二者)、使用缓存/存储器的量、缓存未命中(和/或命中)的次数等。基于指示线程特征的收集数据,简档模块240形成线程的简档。
响应于生成未标记线程的简档,然后,简档模块240可以将为未标记线程建立的简档与存储在存储器(例如,本地存储器115和/或远程存储器140)中的一个或更多个线程简档进行比较。在某些实施方式中,可以将一个或更多个线程简档与一个或更多个线程级标记进行关联,其中,简档模块240识别与和为未标记线程建立的简档匹配的线程简档对应的一个或更多个线程级标记。简档模块240可以指示相应的关联模块245,其中,关联模块245将与匹配的线程简档对应的一个或更多个线程级标签与未标签线程进行关联。
在一种实施方式中,关联模块245被配置成将一个或更多个标记与未标记线程进行关联。在某些实施方式中,关联模块245从简档模块240接收一个或更多个匹配的标记,其中,关联模块245将匹配的标记与未标记线程进行关联。匹配标记可以基于未标记线程与一个或更多个线程简档的比较。在一些实施方式中,关联模块245可以生成将未标记线程与一个或更多个标记进行关联的文件。在其他实施方式中,关联模块245可以编辑与未标记线程关联的元数据,以便将未标记线程与元数据中的一个或更多个标记进行关联。
在一种实施方式中,需求模块215被配置成基于一个或更多个标记来确定线程的计算需求。例如,需求模块215可以基于由标记模块210识别的至少一个线程级标记来确定计算需求。在一种实施方式中,计算需求反映线程的服务质量(QoS)。例如,需求模块215可以基于线程级QoS标记来确定线程的计算需求。
在一些实施方式中,需求模块215可以基于标记来确定特定类型的计算需求。在一些实施方式中,由需求模块215识别的计算需求包括但不限于线程的计算强度、线程的时间敏感度以及线程的缓存/存储器需求。在某些实施方式中,需求模块215可以包括用于识别线程的计算需求的一个或更多个子模块,例如,强度模块250、时间模块255和/或缓存模块260。
在一种实施方式中,强度模块250被配置成基于线程级标记来确定线程的计算强度。如本文所使用的,线程的计算强度指的是执行线程所需的处理能力的量。在一些实施方式中,可以用CPU周期来测量计算强度。在其他实施方式中,可以通过线程所需的计算次数和/或类型来估计计算强度。在一些实施方式中,计算强度可以指示线程的速度需求。因此,在某些实施方式中,强度模块250可以基于一个或更多个线程级标记来确定线程的速度需求。速度需求和/或计算强度可以与计算进程的其他线程有关和/或与在电子设备105上执行的其他计算进程有关。
例如,在主工作线程可以继续进行其执行之前,该主工作线程可以取决于次级工作线程以完成特定任务。在一些实施方式中,可以通过一个或更多个标记例如指示主工作线程必须等待次级工作线程的标记来指示线程依赖关系。因此,强度模块250可以基于一个或更多个标记来确定次级工作线程具有更高的速度需求。任务分配模块220可以基于该高速度需求将次级工作线程分配给较快的处理器核,以便将主工作线程等待次级工作线程的时间量降至最低。
在另一实施方式中,强度模块250可以识别由特定线程所需的计算进程的资源(例如,CPU周期)的百分比。例如,许多计算进程具有需要较大部分资源的主工作线程以及需要较少部分资源的一个或更多个辅助/次级工作线程。在一些实施方式中,计算强度可以指示线程所需的资源的分配。因此,在某些实施方式中,任务分配模块220可以将需要较大量资源的线程分配给具有较多资源(例如,较大处理器速度和/或较大L2/L3缓存)的处理器核,并且将需要较少量资源的线程分配给具有较少资源的处理器核(例如,具有较小速度/缓存的核或者其被较多线程共享的核)。
在一种实施方式中,时间模块255被配置成基于标记来确定线程的时间敏感水平。在一些实施方式中,时间敏感水平可能涉及线程对延迟的容差。时间敏感水平可以基于与线程相关联的线程级QoS值。例如,具有较低QoS水平的线程可以比具有较高QoS水平的另一线程更容忍延迟。在一些实施方式中,时间敏感度可以是进程内时间敏感度(例如,时间敏感度与计算进程中的其他线程有关)。在其他实施方式中,时间敏感水平可以是进程外时间敏感度(例如,时间敏感度与在电子设备105运行的其他计算进程、应用程序或任务有关)。在某些实施方式中,时间模块255可以向任务分配模块220指示时间敏感水平,其中,任务分配模块220可以基于时间需求将线程分配给处理器核。
在另一实施方式中,时间模块255还可以被配置成基于一个或更多个进程级标记来确定计算进程的时间需求。在一种实施方式中,时间需求可以是期望完成计算进程和/或线程的时间量。在一些实施方式中,时间敏感度可以是进程内时间敏感度(例如,与计算进程中的其他线程有关的时间敏感度)。在其他实施方式中,时间敏感水平可以是进程外时间敏感度(例如,时间敏感度与在电子设备105上运行的其他计算进程、应用程序或任务有关)。在某些实施方式中,时间模块255可以向任务分配模块220指示时间需求,其中,任务分配模块220可以基于时间需求将线程分配给处理器核。在又一实施方式中,任务分配模块220可以基于时间需求来确定是否将线程卸载至远程计算设备130。
在一种实施方式中,缓存模块260被配置成识别线程的存储器缓存需求。存储器缓存需求可以指示用于线程的存储器缓存(也被称为CPU缓存)的优选量。电子设备105中的每个处理器核包括存储器缓存(也被称为CPU缓存)。当处理器核需要数据值时,其在在存储器110中(例如,在主存储器(RAM)或非易失性存储器中)进行检查之前检查存储器缓存中的数据值的拷贝。在一些实施方式中,处理器核可以包括多级存储器缓存,如分层组织的L1、L2、L3等,以使得处理器核在检查主存储器(例如,存储器110)之前针对所需数据值对每个层级进行检查。
在一些实施方式中,线程级标记可以指示线程会消耗大量缓存,其中,缓存模块260基于该标记来识别高存储器缓存需求,并且任务分配模块220可以将线程分配给具有较高水平的存储器缓存的处理器核。替选地,任务分配模块220可以该线程分配给禁用超线程的处理器核。在超线程时,物理处理器核包括两个逻辑处理器,其中两个逻辑处理器中的每个可以独立于另一个操作,并且这两个逻辑处理器共享处理器核的存储器缓存。因此,当禁用超线程时,要消耗大量缓存的线程可获得大量存储器缓存。
在一些实施方式中,需求模块215可以向任务分配模块220指示计算需求,其中,任务分配模块220基于该计算需求将线程分配给处理器核。例如,需求模块215可以向任务分配模块220指示速度需求、时间需求、时间敏感水平和/或存储器缓存需求,其中,任务分配模块基于所接收到的信息将线程分配给处理器核。
在一种实施方式中,任务分配模块220被配置成基于计算需求将线程分配给处理器核中的一个处理器核。例如,任务分配模块220可以接收计算进程的特定线程的一个或更多个计算需求的指示,其中,任务分配模块220基于所接收的计算需求将该特定线程分配给处理器核。在一些实施方式中,任务分配模块220可以将主工作线程分配给保留用于主工作线程的处理器核中的一个处理器核(例如,使主工作线程与其拥有的处理器核分离)。
在某些实施方式中,任务分配模块220还可以基于执行线程的计算系统(例如,电子设备105)的电力状态来分配线程。例如,任务分配模块220可以响应于电力状态是电池供电而将线程分配给具有较低处理器速度的处理器核,并且响应于电力状态是外部供电而将线程分配给具有较高处理器速度的处理器核。
在一些实施方式中,任务分配模块220基于线程的速度需求将线程分配给处理器核。例如,考虑到计算系统具有以第一速度操作的第一组处理器核以及以第二较慢速度操作的第二组处理器核。如果特定线程具有大于阈值的速度需求(替选地,如果线程具有小于阈值的目标完成时间),则任务分配模块220可以将线程分配给第一组(较快)处理器核中的处理器核,否则,任务分配模块220可以将线程分配给第二(较慢)组处理器核中的处理器核(例如,响应于小于速度需求的线程完成时间)。
在某些实施方式中,任务分配模块220可以基于时间需求将线程分配给处理器核。例如,时间模块255可以向任务分配模块220指示时间需求,其中,任务分配模块220可以基于该时间需求将线程分配给处理器核。在又一实施方式中,任务分配模块220可以基于时间需求来确定是否将线程卸载至远程计算设备130。例如,如果线程不是时间敏感的(例如,具有较大的时间需求),则任务分配模块220可以将线程卸载至远程计算设备130,假定卸载线程的成本(例如,本地CPU成本、本地电力消耗成本等)小于本地处理线程的成本。
在一些实施方式中,任务分配模块220可以基于处理器速度和线程的估计长度来确定线程完成时间。例如,线程级标记可以指示线程可能需要一万八千(18,000)个处理器周期来完成。任务分配模块220可以通过将所估计的长度(18,000处理器周期)乘以处理器速度来确定线程完成时间。然后,任务分配模块220可以将线程完成时间与线程的时间需求和/或速度需求(如由一个或更多个线程级标记所指示的)进行比较。然后,任务分配模块可以将线程分配给可以完成线程(例如,基于线程的估计长度)同时还满足时间需求和/或速度需求的最慢的处理器核(例如,具有最慢处理器速度)。
在一些实施方式中,任务分配模块220基于存储器缓存需求将线程分配给处理器核。例如,需求模块215可以识别特定线程的存储器缓存需求,其中,任务分配模块220基于存储器缓存需求来选择处理器核。在某些实施方式中,存储器缓存需求可能超过预定阈值,其中,任务分配模块220可以将线程分配给禁用超线程的处理器核。替选地,任务分配模块220可以基于存储器缓存需求禁用线程被分配至的处理器核上的超线程。
如本文所使用的,超线程指的是将处理器核分成多个逻辑处理器(一般,分成两个逻辑处理器),其中,每个逻辑处理器共享处理器核的工作负荷。当超线程激活时,处理器核的存储器缓存在逻辑处理器之间分割。通过禁用超线程,任务分配模块220使得线程能够使用处理器核的整个存储器缓存。任务分配模块220可以响应于线程具有指示该线程会消耗大量存储器缓存的标记而将线程分配给禁用超线程的处理器核。
在一些实施方式中,任务分配模块220可以基于执行线程的计算机系统的一个或更多个系统特性将线程分配给处理器核。在另一实施方式中,任务分配模块220可以响应于将线程分配给处理器核而将计算资源分配给该线程。在又一实施方式中,任务分配模块220可以基于本地执行线程的成本将线程分配给处理器核。在某些实施方式中,任务分配模块220可以包括用于执行上述功能的一个或更多个子模块,例如,属性模块265、分配模块270和/或成本模块275。
在一种实施方式中,属性模块265被配置成识别执行计算进程的计算机系统(例如,电子设备105)的系统特性。在另一实施方式中,属性模块265还可以被配置成识别执行计算进程的计算机系统的电力状态。如本文所使用的,计算机系统的电力状态指的是计算系统是从内部源例如电池汲取电力还是从外部电力供给例如AC适配器汲取电力。电力状态还可以指的是电池的充电电平和/或电子设备105的电力模式,例如通过降低电子设备105的处理器、显示器和/或无线电收发器的供电消耗来延长电池寿命的电力节约模式。
计算机系统的系统属性可以包括最大处理器速度、最小处理器速度、在每个处理器速度下的电力消耗、存在处理器核的数量、存在CPU的数量、在每个CPU/处理器核中的高速缓冲存储器的量等。
在一些实施方式中,属性模块265和/或需求模块215可以向任务分配模块220指示系统属性,其中,任务分配模块220根据系数属性将线程分配给处理器核。例如,属性模块265还可以向任务分配模块220指示电力状态,其中,任务分配模块220还基于电力状态将线程分配给处理器核。更具体地,任务分配模块220可以响应于电力状态是电池供电而将线程分配给具有较低处理器速度的处理器核,并且可以响应于电力状态是外部供电(例如插入AC适配器或非便携式电源)而将线程分配给具有较高处理器速度的处理器核。
在一种实施方式中,分配模块270被配置成基于线程的进程内优先级将硬件资源分配给线程。硬件资源可以例如由CPU调度器从分配给计算进程的一组硬件资源分配。在一些实施方式中,分配模块270用作将一组硬件资源调度给计算进程的线程的子调度器。例如,分配模块270可以基于特定线程的进程内优先级将该组硬件资源的子集分配给特定线程。作为另一示例,分配模块270可以基于特定线程的计算需求即QoS水平将将该组硬件资源的子集分配给特定线程。
在一种实施方式中,成本模块275被配置成确定本地执行线程和/或计算进程的成本。在某些实施方式中,成本模块275可以用CPU资源(例如周期)、存储器资源、电力消耗、完成时间等来测量成本。在另一实施方式中,成本模块275还可以被配置成确定将计算进程(或线程)传送至远程计算设备130的成本。在某些实施方式中,成本模块275可以用CPU资源、存储器资源、电力消耗、完成时间等来测量成本。
在一些实施方式中,成本模块275可以向任务分配模块220指示计算出的成本,其中,任务分配模块220可以基于计算出的成本将线程分配给处理器核。在又一实施方式中,任务分配模块220可以基于由成本模块275计算出的成本来确定是否将计算进程卸载至远程计算设备130。
图3A是示出了为计算系统中的计算资源提供粒度化QoS的标记的集合300的一种实施方式的示意性框图。标记的集合300可以与计算进程的线程相关联。在一些实施方式中,标记的集合300可以包括与线程相关联的一个或更多个线程级标记。在又一实施方式中,标记的集合300可以包括与计算进程相关联(并且因此也与线程向关联)的一个或更多个进程级标记。在一些实施方式中,标记的集合300可以由标记模块210标识。另外,需求模块215可以基于标记的集合300来确定线程的一个或更多个计算需求。
如所描绘的,标记的集合300包括CPU密集型标记305、缓存密集型标记310、时间敏感标记315、主工作线程标记320以及优先级标记325。在一些实施方式中,标记的集合300可以包括所示出的标记305至标记325中的每个标记。在其他实施方式中,标记的集合300可以包括所示出的标记305至标记325中的一个或更多个标记。在一种实施方式中,程序员或线程的其他编写者可以提供标记305至标记325。在另一实施方式中,标记305至标记325可以例如通过标记模块210和/或关联模块245与线程自动关联。
在一种实施方式中,CPU密集型标记305指示线程的计算强度。在一些实施方式中,CPU密集型标记305可以具有指示该线程是计算密集型或是非计算密集型的二进制值。在其他实施方式中,CPU密集型标记305可以具有值的范围中的一个范围,其中,值的范围中的每个值指示线程的计算强度的度。在一种实施方式中,简档模块240可以识别线程的计算强度值(例如,度),并且关联模块245可以将具有相应计算强度的CPU密集型标记305与线程进行关联。
在一种实施方式中,缓存密集型标记310指示线程是否是存储器缓存密集型的。例如,基于缓存请求的次数,线程可以是存储器缓存密集型的。作为另一示例,基于缓存请求的比率,线程可以是存储器缓存密集型的。在一些实施方式中,缓存密集型标记310可以具有指示线程是计算密集型或者不是计算密集型的二进制值。在其他实施方式中,缓存密集型标记310可以具有值的范围中的一个范围,其中,值的范围中的每个值指示线程的存储器缓存强度的度。在一种实施方式中,简档模块240可以识别线程的存储器缓存强度值(例如度),并且关联模块245可以将具有相应存储器缓存强度值的缓存密集型标记310与线程进行关联。
在一种实施方式中,时间敏感标记315指示线程的计算强度。例如,如果预期在特定时间量内完成线程,则该线程可以是时间敏感的。作为另一示例,如果线程实时或接近实时地执行任务,则线程可以是时间敏感的。在一些实施方式中,时间敏感标记315可以具有指示线程是时间敏感或者不是时间敏感的二进制值。在其他实施方式中,时间敏感标记315可以具有值的范围中的一个范围,其中,值的范围中的每个值指示线程的时间敏感的度。在一种实施方式中,简档模块240可以识别线程的计算强度值(例如,度),并且关联模块245可以将具有相应时间敏感值的时间敏感标记315与线程进行关联。
在一种实施方式中,主工作线程标记320指示线程是否是存储器缓存密集型的。在一些实施方式中,主工作线程标记320可以具有指示线程是计算密集型或者是非计算密集型的二进制值。在一种实施方式中,线程模块205可以识别线程是否是主工作线程,并且关联模块245可以将具有相应二进制值的主工作线程标记320与线程进行关联。
在一种实施方式中,优先级标记325指示线程的进程内优先级。例如,线程的进程内优先级可以指示线程(例如,主工作线程或次级工作线程)对于进程的相对重要度。作为另一示例,线程的进程内优先级可以基于计算进程内的线程依赖关系。在一些实施方式中,优先级标记325具有二进制值,该二进制值指示线程是否是重要的并且应当优先于同一计算进程内的非重要线程。在其他实施方式中,优先级标记325可以具有值的范围中的一个范围,其中,值的范围中的每个值指示线程的优先级水平。在一种实施方式中,简档模块240可以识别线程的优先级水平,并且关联模块245可以将具有相应优先级水平的优先级标记325与线程进行关联。
所描绘的实施方式示出了标记的具体数量,然而,标记的集合300不限于所描绘数量的标记。在一些实施方式中,标记的集合300可以包括单个标记。在其他实施方式中,标记的集合300可以包括一打标记或更多。在再一实施方式中,标记的集合300可以为空,其中,标记模块210和/或关联模块245可以将一个或更多个标记与线程进行关联(例如,基于线程简档的比较和/或基于进程的运行时分析),由此填充标记的集合300。
图3B是示出了为计算系统中的计算资源提供粒度化QoS的计算系统350的一种实施方式的示意性框图。在一种实施方式中,计算系统350为电子设备105。计算系统350包括要执行的计算进程360、高速CPU 370以及低速CPU 380。在一种实施方式中,高速CPU 370包括两个处理器核372、374。在一种实施方式中,低速CPU 380包括四个处理器核382至388。
计算进程360包括主工作线程362和三个次级线程364至368。在一种实施方式中,主工作线程362是用户接口线程,其中,用户经由主工作线程362与计算进程360交互。在另一实施方式中,主工作线程362调用次级工作线程364至368以执行各种任务。在又一实施方式中,次级工作线程如次级工作线程364可以依赖另一次级工作线程如次级工作线程366和/或次级工作线程368以完成其任务。例如,次级工作线程364可以执行任务,其中,次级工作线程364依赖于次级工作线程366以取回(例如,从本地存储器、从远程存储器、从传感器等)完成该任务所需的数据。
在一种实施方式中,计算系统350识别主工作线程362,并且向主工作线程362分配高速CPU 370。计算系统350可能会由于主工作线程362为计算密集型的、具有高优先级和/或为时间密集型的而向主工作线程362分配高速CPU 370。例如,与主工作线程362相关联的一个或更多个标记可以指示主工作线程362的计算需求(例如,计算强度和/或时间敏感度)和/或指示主工作线程362的优先级。基于主工作线程362的计算需求和/或优先级,计算系统350将主工作线程362分配给高速CPU 370的处理器核372。在又一实施方式中,计算系统350可以将主工作线程362分配给专用处理器核372。如所描绘的,没有计算进程360的其他线程被分配给处理器核372。
在一种实施方式中,计算系统350识别次级工作线程364,并且将次级工作线程364分配给低速CPU 380。计算系统350可能会由于次级工作线程364不是计算密集型的、不具有高优先级和/或不是时间密集型的而将次级工作线程364分配给低速CPU 380的处理器核382。例如,与次级工作线程364相关联的一个或更多个标记可以指示次级工作线程364的计算需求(例如,计算强度和/或时间敏感度)和/或指示次级工作线程364的优先级。基于次级工作线程364的计算需求和/或优先级,计算系统350将次级工作线程364分配给低速CPU380的处理器核382。
虽然所描绘的设施方式示出没有计算进程360的其他线程被分配给处理器核382,但是在其他实施方式中可以将其他线程(来自同一计算进程360或来自在计算系统350上执行的其他计算进程)分配给处理器核382。
在一种实施方式中,计算系统350识别次级工作线程366,并且将次级工作线程366分配给低速CPU 380。此外,计算系统350可以将次级工作线程366分配给低速CPU 380的处理器核386。计算系统350可能会由于次级工作线程366不是计算密集型的、不具有高优先级和/或不是时间敏感度的而将次级工作线程366分配给低速CPU 380的处理器核386。例如,与次级工作线程366相关联的一个或更多个标记可以指示次级工作线程366的计算需求(例如,计算强度和/或时间敏感度)和/或指示次级工作线程366的优先级。基于次级工作线程366的计算需求和/或优先级,计算系统350可以将次级工作线程366分配给低速CPU 380的处理器核386。
在另一实施方式中,计算系统350还可以将次级工作线程368分配给低速CPU 380的处理器核386。计算系统350可以基于指示次级工作线程368不是计算密集型的、不具有高优先级和/或不是时间敏感度的一个或更多个标记而将次级工作线程368分配给低速CPU380的处理器核386。在一种实施方式中,计算系统350可以将次级工作线程366至368分配给同一处理器核(例如,处理器核386),以便通过关闭(例如,转换到低电力状态)空闲的处理器核384和处理器核388来节省处理器核384和处理器核388处的电力。在又一实施方式中,计算系统350可以将空闲处理器核374转换到低电力状态,由此节省电力。
图4是示出了为计算系统中的计算资源提供粒度化QoS的方法400的一种实施方式的流程图。在一种实施方式中,方法400由电子设备105来执行。在另一实施方式中,方法400可以由粒度化QoS装置200来执行。替选地,方法400可以由计算机可读存储介质例如存储器115来执行。计算机可读存储介质可以存储代码,该代码在处理器110上执行以执行方法400的功能。
方法400开始并识别405计算进程的至少一个线程。在一种实施方式中,线程模块205识别405计算进程的至少一个线程。在一些实施方式中,识别405计算进程的至少一个线程包括识别多个线程并且从多个线程中确定计算进程的主工作线程。在其他实施方式中,识别405计算进程的至少一个线程包括识别属于该计算进程的多个线程之间的线程依赖关系。
方法400识别410与线程相关联的一个或更多个标记。在一种实施方式中,标记模块210识别410与线程相关联的一个或更多个标记。在一些实施方式中,识别410与线程相关联的一个或更多个标记包括识别与线程相关联的至少一个线程级标记。在其他实施方式中,识别410与线程相关联的一个或更多个标记包括识别未与任何标记关联的线程(例如,识别未标记线程)。
方法400基于标记来确定415线程的计算需求。在一种实施方式中,需求模块215基于标记来确定415线程的计算需求。在一些实施方式中,基于一个或更多个标记来确定415计算需求包括基于一个或更多个标记来确定线程的速度需求和/或时间敏感水平。在某些实施方式中,基于一个或更多个标记来确定415计算需求包括识别线程的存储器缓存需求。
方法400基于计算需求将线程分配420给处理器核。方法400结束。在一种实施方式中,任务分配模块220基于计算需求将线程分配420给处理器核。在某些实施方式中,将线程分配420给处理器核包括将主工作线程分配给保留用于主工作线程的处理器核。在一些实施方式中,将线程分配420给处理器核包括进一步基于执行线程的计算设备的电力状态来分配线程。
图5是示出了为计算系统中的计算资源提供粒度化QoS的方法500的一种实施方式的示意性流程图。在一种实施方式中,方法500由电子设备105来执行。在另一实施方式中,方法500由粒度化QoS装置200来执行。替选地,方法500可以由计算机可读存储介质例如存储器115来执行。计算机可读存储介质可以存储代码,该代码在处理器110上执行以执行方法500的功能。
方法500开始并识别505计算进程的至少一个线程。在一种实施方式中,线程模块205识别505计算进程的至少一个线程。在一些实施方式中,识别505计算进程的至少一个线程包括识别多个线程并且从多个线程中确定计算进程的主工作线程。在其他实施方式中,识别505计算进程的至少一个线程包括识别属于该计算进程的多个线程之间的线程依赖关系。
方法500识别510与线程相关联的一个或更多个线程级标记。在一种实施方式中,标记模块210识别510与线程相关联的一个或更多个线程级标记。方法500基于线程级标记来确定515每个线程的计算需求。在一种实施方式中,需求模块215基于线程级标记来确定515每个线程的计算需求。
方法500基于线程级标记来确定520每个线程的进程内优先级。在一种实施方式中,优先级模块230基于线程级标记来确定520每个线程的进程内优先级。在一些实施方式中,确定520进程内优先级包括基于线程依赖关系来确定进程内优先级。
方法500基于进程级标记来确定525计算进程的进程外优选级。在一种实施方式中,优先级模块230基于进程级标记来确定525计算进程的进程外优选级。在一些实施方式中,确定525进程外优选级包括:优先级模块230将第一计算进程的进程级标记与第二计算进程的进程级标记进行比较,以确定第一计算进程和第二计算进程之间的进程外优选级。
方法500确定530电力状态,例如,电子设备105的电力状态。在一种实施方式中,属性模块265确定530电力状态。在一些实施方式中,确定530电力状态包括确定电子设备105是否使用电池电力运行。
方法500基于计算需求、进程内优先级和进程外优先级、以及电力状态将线程分配535给处理器核。方法500结束。在一种实施方式中,任务分配模块220基于计算需求、进程内优先级和进程外优先级、以及电力状态将线程分配535给处理器核。
图6是示出了用于为计算系统中的计算资源提供粒度化QoS的方法600的另一实施方式的示意性流程图。在一种实施方式中,方法600由电子设备105来执行。在另一实施方式中,方法600可以由粒度化QoS装置200来执行。替选地,方法600可以由计算机可读存储介质如存储器115来执行。计算机可读存储介质可以存储代码,该代码在处理器110上执行以实现方法600的功能。
方法600开始并识别605计算进程的至少一个线程。在一种实施方式中,线程模块205识别605计算进程的至少一个线程。方法600识别610与线程相关联的一个或更多个标记。在一种实施方式中,标记模块210识别610与线程相关联的一个或更多个标记。在某些实施方式中,一个或更多个标记描述线程的特征如优先级、时间敏感度、计算强度等。
方法600基于标记来确定615线程的速度需求。在一种实施方式中,强度模块250基于标记来确定615线程的速度需求。在一些实施方式中,确定615速度需求包括识别线程的估计长度和/或估计完成时间。
方法600基于标记来确定620线程的时间敏感水平。在一种实施方式中,时间模块255基于标记来确定620线程的时间敏感水平。在一些实施方式中,确定620时间敏感水平包括确定线程是否被标记为容忍延迟。
方法600基于标记来确定625线程的缓存需求。在一种实施方式中,缓存模块260基于标记来确定625线程的缓存需求。在一些实施方式中,确定625缓存需求包括确定线程是否被标记为是存储器缓存密集型的。
方法600基于速度需求、时间敏感水平以及缓存需求将线程分配630给处理器核。方法600结束。在一种实施方式中,任务分配模块220基于速度需求、时间敏感水平以及缓存需求将线程分配630给处理器核。
在根据本公开的实施例中,提供了如下方案,但不限于此:
(1)一种装置,包括:
处理器,所述处理器包括多个处理器核;以及
存储器,所述存储器存储能够由所述处理器执行用于进行下述操作的代码:
识别属于计算进程的线程;
识别与所述线程关联的一个或更多个线程级标记;
基于所述一个或更多个线程级标记来确定所述线程的计算需求;及
基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核。
(2)根据(1)所述的装置,其中,所述存储器还包括能够由所述处理器执行用于进行下述操作的代码:
基于所述一个或更多个线程级标记来确定所述线程的进程内优先级;以及
基于所述进程内优先级将硬件资源分配给所述线程,其中,从被分配给所述计算进程的一组硬件资源中分配所述硬件资源。
(3)根据(2)所述的装置,其中,所述存储器还包括能够由所述处理器执行用于识别属于所述计算进程的多个线程之间的线程依赖关系的代码,其中,确定所述线程的进程内优先级包括基于所述线程依赖关系来分配所述进程内优先级。
(4)根据权利要求(2)所述的装置,其中,所述存储器还包括能够由所述处理器执行用于基于一个或更多个进程级标记来确定所述计算进程的进程外优先级的代码,其中,基于所述进程外优先级将所述一组硬件资源分配给所述计算进程。
(5)根据(1)所述的装置,其中,所述多个处理器核包括以第一处理器速度操作的第一组处理器核和以第二处理器速度操作的第二组处理器核,所述第二处理器速度小于所述第一处理器速度,其中,所述存储器还包括能够由所述处理器执行用于进行下述操作的代码:
基于所述一个或更多个线程级标记来确定所述线程的速度需求;以及
基于所述第二处理器速度来确定线程完成时间,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核包括响应于所述线程完成时间小于所述速度需求将所述线程分配给所述第二组处理器核中的处理器核。
(6)根据(1)所述的装置,其中,所述存储器还包括能够由所述处理器执行用于识别所述装置的电力状态的代码,其中,还基于所述电力状态将所述线程分配给所述处理器核中的一个处理器核。
(7)根据(6)所述的装置,其中,基于所述电力状态将所述线程分配给所述处理器核中的一个处理器核包括:响应于所述电力状态为使用电池电力将所述线程分配给具有较低处理器速度的处理器核,以及响应于所述电力状态为使用外部电力将所述线程分配给具有较高处理器速度的处理器核。
(8)根据(1)所述的装置,其中,识别属于计算进程的至少一个线程包括识别主工作线程,并且其中,将所述主工作线程分配给所述处理器核中的一个处理器核包括将所述主工作线程分配给保留用于所述主工作线程的处理器核。
(9)根据(1)所述的装置,其中,所述存储器还包括能够由所述处理器执行用于进行下述操作的代码:
基于一个或更多个进程级标记来确定所述计算进程的时间需求;
确定本地执行所述计算进程的成本;以及
基于所述时间需求和本地执行所述计算进程的成本将所述计算进程卸载至远程计算设备。
(10)一种方法,包括:
通过使用处理器识别属于计算进程的至少一个线程;
识别与所述线程关联的一个或更多个标记;
基于所述一个或更多个标记来确定所述线程的计算需求;以及
基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核。
(11)根据(10)所述的方法,还包括识别执行所述计算进程的计算机系统的系统属性,其中,还基于所述系统属性将所述线程分配给所述处理器核中的一个处理器核。
(12)根据(10)所述的方法,其中,识别属于计算进程的至少一个线程包括识别多个线程,所述方法还包括:
基于所述一个或更多个标记来确定每个线程的进程内优先级;
识别被分配给所述计算进程的一组硬件资源;以及
基于所述进程内优先级将来自所述一组硬件资源的硬件资源分配给每个线程。
(13)根据(10)所述的方法,其中,识别属于计算进程的至少一个线程包括识别主工作线程,并且其中,将所述主工作线程分配给所述处理器核中的一个处理器核包括使所述主工作线程与所述主工作线程自身的处理器核分离。
(14)根据(10)所述的方法,其中,基于所述一个或更多个标记来确定所述线程的计算需求包括基于所述一个或更多个标记来确定所述线程的时间敏感水平,其中,所述方法还包括基于所述时间敏感水平将进程内优先级分配给所述线程。
(15)根据(10)所述的方法,其中,基于所述一个或更多个标记来确定所述线程的计算需求包括识别所述线程的存储器缓存需求,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核包括基于所述存储器缓存需求来选择处理器核。
(16)根据(15)所述的方法,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核还包括基于所述存储器缓存需求禁用所选择的处理器核上的超线程。
(17)根据(10)所述的方法,其中,基于所述一个或更多个标记来确定所述线程的计算需求包括识别所述线程的速度需求,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核包括基于所述速度需求来选择处理器核。
(18)一种程序产品,所述程序产品包括计算机可读存储介质,所述计算机可读存储介质存储能够由处理器执行的代码,可执行代码包括用于进行下述操作的代码:
识别属于计算进程的至少一个线程;
识别与所述线程关联的一个或更多个标记;
基于所述一个或更多个标记来确定所述线程的计算需求;以及
基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核。
(19)根据(18)所述的程序产品,所述代码还用于进行下述操作:基于所述一个或更多个标签将硬件资源分配给所述线程,其中,从被分配给所述计算进程的一组资源分配所述硬件资源。
(20)根据(18)所述的程序产品,所述代码还用于进行下述操作:
识别未标记线程,其中,所述未标记线程未与任何标签关联;
将所述未标记线程与一个或更多个线程简档进行比较;以及
基于所述比较将一个或更多个标签与所述未标记线程进行关联。
可以以其他具体形式来实施各个实施方式。所描述的实施方式在所有方面将被认为是说明性而非限制性的。因此,本发明的范围由所附权利要求而不是由前述描述来指示。权利要求等效的含义和范围内的所有变化都包括在该权利要求的范围之内。
Claims (15)
1.一种用于为计算系统中的计算资源提供粒度化服务质量的装置,包括:
处理器,所述处理器包括多个处理器核,所述多个处理器核包括以第一处理器速度操作的第一组处理器核和以第二处理器速度操作的第二组处理器核,所述第二处理器速度小于所述第一处理器速度;以及
存储器,所述存储器存储能够由所述处理器执行的代码,
其中,所述处理器被配置为能够执行所述代码以进行如下操作:
基于一个或更多个进程级标记来确定计算进程的进程外优先级,其中,基于所述进程外优先级将一组硬件资源分配给所述计算进程;
识别属于计算进程的线程,所述计算进程包括多个线程,同一进程的多个线程包括主工作线程和多个次级工作线程;
识别与所述线程关联的一个或更多个线程级标记;
识别所述装置的电力状态;
基于所述一个或更多个线程级标记来确定所述线程的计算需求;及
基于所述计算需求,从被分配给所述计算进程的一组硬件资源中分配所述硬件资源给每个线程,包括:基于计算需求,将所述主工作线程分配给多个处理器核中的第一处理器核,所述第一处理器核为保留用于主工作线程的处理器核,以及基于计算需求,将所述多个次级工作线程分配给多个处理器核中的其他处理器核;
其中,基于计算需求,将所述多个次级工作线程分配给多个处理器核中的其他处理器核,包括:响应于电力状态为使用电池电力,将多个次级线程分配给第二组处理器核,以及响应于所述电力状态为使用外部电力,将所述多个次级线程分配给第一组处理器核。
2.根据权利要求1所述的装置,其中,所述处理器还被配置为能够执行所述代码以进行如下操作:
基于所述一个或更多个线程级标记来确定所述线程的进程内优先级;以及
基于所述进程内优先级将硬件资源分配给所述线程,其中,从被分配给所述计算进程的一组硬件资源中分配所述硬件资源。
3.根据权利要求2所述的装置,其中,所述处理器还被配置为能够执行所述代码以识别属于所述计算进程的多个线程之间的线程依赖关系,其中,确定所述线程的进程内优先级包括基于所述线程依赖关系来分配所述进程内优先级。
4.根据权利要求1所述的装置,其中,所述处理器被配置为能够执行所述代码以进行如下操作:
基于所述一个或更多个线程级标记来确定所述线程的速度需求;以及
基于所述第二处理器速度来确定线程完成时间,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核包括响应于所述线程完成时间小于所述速度需求将所述线程分配给所述第二组处理器核中的处理器核。
5.根据权利要求1所述的装置,其中,所述处理器还被配置为能够执行所述代码以进行如下操作:
基于一个或更多个进程级标记来确定所述计算进程的时间需求;
确定本地执行所述计算进程的成本;以及
基于所述时间需求和本地执行所述计算进程的成本将所述计算进程卸载至远程计算设备。
6.一种用于为计算系统中的计算资源提供粒度化服务质量的方法,包括:
基于一个或更多个进程级标记来确定计算进程的进程外优先级,其中,基于所述进程外优先级将一组硬件资源分配给所述计算进程;
通过使用处理器识别属于计算进程的至少一个线程,所述计算进程包括多个线程,同一进程的多个线程包括主工作线程和多个次级工作线程;
识别与所述线程关联的一个或更多个标记;
识别装置的电力状态;
基于所述一个或更多个标记来确定所述线程的计算需求;以及
基于所述计算需求,从被分配给所述计算进程的一组硬件资源中分配所述硬件资源给每个线程,包括:基于计算需求,将所述主工作线程分配给多个处理器核中的第一处理器核,所述第一处理器核为保留用于主工作线程的处理器核,以及基于计算需求,将所述多个次级工作线程分配给多个处理器核中的其他处理器核;
其中,基于计算需求,将所述多个次级工作线程分配给多个处理器核中的其他处理器核,包括:响应于电力状态为使用电池电力,将多个次级线程分配给第二组处理器核,以及响应于所述电力状态为使用外部电力,将所述多个次级线程分配给第一组处理器核。
7.根据权利要求6所述的方法,还包括识别执行所述计算进程的计算机系统的系统属性,其中,还基于所述系统属性将所述线程分配给所述处理器核中的一个处理器核。
8.根据权利要求6所述的方法,其中,识别属于计算进程的至少一个线程包括识别多个线程,所述方法还包括:
基于所述一个或更多个标记来确定每个线程的进程内优先级;
识别被分配给所述计算进程的一组硬件资源;以及
基于所述进程内优先级将来自所述一组硬件资源的硬件资源分配给每个线程。
9.根据权利要求6所述的方法,其中,基于所述一个或更多个标记来确定所述线程的计算需求包括基于所述一个或更多个标记来确定所述线程的时间敏感水平,其中,所述方法还包括基于所述时间敏感水平将进程内优先级分配给所述线程。
10.根据权利要求6所述的方法,其中,基于所述一个或更多个标记来确定所述线程的计算需求包括识别所述线程的存储器缓存需求,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核包括基于所述存储器缓存需求来选择处理器核。
11.根据权利要求10所述的方法,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核还包括基于所述存储器缓存需求禁用所选择的处理器核上超线程。
12.根据权利要求6所述的方法,其中,基于所述一个或更多个标记来确定所述线程的计算需求包括识别所述线程的速度需求,其中,基于所述计算需求将所述线程分配给所述处理器核中的一个处理器核包括基于所述速度需求来选择处理器核。
13.一种用于为计算系统中的计算资源提供粒度化服务质量的设备,包括:
用于基于一个或更多个进程级标记来确定计算进程的进程外优先级,其中,基于所述进程外优先级将一组硬件资源分配给所述计算进程的模块;
用于识别属于计算进程的至少一个线程的模块,所述计算进程包括多个线程,同一进程的多个线程包括主工作线程和多个次级工作线程;
用于识别与所述线程关联的一个或更多个标记的模块;
用于识别装置的电力状态的模块;
用于基于所述一个或更多个标记来确定所述线程的计算需求的模块;以及
用于基于所述计算需求,从被分配给所述计算进程的一组硬件资源中分配所述硬件资源给每个线程的模块,所述基于所述计算需求,从被分配给所述计算进程的一组硬件资源中分配所述硬件资源给每个线程,包括:基于计算需求,将所述主工作线程分配给多个处理器核中的第一处理器核,所述第一处理器核为保留用于主工作线程的处理器核,以及基于计算需求,将所述多个次级工作线程分配给多个处理器核中的其他处理器核;
其中,基于计算需求,将所述多个次级工作线程分配给多个处理器核中的其他处理器核,包括:响应于电力状态为使用电池电力,将多个次级线程分配给第二组处理器核,以及响应于所述电力状态为使用外部电力,将所述多个次级线程分配给第一组处理器核。
14.根据权利要求13所述的设备,还包括:用于基于所述一个或更多个标签将硬件资源分配给所述线程,其中,从被分配给所述计算进程的一组资源分配所述硬件资源。
15.根据权利要求13所述的设备,还包括:
用于识别未标记线程的模块,其中,所述未标记线程未与任何标签关联;
用于将所述未标记线程与一个或更多个线程简档进行比较的模块;以及
用于基于所述比较将一个或更多个标签与所述未标记线程进行关联的模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/871,182 | 2015-09-30 | ||
US14/871,182 US10509677B2 (en) | 2015-09-30 | 2015-09-30 | Granular quality of service for computing resources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106557367A CN106557367A (zh) | 2017-04-05 |
CN106557367B true CN106557367B (zh) | 2021-05-11 |
Family
ID=57539869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610525191.2A Active CN106557367B (zh) | 2015-09-30 | 2016-07-05 | 用于为计算资源提供粒度化服务质量的装置、方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10509677B2 (zh) |
CN (1) | CN106557367B (zh) |
DE (1) | DE102016118210A1 (zh) |
GB (1) | GB2544609B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10372493B2 (en) * | 2015-12-22 | 2019-08-06 | Intel Corporation | Thread and/or virtual machine scheduling for cores with diverse capabilities |
KR102468286B1 (ko) * | 2016-01-04 | 2022-11-21 | 한국전자통신연구원 | 대칭형 다중 처리 시스템에서의 전력 제한 장치 및 방법 |
US10073718B2 (en) * | 2016-01-15 | 2018-09-11 | Intel Corporation | Systems, methods and devices for determining work placement on processor cores |
CN109308212A (zh) * | 2017-07-26 | 2019-02-05 | 上海华为技术有限公司 | 一种任务处理方法、任务处理器及任务处理设备 |
WO2019035660A1 (en) | 2017-08-16 | 2019-02-21 | Samsung Electronics Co., Ltd. | METHOD AND APPARATUS FOR MANAGING SERVICE PLANNING DURING STARTING |
CN109522101B (zh) * | 2017-09-20 | 2023-11-14 | 三星电子株式会社 | 用于调度多个操作系统任务的方法、系统和/或装置 |
US10558499B2 (en) * | 2017-10-26 | 2020-02-11 | Advanced Micro Devices, Inc. | Wave creation control with dynamic resource allocation |
CN109766168B (zh) * | 2017-11-09 | 2023-01-17 | 阿里巴巴集团控股有限公司 | 任务调度方法和装置、存储介质以及计算设备 |
CN109117260B (zh) * | 2018-08-30 | 2021-01-01 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、设备和介质 |
CN111045814B (zh) * | 2018-10-11 | 2023-12-08 | 华为技术有限公司 | 资源调度方法和终端设备 |
CN109669640B (zh) * | 2018-12-24 | 2023-05-23 | 浙江大华技术股份有限公司 | 一种数据存储方法、装置、电子设备及介质 |
US20200361452A1 (en) * | 2019-05-13 | 2020-11-19 | Toyota Research Institute, Inc. | Vehicles and methods for performing tasks based on confidence in accuracy of module output |
CN110333958A (zh) * | 2019-06-28 | 2019-10-15 | 烽火通信科技股份有限公司 | 一种基于DBus信号管理线程的方法及系统 |
US11074111B2 (en) * | 2019-07-15 | 2021-07-27 | Vmware, Inc | Quality of service scheduling with workload profiles |
CN113110795B (zh) * | 2020-01-13 | 2024-06-14 | 伊姆西Ip控股有限责任公司 | 在应用系统中执行作业的方法、设备和计算机程序产品 |
US11706656B2 (en) * | 2020-06-29 | 2023-07-18 | Qualcomm Incorporated | Downlink data prioritization for time-sensitive applications |
US11500691B2 (en) | 2020-07-16 | 2022-11-15 | Vmware, Inc. | Predictive scaling of datacenters |
US11675631B2 (en) * | 2020-09-29 | 2023-06-13 | Kyndryl, Inc. | Balancing mainframe and distributed workloads based on performance and costs |
US20220308920A1 (en) * | 2021-03-29 | 2022-09-29 | Samsung Electronics Co., Ltd. | Task scheduling method, and computing device and application processor using the same |
JP2024024463A (ja) * | 2022-08-09 | 2024-02-22 | 富士通株式会社 | 情報処理プログラム、情報処理方法、および情報処理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7245725B1 (en) * | 2001-05-17 | 2007-07-17 | Cypress Semiconductor Corp. | Dual processor framer |
CN101366004A (zh) * | 2005-12-06 | 2009-02-11 | 波士顿电路公司 | 用于带有专用线程管理的多核处理的方法和设备 |
CN102483703A (zh) * | 2009-09-11 | 2012-05-30 | 英派尔科技开发有限公司 | 计算机线程至异构资源的映射 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060080660A1 (en) * | 2004-10-07 | 2006-04-13 | Dell Products L.P. | System and method for disabling the use of hyper-threading in the processor of a computer system |
US20070220530A1 (en) * | 2006-03-03 | 2007-09-20 | Accton Technology Corporation | Power management architectures |
US8126911B2 (en) * | 2006-04-27 | 2012-02-28 | Intel Corporation | System and method for content-based partitioning and mining |
US7865895B2 (en) * | 2006-05-18 | 2011-01-04 | International Business Machines Corporation | Heuristic based affinity dispatching for shared processor partition dispatching |
US9030934B2 (en) * | 2007-09-07 | 2015-05-12 | Qualcomm Incorporated | Host-based quality of service for wireless communications |
US8886918B2 (en) | 2007-11-28 | 2014-11-11 | International Business Machines Corporation | Dynamic instruction execution based on transaction priority tagging |
US8776077B2 (en) * | 2008-04-02 | 2014-07-08 | Oracle America, Inc. | Method for multithreading an application using partitioning to allocate work to threads |
US20140298349A1 (en) * | 2008-04-21 | 2014-10-02 | Adaptive Computing Enterprises, Inc. | System and Method for Managing Energy Consumption in a Compute Environment |
US8140830B2 (en) * | 2008-05-22 | 2012-03-20 | International Business Machines Corporation | Structural power reduction in multithreaded processor |
US20100138675A1 (en) * | 2008-11-30 | 2010-06-03 | Dell Products L.P. | Methods and Systems for Managing Power to Multiple Processors |
US8417917B2 (en) * | 2009-09-30 | 2013-04-09 | International Business Machines Corporation | Processor core stacking for efficient collaboration |
US9304570B2 (en) * | 2011-12-15 | 2016-04-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements |
US9223709B1 (en) * | 2012-03-06 | 2015-12-29 | Marvell International Ltd. | Thread-aware cache memory management |
US9063991B2 (en) * | 2013-01-25 | 2015-06-23 | Wipro Limited | Methods for identifying unique entities across data sources and devices thereof |
US10104401B2 (en) * | 2014-03-20 | 2018-10-16 | Nanjing Yuyan Information Technology Ltd. | Efficient software for transcoding to HEVC on multi-core processors |
CN104408136A (zh) * | 2014-11-26 | 2015-03-11 | 合肥晶奇电子科技有限公司 | 一种公共医疗系统的日志处理方法 |
CN104572284B (zh) * | 2015-01-08 | 2019-03-15 | 游道易(北京)科技有限公司 | 任务实现装置和方法、以及应用 |
US20160210174A1 (en) * | 2015-01-15 | 2016-07-21 | Microsoft Corporation | Hybrid Scheduler and Power Manager |
-
2015
- 2015-09-30 US US14/871,182 patent/US10509677B2/en active Active
-
2016
- 2016-07-05 CN CN201610525191.2A patent/CN106557367B/zh active Active
- 2016-09-27 GB GB1616381.8A patent/GB2544609B/en active Active
- 2016-09-27 DE DE102016118210.9A patent/DE102016118210A1/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7245725B1 (en) * | 2001-05-17 | 2007-07-17 | Cypress Semiconductor Corp. | Dual processor framer |
CN101366004A (zh) * | 2005-12-06 | 2009-02-11 | 波士顿电路公司 | 用于带有专用线程管理的多核处理的方法和设备 |
CN102483703A (zh) * | 2009-09-11 | 2012-05-30 | 英派尔科技开发有限公司 | 计算机线程至异构资源的映射 |
Also Published As
Publication number | Publication date |
---|---|
US10509677B2 (en) | 2019-12-17 |
DE102016118210A1 (de) | 2017-03-30 |
CN106557367A (zh) | 2017-04-05 |
GB2544609B (en) | 2019-10-23 |
GB2544609A (en) | 2017-05-24 |
US20170090988A1 (en) | 2017-03-30 |
GB201616381D0 (en) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106557367B (zh) | 用于为计算资源提供粒度化服务质量的装置、方法和设备 | |
TWI628539B (zh) | 在多核心處理器中執行電源管理 | |
TWI599960B (zh) | 在多核心處理器中執行電源管理 | |
US8310492B2 (en) | Hardware-based scheduling of GPU work | |
US8230201B2 (en) | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system | |
TWI233545B (en) | Mechanism for processor power state aware distribution of lowest priority interrupts | |
JP5752242B2 (ja) | マルチコアプロセッサに関するマルチスレッドアプリケーション・アウェア・メモリスケジューリングスキーム | |
US8886919B2 (en) | Remote update programming idiom accelerator with allocated processor resources | |
JP2018533122A (ja) | マルチバージョンタスクの効率的なスケジューリング | |
US20110131430A1 (en) | Managing accelerators of a computing environment | |
US20100268790A1 (en) | Complex Remote Update Programming Idiom Accelerator | |
CN108549574B (zh) | 线程调度管理方法、装置、计算机设备和存储介质 | |
US10157155B2 (en) | Operating system-managed interrupt steering in multiprocessor systems | |
CN104081449A (zh) | 用于图形并行处理单元的缓冲器管理 | |
KR20120070303A (ko) | 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법 | |
EP3857335B1 (en) | Per-core operating voltage and/or operating frequency determination based on effective core utilization | |
US10037225B2 (en) | Method and system for scheduling computing | |
CN110300959B (zh) | 用于动态运行时任务管理的方法、系统、设备、装置和介质 | |
US20160092379A1 (en) | Priority framework for a computing device | |
CN107636563B (zh) | 用于通过腾空cpu和存储器的子集来降低功率的方法和系统 | |
TW202101211A (zh) | 中斷處理系統與中斷處理方法 | |
WO2023044877A1 (zh) | 一种渲染任务处理方法、装置、电子设备及存储介质 | |
US8875144B2 (en) | Using a yield indicator in a hierarchical scheduler | |
US10503557B2 (en) | Method of processing OpenCL kernel and computing device therefor | |
US20230024130A1 (en) | Workload aware virtual processing units |
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 |