CN111512291A - 基于服务质量底限调度存储器带宽 - Google Patents

基于服务质量底限调度存储器带宽 Download PDF

Info

Publication number
CN111512291A
CN111512291A CN201880082739.8A CN201880082739A CN111512291A CN 111512291 A CN111512291 A CN 111512291A CN 201880082739 A CN201880082739 A CN 201880082739A CN 111512291 A CN111512291 A CN 111512291A
Authority
CN
China
Prior art keywords
processor
scheduler
processes
floor
latency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201880082739.8A
Other languages
English (en)
Other versions
CN111512291B (zh
Inventor
道格拉斯·班森·亨特
杰伊·弗莱施曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN111512291A publication Critical patent/CN111512291A/zh
Application granted granted Critical
Publication of CN111512291B publication Critical patent/CN111512291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种系统包括多核处理器[102],所述多核处理器包括调度器[111]。所述多核处理器与系统存储器[103]和操作系统[120]进行通信。所述多核处理器执行第一进程和第二进程。所述系统使用所述调度器来控制所述第二进程对存储器带宽的使用直到当所述第一进程的使用的第一设定点[129]处于或低于时延敏感(LS)底限时所述第一进程在控制周期中的当前使用满足所述第一设定点,或者当所述第一设定点超过所述LS底限时所述第一进程在所述控制周期中的当前使用超过所述LS底限。

Description

基于服务质量底限调度存储器带宽
背景技术
在诸如计算机服务器之类的处理系统中,处理器通常必须为来自同时执行的不同进程的任务提供服务,其中不同进程与不同用户、客户端和装置相关联。并发进程竞争处理资源。尽管可以对处理器和处理系统进行过度构建以确保某些资源始终可用,但是这种方法很昂贵,并且可能导致资源在其大部分生命周期中都处于空闲状态并且被浪费。在一些系统中,为了管理对不同进程的资源分配,操作系统实施优先级方案,其中为每个进程分配一个优先级,并且操作系统根据每个进程的优先级为其分配资源。然而,常规的优先级方案可能导致将资源过度分配给高优先级进程,尤其是当那些进程相对于一些资源处于空闲状态而其他进程相对于一些资源不处于空闲状态时。在高优先级进程的活动低的时间段中,受严格规则约束的处理系统会浪费原本低优先级进程可能会使用的大量计算能力。
附图说明
通过参考附图,可以更好地理解本公开,并且本公开的许多特征和优点对本领域技术人员来说可明显。在不同附图中使用相同的参考符号指示类似或相同的项。
图1是示出根据一些实施例的具有多个处理核和调度器以满足服务水平目标(SLO)的计算系统的框图。
图2至图6是示出根据一些实施例的用于操作计算系统的方法的流程图。
图7至图11是示出根据一些实施例的系统中在各个时间的时延敏感(LS)底限和非时延敏感(NLS)极限的表格。
图12是示出根据一些实施例的用于计算系统的随时间变化的资源消耗和进程时延的图形。
图13是示出根据一些实施例的用于计算系统中的进程的存储器带宽使用对存储器时延的图形。
具体实施方式
一般而言,图1至图13示出了用于向处理系统中的并发执行进程分配资源的技术,其中为每个进程分配了对各种有限的共享计算系统资源的可访问性的至少最小底限。此类有限资源(LR)包括以下各项中的至少一项:以计数或周期数量衡量的CPU可用性、存储器可用性(例如,L3存储器缓存可用性)、存储器带宽可用性、网络资源可用性、入站网络带宽使用、出站网络带宽使用等。计算系统管理有限资源以确保时延敏感(LS)进程和非时延敏感(NLS)进程满足服务水平目标(SLO),同时最大程度地使用可用LR。尽管SLO包括强制性目标和理想目标,但是为了方便起见,强制性目标在本文中被称为目标或SLO,而理想SLO被称为设定点。处理系统还具有可以被测量并且在某种程度上可以控制但不能在进程之间分配的某些性质或特性。此类性质的示例包括存储器时延和总体进程时延。这些性质也可以是如本文进一步所述的控制方案中的SLO、理想目标或设定点。
作为特定示例,本文描述的技术控制NLS进程的存储器带宽使用。这导致系统存储器时延是可接受的,从而导致当LS进程需要至少其相应的存储器带宽底限时,每个LS进程都实现相应的期望存储器带宽底限。总之,系统控制一个变量(NLS存储器带宽使用)以便影响第二变量(影响所有进程的系统存储器时延),以实现使LS进程获取其相应的SLO存储器带宽使用的目标。
如果系统存储器时延过高,则无法确定LS进程是否会消耗其存储器带宽分配(LR底限)(如果时延较低)。即,硬件系统中没有方式能确定LS进程是否正在“请求”比其获取的存储器带宽使用更多的存储器带宽使用。因此,所述系统通过使用设定点以应用如本文所述的极限、上限或限制以根据需要降低总系统存储器带宽来管理NLS进程。如果将存储器时延降低到LS进程能够消耗其带宽分配的点,而不必将时延一直降低到“约定”时延,则NLS进程不再受到进一步限制,由此从所述系统中获取的有用功比先前在先前方案下可能获取的有用功更多。
如果所述系统向下限制NLS进程直到系统实现约定时延(这不是最小可能存储器时延),则相当于系统限制NLS进程。即,所述系统保证所述系统将传递LR底限存储器带宽使用或标称时延(约定时延),且由此对系统进行优化,使得所述系统不会通过完全停止NLS进程的操作来过度惩罚NLS进程,以便尽量最大限度地减小最小时延来尝试为LS进程获取更多的存储器带宽。只要时延不会变得太高以致LS进程未能满足其LR底限,所述系统允许NLS进程使用更多存储器带宽,并且驱动系统时延高于约定时延。根据一些实施例,在此类系统中,成功的做法是管理NLS存储器带宽使用使得实现约定系统时延,或者基本上在所有时间都满足针对LS进程的带宽底限。在其他实施例中,基本上在所有时间都满足这些条件中的两者。
图1是示出根据一些实施例的具有多个处理核和调度器以满足有限资源的SLO(例如,存储器带宽使用量)的处理系统100的框图。为了简单起见,描述了单个有限资源。可以实施与本文所述相同或类似的技术以针对每个进程同时满足与计算系统中的多个有限资源相对应的多个SLO,使得系统中可操作的所有进程都更充分地利用多个有限资源。在一些实施例中,处理系统100被结合到任何数量的电子装置中,所述电子装置包括服务器、台式或膝上型计算机、智能电话、平板计算机、游戏控制台等。处理系统100包括计算装置101,所述计算装置包括系统存储器103和多核处理器102及其设置,如本文进一步描述。
系统存储器103使用只读存储器(ROM)和随机存取存储器(RAM)中的一者或多者。系统存储器103存储操作系统(OS)120。根据一些实施例,OS 120使SLO调度器API 108可用于配置在本文进一步描述的部件。OS 120管理应用(诸如系统存储器103中的应用121)的执行。应用121中的一些以及由此处理器102中可操作的进程中的至少一些与应用121相关联。处理器102中可操作的进程被指定为时延敏感(LS)或非时延敏感(NLS)。NLS进程也被称为可以“尽力服务”方案执行以满足使用LR的理想目标的进程。成功满足目标可以以时间单位、控制周期单位、无违反累加时间量等等来测量。
除非另有指示,否则本文所述的时延是关于LS和NLS进程。与时延类型有关的LR的示例是存储器时延,根据一些实施例,所述存储器时延是指存储器系统响应处理器(例如,处理器102、CPU或GPU)请求读取一些数据所花费的时间。在许多计算系统中,存储器时延至少部分与存储器带宽使用相关。例如,更高的带宽使用对应于稍微更高的存储器时延。取决于诸如处理系统100之类的特定计算系统中的其他条件,所述相关性可以是强的或者弱的。根据一些实施例,总的存储器带宽需求的增加导致系统时延的增加。然而,如果系统时延在特定时间较低,则给定的单个进程通常会消耗更多带宽。即,对于所述进程,消耗的带宽在某种程度上是系统时延的函数,但是诸如处理系统100之类的系统表现出时延的方式在某种程度上是带宽需求的函数。
根据一些实施例,每个应用121包括与LS或NLS名称一起使用的一个或多个进程调度参数122,或者与其相关联。进程调度参数122将计算装置101配置为以与NLS任务、NLS作业、NLS进程和NLS线程不同的方式来操作LS任务、LS作业、LS进程和LS线程,如下文进一步描述的。
处理器102包括但不限于微处理器、微控制器、数字信号处理器(DSP)或其任何组合。根据一些实施例,处理器102包括多个核,诸如第一核105至第N核106,所述第N核表示计算装置101中的N个核中的最后一个核。在多核处理器中,多个处理器核或“多个核”可以包括在单个集成电路管芯123中或计算装置101中的多个集成电路管芯上。多个电路管芯可以被布置在单个芯片封装中。处理器102具有两个或更多个核105、106,所述核被对接以提高性能并有效处理计算装置101中可操作的多个任务和进程线程。根据一些实施例,OS 120将进程线程基于时延、缓存使用、负载平衡等等分配到多核处理器中的一个或多个核以供执行。根据一些实施例,处理器102包括缓存层级,所述缓存层级包括例如由图1中的存储器缓存107表示的1级缓存、2级缓存和3级缓存。处理器102还包括一组寄存器110、SLO调度器111和存储器控制器112。
存储器控制器112通过诸如存储器总线之类的互连件113将处理器102的各个部件与其他部件耦合并且将各个部件的操作与其他部件的操作协调。存储器控制器112与SLO调度器111进行通信并与SLO调度器协调其操作,以使得诸如第一应用121之类的一个或多个应用的一个或多个进程能够进行操作。线程形式的进程在处理器102中是活动的。根据一些实施例,SLO调度器111和存储器控制器112具有它们自己的存储器寄存器,其中当执行进程时,所述存储器寄存器对核105、106和处理器102的其他部件的步骤和执行进行计数。在其他实施例中,SLO调度器111和存储器控制器112访问处理器102中指定的某些存储器寄存器110以用于进行它们对处理器102的相应操作(核105、106和其他部件的步骤和执行)。一个或多个进程调度参数122为被指定为LS应用的应用或被指定为LS进程的应用的任何进程提供LR的LR底限125。根据一些实施例,当在OS 120中启动应用121时,基于为应用121产生的进程的进程ID 124提供LS名称。将进程调度参数122提供给寄存器110以供SLO调度器111使用。
根据一些实施例,处理系统100被配置有用于至少一个LS进程的至少一个LR底限125、系统存储器时延阈值126,并且可以包括用于至少一个进程的对应资源上的一个或多个进程极限127或最大值。可以在单个进程的基础上提供LR底限125,或者被指定参与LR底限125的一些或所有LS进程可以共享LR底限125。这些元素包括在寄存器110或SLO调度器111中。进程极限127是LS极限(其是与LS进程相关联的LR极限)或NLS极限(其是与NLS进程相关联的LR极限)。根据其他实施例,SLO调度器111被设置有为每个进程分配LR,这包括每个LS进程对所述LR的使用的底限和/或参与SLO调度器111的每个LS或NLS进程对所述LR的使用的极限。根据一些实施例,可以为进程提供设定点。如本文所使用的,并且根据一些实施例,设定点是被动态设定以便尝试控制某个其他系统属性的资源的当前分配。例如,为进程提供与用于所述特定进程的存储器带宽使用的目标值相对应的当前设定点,其中所述进程已由SLO调度器选择进行调整以尽量满足特定SLO(例如,系统时延、LS进程可用的带宽)。由此,设定点是进程在特定控制周期中消耗的目标量。
SLO调度器111与存储器控制器112互操作以创建并实施用于处理器102的控制方案。寄存器110包括用于一个或多个当前使用值128诸如LS进程和NLS进程对LR的当前使用、一个或多个进程设定点129和一个或多个关系130的寄存器。一个或多个关系130采用各种形式。在一些实施例中,关系130是简单的,诸如指针或一个变量与另一个变量之间的直接对应关系。在其他实施例中,关系是复杂的,并且在计算系统中的至少一个LS进程、至少一个NLR进程和至少一个有限资源之间采取线性进程控制模型和非线性进程控制模型的形式。例如,LR是存储器带宽使用量。根据一些实施例,一个或多个关系130包括系统时延阈值126、一个或多个(LS)底限125以及一个或多个(NLS)进程极限127之间的关系。
当处理器102处于操作中时,SLO调度器111操作以确保对于每个处理时间单位或控制周期,为每个LS指定的进程提供至少其可用数量的LR的底限125。在计算装置101中,互连件113与系统存储器103和至少一个总线/接口子控制器114进行通信。当计算装置101处于操作中时,总线/接口子控制器114与网络控制器118和一个或多个接口总线115进行通信以在必要时与各种部件进行交互。
接口总线115与一个或多个存储装置116进行通信,所述一个或多个存储装置诸如固态驱动器(SSD)、常规硬盘驱动器(HD)或其他持久性存储装置(诸如光学介质装置)。在启动或引导进程期间,将OS120从存储装置116加载到系统存储器103中。根据一些实施例,SLO调度器111的启动状态和初始配置由OS 120的引导加载器提供。随后,当OS 120启动每个LS应用时,SLO调度器111操作以向LS应用提供至少LR的底限125。
接口总线115还与一个或多个输出装置117(诸如图形处理单元(GPU)104)进行通信。根据一些实施例,GPU 104具有其自己的存储器寄存器、缓存、SLO调度器和存储器控制器,并且GPU 104以与处理器102类似的方式被配置为以其自身的SLO调度器进行操作以控制在GPU 104中可操作的进程和线程。除非另有具体指示,否则GPU 104及其自身的SLO调度器以与处理器102及其SLO调度器111类似的方式被配置。网络控制器118促进计算装置101与其他装置119之间的通信和互操作性,所述其他装置诸如通过网络(未示出)耦合到计算装置101的装置。
图2是示出根据一些实施例的用于操作具有SLO调度器的系统的方法的流程图。方法200可在系统或诸如图1的装置101之类的装置中操作以(1)管理LR,尤其是LS进程与NLS进程相比相对空闲时增加LR的总消耗,并且(2)满足系统的所有进程的全局目标,其中所述全局目标取决于LR或者是LR的函数。例如,LR是存储器带宽使用,并且全局目标是所有进程的存储器时延。
在框201处,测量在装置的处理器中可操作的所有进程对LR的使用。在框202处,针对所有进程测量全局目标。在框203处,确定所有LS进程是否都正消耗它们相应的LR底限分配。例如,将每个LS进程的计数值与静态指定的LR底限值进行比较。如果所有LS进程当前正消耗其相应的LR底限,则在框204处,降低应用于LS进程和/或NLS进程的任何限制,使得LS进程和/或NLS进程可以在后续控制周期中消耗更多的LR。在框205处,确定全局资源使用是否满足全局约定目标。在一些实施例中,在框205处进行的这种确定包括将计数值或累加值与特定全局资源的静态指定的约定目标值进行比较。作为示例,如果所有进程的存储器时延(ML)都低于最大约定ML,则在特定控制周期内很明显不会违反约定ML。如果LS进程正消耗低于它们相应的LR底限,则系统是稳定的,因为LS进程没有积极消耗LR并且LS进程不受存储器带宽的限制,并且方法200继续评估全局目标。
在框206处,确定所有NLS进程是否都受制于相应的最大限制值。如果否,则SLO调度器在框207处采取进一步的动作,诸如增加对一个或多个NLS进程的限制,因为在NLS进程中仍然存在一定的控制自由度。如果在框206处已经最大程度地限制了所有NLS进程,则在框208处,SLO调度器确定是否有任何LS进程的消耗超过高于其LR底限的某个阈值。如果是,则在框209处,SLO调度器增加对消耗高于其相应保证的底限的大量LR的那些LS进程中的任何一个或多个的限制。方法200是限制LS进程和NLS进程以满足全局约定目标、保证LS进程消耗至少其LR底限并允许NLS进程消耗与剩余一样多的LR的系统的一个实施例。
图3是示出根据一些实施例的用于操作具有SLO调度器的系统的方法的流程图。在图3中,方法300包括在框301处测量所有进程的存储器带宽使用(MBU)。在框302处,针对所有进程测量存储器时延(ML)。在框303处,确定所有LS进程是否都正消耗其相应的MBU底限。如果是,则指示LS进程中的一个或多个正消耗大量的存储器带宽。在框304处,确定是否有任何LS进程消耗了高于其MBU底限的大量MBU。如本文所使用的大量是指多种含义中的一者。例如,在一些实施例中,通过评估当前值是否比相应的MBU底限超出阈值来确定大量。如果否(在框304处),则因为LS进程不受存储器带宽的限制,所以在控制周期中不采取进一步的动作。如果在框304处任何LS进程都消耗高于其MBU底限的大量MBU,则在框308处,SLO调度器如本领域技术人员已知的那样减少某些LS进程和/或NLS进程的限制。例如,正消耗高于其MBU底限的大量MBU的LS进程中的一个或多个被向下限制到其MBU底限,以便在后续控制周期中更公平地共享存储器带宽使用。
在框303处,如果没有LS进程正消耗其相应的MBU底限(“否”,离开框303),则LS进程相对于MBU没有处于足够活动状态。在框305处,所述系统确定是否有任何LS进程被限制。如果是,则所述系统在308处减少或消除对受限LDS进程的限制。在框306处,所述系统确定系统ML是否处于或低于约定时延。系统ML是全局目标的示例。如果是,则在框307处,所述系统确定系统ML是否显著低于约定时延。如果是,则所述系统具有可供消耗的ML,并且在框308处,所述系统减少对LS进程和/或NLS进程的限制以利用低系统ML。如果系统ML不处于或低于约定时延,则从框309处开始,所述系统采取进一步的步骤。
在框309处,所述系统确定每个NLS进程是否处于最大限制值(被最大程度地限制)。如果否,则在框311处,SLO调度器增加对尚未被最大程度地限制的一个或多个NLS进程的限制。如果没有NLS进程可供限制,则在框310处,所述系统确定是否有任何LS进程正基本消耗高于其MBU底限。如果是,则任何这样的LS进程都是好的限制候选者。在框312处,SLO调度器增加对正消耗高于其相应的MBU底限的一个或多个LS进程的限制。如果在框310处所有LS进程都处于或低于其MBU底限,则没有进一步的限制可用,因为SLO调度器被配置为允许LS进程的消耗处于或低于其相应的MBU底限。
图4是示出根据一些实施例的用于操作具有SLO调度器的系统的方法的流程图。方法400可在系统或诸如图1的装置101之类的装置中操作以由SLO调度器在处理器的每个时间单位或控制周期内管理有限资源(LR)。作为特定示例,在图4中,LR是存储器带宽使用量(MBU)。在一些实施例中,控制周期是一定数量的程序计数器周期或在CPU上执行的一定数量的指令执行步骤,或者是被分配给控制周期的一定时间量。所述控制周期包括根据需要应用于一个或多个进程并应用于单个进程的一个或多个线程的限制,以便通过为NLS指定的进程及其相应的线程应用NLS限制并为LS指定的进程及其相应的线程应用LS限制来满足控制目标。方法400可操作以首先管理LR的使用,其次管理与在处理器中可操作的LS和NLS进程相关联的时延。方法400控制当前控制周期或未来控制周期中的使用。尽管关于图4提及单个LR,但是如本领域技术人员所理解的,SLO调度器可管理多个LR。
在框401处,诸如图1的SLO调度器111之类的SLO调度器确定NLS进程中的每个对LR的当前使用。在图4的框402处,SLO调度器确定LS进程中的每个对LR的当前使用。在一些实施例中,特定进程的当前使用是在处理器的所有核上可操作的一个或多个特定进程的线程对LR的总使用。在其他实施例中,LR的使用是针对单个核的特定进程,并且LR与单个核相关,其中LS进程在单个核上可操作。在一些实施例中,确定当前使用包括访问寄存器中已经被计数超过一个时间范围(控制周期)的值,其中所述值与在诸如图1的处理器102之类的处理器中可操作的进程对LR的当前使用有关。在其他实施例中,确定当前使用包括测量随时间(诸如多个时钟周期、程序计数器周期或控制周期)变化的值。根据一些实施例,特定时间周期的当前使用在可用于SLO调度器111的寄存器(诸如图1的处理器102的寄存器110中的一者)中是可用的。
在图4的框403处,SLO调度器确定每个LS进程的当前使用是否正从系统请求至少其LR底限而实际上未使用到至少其底限。如果没有LS进程通过框403处的确定,则在框404和405执行涉及NLS进程的其他步骤。在框404处,SLO调度器确定对NLS进程的NLS分配。在框405处,SLO调度器将NLS分配应用于相应的NLS进程。根据一种情况,一组分配涉及消除对相应的NLS进程的NLS特定限制。在另一种情况下,如下文进一步所述,基于其他因素来确定NLS分配,所述其他因素包括与LS进程、LR的当前消耗和需求以及处理器的当前状态有关的那些因素。
在框406处,当一个或多个LS进程正在请求LR的至少其相应LR底限时,SLO调度器确定总NLS限制。NLS限制包括必须在NLS进程之间共享的LR(存储器带宽使用量)的总值。在框407处,使用总NLS限制,SLO调度器确定用于NLS进程的NLS限制方案。根据一些实施例,NLS限制方案包括为NLS进程中的每个对LR的使用设定极限。NLS限制方案包括NLS限制值,所述NLS限制值是每个控制周期或在多个控制周期中进行计数的使用计数或使用值。根据一些实施例,限制方案包括限制每个NLS进程一次允许在处理器上运行多少个事务。根据其他实施例,特定的NLS限制方案与一个或多个因素相关,所述一个或多个因素与当前可操作的LS进程、当前可操作的NLS进程、LR的当前消耗和需求以及处理器的当前状态有关。一般而言,NLS限制方案包括以下一项或多项:将吞吐量(每个时间单位完成的工作总量)最大化、将响应时间(从启用工作到第一时刻开始在资源上执行某个进程、作业或线程的时间)最小化、将时延(启用工作与其后续完成之间的时间)最小化以及将公平性(为每个进程提供相等量的处理器时间,或通常根据每个进程的优先级和工作量而占用的另一个相对时间量)最大化。实际上,这些目标经常会发生冲突(例如,吞吐量与时延发生冲突),因此SLO调度器实施适当的折衷方案。在框408处,SLO调度器应用确定的NLS限制方案。在一些实施例中,NLS限制方案的应用是在当前控制时间周期中或在接近(下一)控制时间周期中进行的。
在框409处,SLO调度器确定每个请求LS进程是否正消耗处于或高于其LR底限的LR。如果是,则SLO调度器在考虑到至少一个LS进程正在请求至少其LR底限后执行在框404和405处先前描述的功能。如果否,则在框410处,SLO调度器确定应用于在处理器上可操作的LS进程的LS限制的总量。在框411处,SLO调度器确定LS限制方案。根据一些实施例,LS限制方案包括为LS进程中的每个对LR的使用设定极限。根据一个示例性方案,在框411处,LS限制方案平衡了当前可操作的LS进程之间的存储器带宽使用量的消耗,使得所有LS进程都消耗至少相应的LR底限,而不是让一个或多个LS进程未能消耗LR的至少其相应的LR底限,代价是其他LS进程的消耗远高于其相应的LR底限。根据另一个示例性方案,对于SLO调度器的至少一个控制周期,LS限制方案将LS进程中的每个的消耗降低了相等的百分比。在框412处,SLO调度器将LS限制方案应用于当前可操作的LS进程。
在框413处,在应用限制方案来控制LR的消耗之后,SLO调度器确定所有LS进程是否在它们的作为第二受控变量的相应时间时延目标内操作。如果否,则在框414处,SLO调度器为NLS进程实施限制。例如,在框414处,仅NLS进程受时延限制的影响。在框414处,不限制LS进程以便为LS进程提供机会来在SLO调度器中的一个、两个、三个或其他指定数量的控制周期内达到系统的时延目标。替代地,如果所有LS进程在系统上可操作的同时不在时延目标或其相应的时延目标内操作,则在框415处,SLO调度器为所有进程实施时延限制。例如,在框415处,当在处理器上可操作的LS进程中的一个或多个不在所述时延目标或其相应的时延目标内操作时,在处理器上可操作的所有进程都共享相同的减少。根据至少一个实施例,每个进程(包括每个LS进程和每个NLS进程)可以具有其自己的时延目标。根据其他实施例,为处理器及其NLS进程和LS进程提供全局处理器时延目标。根据其他实施例,仅一个或多个LS进程具有时延目标,并且在处理器上可操作的其他进程未被提供有它们自己的单个或系统范围的进程目标。
图5是示出根据一些实施例的用于操作系统的方法的流程图。方法500可在系统或诸如图1的装置101之类的装置中操作以管理LR(例如,存储器带宽使用量)。方法500可操作以首先管理与在处理器上可操作的LS进程和NLS进程相关联的时延,其次管理LR的使用。
在框501处,SLO调度器确定在处理器上操作的所有进程的当前时延。在框502处,SLO调度器确定是否有任何LS进程在其时延极限之外。根据一些实施例,时延极限对于所有进程而言是相同的时延极限。替代地,根据其他实施例,每个LS进程具有其自己的单个时延极限或者针对所有LS进程共享一个时延极限,而对于所有NLS进程共享单独的时延极限。如果任何LS进程都在时延极限之外,则在框520、519和518处,发生进一步的处理。在框520处,SLO调度器识别与时延有关的NLS进程的一个或多个资源。在框519处,SLO调度器为NLS进程确定所识别的时延资源的一个或多个NLS分配。在框518处,SLO调度器将先前确定的NLS分配应用于NLS进程。在框518之后,执行后续的SLO控制周期。
一旦在框503处所有LS进程都在时延极限内(没有LS进程在其时延极限外),则在框503处,SLO调度器确定每个NLS进程是否在其时延极限内。如果是,则发生进一步的处理。如果否,则在框504处,SLO调度器确定每个NLS进程是否在处理器和系统的可接受时延的上限范围内。根据一些实施例,对于在处理器上可操作的每个相应的NLS进程,存在单独的NLS上限。如果每个NLS进程都在可接受时延的上限范围内,则发生进一步的处理。如果否,则在框505处,SLO调度器将每个NLS进程标记为在其可接受时延的上限范围之外。在框505之后,后续处理涉及在处理器上可操作的进程的LR使用。
在框506处,SLO调度器确定所有进程的当前LR使用。在框507处,SLO调度器诸如通过确定LS进程中的每个的当前LR使用来确定LS进程的当前LR使用。关于图5,在一些实施例中,特定进程的当前使用是在处理器的所有核上可操作的特定进程的线程对LR的总使用。在其他实施例中,使用是针对单个核,并且LR是针对单个核。在一些实施例中,确定当前使用包括访问寄存器中已经被计数超过一个时间范围或一个控制周期的值,所述值与在诸如图1的处理器102之类的处理器中可操作的进程对LR的当前使用有关。在其他实施例中,确定进程的当前使用包括针对特定进程测量随时间变化的值。
在框508处,SLO调度器确定任何LS进程的当前使用是否正从系统请求至少其LR底限。如果在处理器上可操作的LS进程都未请求其LR底限,则执行涉及NLS进程的其他步骤。在框516处,SLO调度器确定对NLS进程的NLS分配。在框517处,SLO调度器将NLS分配应用于相应的NLS进程。根据一种情况,一组分配涉及消除对相应的NLS进程的NLS特定限制。在另一种情况下,如下文进一步所述,基于其他因素来确定NLS分配,所述其他因素包括与LS进程、LR的当前消耗和需求以及处理器的当前状态有关的那些因素。在框517之后,执行SLO调度器的其他控制周期。
在框508处,当SLO调度器确定一个或多个LS进程正在请求至少其LR底限时,在框509处,SLO调度器确定总NLS限制。NLS限制包括必须在NLS进程之间共享的总值。在框510处,使用总NLS限制,SLO调度器确定NLS限制方案。特定的NLS限制方案与一个或多个因素相关,所述一个或多个因素与当前可操作的LS进程、当前可操作的NLS进程、LR的当前消耗和需求以及处理器的当前状态有关。在框511处,SLO调度器应用确定的NLS限制方案。
在框512处,SLO调度器确定每个请求LS进程是否正消耗处于或高于其LR底限的LR。如果是,则SLO调度器执行在框516和517处先前描述的功能。如果否,则在框513处,SLO调度器确定应用于在处理器上可操作的LS进程的LS限制的总量。在框514处,SLO调度器确定LS限制方案。根据一个示例性LS限制方案,在框514处,平衡当前可操作的LS进程之间的LR消耗,而不是让一个或多个LS进程未能消耗LR的至少其LR底限。根据另一个示例性方案,对于SLO调度器的至少一个控制周期,LS限制方案将LS进程的所有消耗降低了相等的百分比。在框515处,SLO调度器将LS限制方案应用于当前可操作的LS进程。
图6是示出根据一些实施例的用于操作系统的方法的流程图。方法600包括对第一LR和第二LR的控制。根据一些实施例,控制方案控制作为进程特定约束或目标的进程时延而不是第一LR,并且控制作为第二LR的系统或装置的最大容量。例如,受制于方法600的系统是图1的处理系统100。根据其他实施例,第一LR是诸如图1的处理系统100之类的系统或装置的第一最大容量,并且第二LR是诸如图1的处理系统100的系统或装置的第二最大容量。
在框601处,SLO调度器确定在系统或装置的处理器上可操作的NLS进程对第一LR的当前使用。在框602处,SLO调度器确定在系统或装置的处理器上可操作的LS进程对第一LR的当前使用。在框603处,SLO调度器确定任何LS进程是否正请求第一LR的至少其LR底限。如果否,则在框604处,由SLO调度器应用适当的控制方案。如果是,则在框605处,SLO调度器基于NLS进程和LS进程对第一LR的当前使用来确定用于进程的第一控制方案。在框606处继续,SLO调度器确定在系统或装置的处理器上可操作的NLS进程对第二LR的当前使用。在框607处,SLO调度器确定在系统或装置的处理器上可操作的LS进程对第二LR的当前使用。在框608处,SLO调度器确定任何LS进程是否正请求第二LR的至少其LR底限。如果否,则在框604处,由SLO调度器应用适当的控制方案。如果是,则在框609处,SLO调度器基于NLS进程和LS进程对第二LR的当前使用来确定用于进程的第二控制方案。在框610处,SLO调度器将第一底限控制方案和第二底限控制方案组合用于处理器上可操作的进程。只要LS进程和NLS进程在处理器上可操作,SLO调度器就操作图6中的动作序列。
图7至图11是示出根据一些实施例的在各个时间处系统的时延敏感底限和非时延敏感设定点的表格。例如,系统是图1的处理系统100。在一些实施例中,图7至图11的表格中的一者或与其类似的存储器结构被直接创建为处理器管芯(诸如图1的处理器管芯123)中的一组可配置寄存器110。随着进程变量被确定和更新,寄存器的值随时间变化。尽管在图7至图11中描述和示出了表格,但是本领域普通技术人员将容易理解,其他类型的计算和存储器结构可与本文描述的技术一起使用。例如,其他计算和存储器结构包括一个或多个阵列、一个或多个寄存器(诸如图1中的寄存器110)以及在图1的缓存107中可操作的一个或多个缓冲器。
对于图7至图11,尽管用于LS进程的任何数量的资源和任何数量的相关SLO被跟踪并结合到控制方案中并且在表格中示出并由SOL调度器实施,但是为了简单起见,参考图7至图11中的表格仅描述了第一资源(例如,存储器带宽使用量)的活动和消耗以及进程时延。根据一些实施例,进程时延是总的当前系统进程时延、LS进程的LS进程时延或NLS进程的NLS进程时延。根据一些实施例,LS进程时延是SLO,而NLS进程时延是可能需要或可能不需要控制方案以使该控制变量处于进程时延阈值内的目标。
此外,图7至图11中所示的活动、值和变量在下面参考具有一组值和变量的一个表格进行简要描述,所述值和变量随时间变化从一个表格移至图7至图11中的另一个表格,其中每个图表示沿着用于主动处理系统的时间轴的一个时间点或快照。相对于图12中所示的图形,图7至图11的值和变量之间的关系是容易理解的。为了简单起见,进程的系统时延未在图7至图11中示出,但是在图12中示出并且相对于其进行描述。
图7是示出沿着主动处理系统的时间轴的第一时间处系统的底限和设定点的表格700。在表格700的第一部分701中示出了时延敏感(LS)底限。第一部分701包括LS进程702、每个LS进程针对第一资源的第一实际资源使用703(例如,存储器带宽使用量)、每个LS进程针对第一资源的第一SLO 704、每个LS进程针对第二资源的第二实际资源使用705以及每个LS进程针对第二资源的第二SLO 706。第一实际资源使用703和第二实际资源使用705是时间的函数,因此图7中所示的值随着LS进程702在处理器上执行而随时间快速且可变地改变。类似地,SLO 704、706可诸如通过用户或编程配置调整而随时间改变。与第一实际资源使用703和第二实际资源使用705相比,SLO 704、706相对不频繁地改变。例如,SLO 704、706按分钟、小时、天和周的数量级改变,实际资源使用703、705按微秒和毫秒的数量级改变。
对于表格700以及关于图8至图10的后续描述,第一资源的最大可用量为10个单位。为了便于说明,第一资源是以每秒千兆字节(GB/s)为单位测量的存储器带宽使用量。在第一时间,在703处,第一LS进程以实际资源使用值0.1GB/s消耗第一资源,而第二LS进程以实际资源使用值1.1GB/s消耗第一资源。在703处的第一LS进程值和第二LS进程值各自小于它们在704处的相应SLO,并且它们的总使用小于第一资源的总SLO,所述总SLO在第一时间具有4.0GB/s的值。
与LS进程在705和706处对第二资源的消耗相关联的值以及所述值的总和没有被讨论,但是被类似地对待并且具有与和第一资源相关联的值和总和类似的关系。在705处示出了LS进程的实际使用值,并且在706处针对这些值示出了相应SLO的变量名占位符“SLO_2_1”和“SLO_2_2”。在705和706处分别示出了总占位符“LT_A_2”和“SLO_T_2”。如本领域技术人员所理解的,这些占位符在操作系统中具有值。
表格700的第二部分711包括NLS进程712、每个NLS进程针对第一资源的第三实际资源使用713、每个NLS进程针对第一资源的第一设定点714、每个NLS进程针对第二资源的第四实际资源使用715以及每个NLS进程针对第二资源的设定点716。用于NLS进程的任何数量的资源使用和对应设定点被跟踪并结合到由第二部分711所示的控制方案中。在第一时间,在713处,第一、第二和第三NLS进程分别正以1.1GB/s、2.2GB/s和3.3GB/s的实际资源使用值消耗第一资源,并且每个当前使用值都高于在714处其相应的设定点1.0GB/s、2.0GB/s和3.0GB/s。
与NLS进程在715和716处对第二资源的消耗相关联的值以及所述值的总和在本文没有被讨论,但是被类似地对待并且具有与和用于NLS进程的第一资源相关联的值和总和类似的关系。在715处示出了NLS进程的实际使用值,并且在716处针对这些NLS进程使用值示出了相应设定点的变量名占位符“STPT_2_1”、“STPT_2_2”和“STPT_2_3”。在715和716处分别示出了总占位符“NT_A_2”和“T_T_2”。如本领域技术人员所理解的,这些占位符在操作系统中具有值。
在图7中,在第一时间,第一和第二LS进程对第一资源的消耗值在703低于704处其相应的第一资源SLO,从而指示LS进程正在消耗低于LS进程中的每个在704处的2.0个单位(GB/s)的可用底限的第一资源。第一、第二和第三NLS进程对第一资源的消耗值在713高于714处其相应的进程设定点,从而指示没有对任何NLS进程应用极限或上限。极限可以被称为约束、限制或控制。控制方案包括一组设定点,所述设定点用作一个或多个控制周期的极限。在第一时间,与常规的极限控制方案相比,允许NLS进程以更高速率消耗第一LR,在所述常规的极限控制方案下,为LS进程保留的总量4.0个单位(GB/s)将NLS进程的总允许消耗限制为6.0个单位(GB/s)。此外,在第一时间,如在714处所指示的,NLS进程各自被允许消耗第一资源超出已经为每个NLS进程指定的常规上限。因为第一资源的最大可用量是10个单位(GB/s),所以LS进程在703处和NLS进程在713处对第一资源的总消耗处于或低于且必须处于或低于最大可用量。在第一时间,当将LS进程的消耗与NLS进程的消耗相结合时,针对第一资源的总和为7.8个单位(GB/s),这低于最大10个单位(GB/s)。因此,在第一时间,不需要资源共享方案。
图8是示出沿着主动处理系统的时间轴的第二时间处系统的底限和设定点的表格800。底限在作为表格800的第一部分的LS底限表格801中,并且设定点在作为表格800的第二部分的NLS设定点表格811中。表格800类似于图7的表格700,但是至少在三个方面不同。第一,因为本文仅描述了对第一资源的控制,所以表格800仅具有LS底限表格801中的803处的第一实际使用值以及在804针对第一资源而没有在806针对第二资源的对应SLO。与图7中的值相比,第一LS进程的值已从703处的0.1GB/s变为803处的2.1GB/s。在第二时间,第二LS进程对第一资源的消耗值在803低于804处其第一资源SLO,从而指示LS进程在时间轴中的第二时间正消耗低于针对LS进程中的第二者在804处的可用底限2.0的第一资源。
第二,表格800包括第一设定点,诸如针对LS进程中的每个的805处的SL设定点。在805处,对于第一LS进程和第二LS进程两者,SL设定点的值为2.0。SL设定点是系统中的值(例如,表格800、寄存器110、进程调度参数122),所述值由SLO调度器读取或提供给SLO调度器并由SLO调度器对在802处指示的第一LS进程和第二LS进程起作用,以实现改变803处的实际使用值。根据一些实施例,SLO调度器使用控制方案中的控制变量之间的确定关系。所述确定关系可以采用存储在SLO调度器中或提供给SLO调度器的预定模型的形式,或者可以在计算装置操作时通过SLO调度器的历史观察来确定。在理想系统中,SLO调度器使用805处的SL设定点值来驱动系统,并且将进程的803处的实际使用值改变为804处的SLO值,而不违反系统中的其他约束。根据一些实施例,基于估计LS进程802中的一个或多个在当前控制周期或未来控制周期中的803、804处第一资源使用来提供设定点。
第三,表格800包括针对在812处指示的NLS进程中的每个的815处的NLS极限(标记为“NLS_1_LIMIT”)。在815处,根据一些实施例,NLS极限是由SLO调度器调整以限制相应的NLS进程812对第一资源的消耗的最大值。一旦具有814处的设定点的NLS进程消耗了最大量的特定资源,所述进程在处理器中就会处于空闲状态,直到下一控制周期或与设定点相对应的相关时间段。在图8中表示的第二时间,NLS进程812的实际消耗值813分别高于814处它们的1.0GB/s、2.0GB/s和3.0GB/s的第一资源设定点,并且对于NLS进程不需要资源共享方案。由于系统中的第一个资源的过多可用性(如3.2GB/s与6.6GB/s的总和小于系统中可用的10个单位(GB/s)所指示),因此没有限制NLS进程。NLS进程的总消耗为6.6GB/s,其高于在814处的设定点总和6.0GB/s。在考虑始终保留4.0GB/s用于802处的LS进程的常规系统时,此类消耗为0.6GB/s以便于NLS进程更好地利用。常规系统将812处NLS进程对第一资源的可用消耗限制为6.0GB/s。在需要时,将815处的NLS极限设定为高于或低于814处的相应的第一设定点,以在802处的LS进程与812处的NLS进程之间达到第一资源的消耗的期望平衡。此外,可以设定815处的NLS极限以便减少NLS进程对第一资源的消耗,其中第一资源的消耗影响或约束系统中的另一种资源的消耗。例如,在第一资源是运行中的存储器请求的总数的情况下,对812处的NLS进程施加815处的NLS极限以便达到存储器带宽极限或最大值,其是系统中的另一种资源或控制变量。更进一步地,还可以基于系统中的其他相互关联的变量来限制在812处指示的NLS进程的执行。
图9是示出沿着主动处理系统的时间轴的第三时间处系统的底限和设定点的表格900。底限在作为表格900的第一部分的LS底限表格901中,并且设定点在作为表格900的第二部分的NLS设定点表格911中。表格900类似于图8的表格800,但是至少在两个方面不同。第一,相对于表格800,LS进程和NLS进程对第一资源(存储器带宽使用量)的实际消耗的某些值已经改变。902处LS进程中的每个的实际消耗已改变为1.8GB/s,第一LS进程消耗已从2.1GB/s减少到1.8GB/s,并且第二LS进程消耗已从1.1GB/s增加到1.8GB/s。903处LS进程的总消耗为3.6GB/s仍然低于904处相应SLO的总和的4.0GB/s总和。对于LS进程中的每个,905处SL设定点保持为值2.0。此外,NLS进程中的一个的消耗值已从3.3GB/s改变为3.1GB/s。
第二,SLO调度器在第三时间对第三NLS进程施加上限或最大值。在915处,该极限(被标记为“NLS_1_LIMIT”)由标签“是”指示,指示SLO调度器主动限制第三NLS进程对第一资源的消耗,如913处3.1GB/s所指示,其中第三NLS进程受制于914处的3.0设定点。914处的其他设定点对于前两个NLS进程保持相同。913处的NLS进程的总消耗已减少到6.4GB/s,其是在第三时间允许的最大值,这是由于特权LS进程902的消耗总共消耗了3.6GB/s的第一资源,剩下的6.4GB/s如在913所指示的必须被所有NLS进程912分摊。903处的LS进程对第一资源的消耗与913处的NLS进程对第一资源的消耗的总和为作为第一资源的最大可用量的10.0GB/s。图9示出了用于共享第一资源的第一控制方案,其中控制器或调度器(诸如图1的SLO调度器111)被编程为当需要限制NLS消耗总和时减少最低数量的NLS进程对第一资源的消耗。在其他实施例中,SLO调度器被配置为将一些或所有NLS进程912调整相等的百分比,由此将913处的实际消耗降低相等的百分比以便适应在该示例中最大以6.4GB/s的总NLS消耗。在第三时间,不需要或不期望对LS进程902的限制。
图10是示出沿着主动处理系统的时间轴的第四时间处系统的底限和设定点的表格1000。底限在作为表格1000的第一部分的LS底限表格1001中,并且设定点在作为表格1000的第二部分的NLS设定点表格1011中。表格1000类似于图9的表格900,但是至少在两个方面不同。第一,相对于表格900,LS进程和NLS进程对第一资源(存储器带宽使用量)的实际消耗的某些值已经改变。1003处第一LS进程的实际消耗已从903处的1.8GB/s增加到1003处的2.0GB/s。LS进程的总消耗已上升到1003处的3.8GB/s,其低于1004处相应SLO的总和。对于LS进程中的每个,1005处SL设定点保持为值2.0。在第四时间,1002处的LS进程要求其保证的最小值或SL保证,如在1004处指示各自为2.0GB/s。在1013处,NLS进程中的每个相对于图9中的值已经向下限制,使得每个NLS进程的消耗都小于图9中的消耗。NLS进程在1013处分别消耗1.0GB/s、2.0GB/s和3.0GB/s,总共6.0GB/s,其是表格1000的第二部分1011中所有NLS进程可消耗的总和。
第二,如1015处的标签“是”所指示,SLO调度器在第四时间对NLS进程中的每个施加极限,指示SLO调度器主动限制所有NLS进程对第一资源的消耗。1013处NLS进程中的每个的消耗已减少。1003处的LS进程对第一资源的消耗与1013处的NLS进程对第一资源的消耗的总和为作为第一资源的最大可用量的10.0GB/s。图10示出了第一控制方案的另一种状态,其中控制器或调度器(诸如图1的SLO调度器111)被编程为当需要限制NLS消耗总和时减少NLS进程中的两个或更多个对第一资源的消耗。多种类型的限制算法中的一种可以应用于每个相应的NLS进程。可以基于一个或多个其他变量(诸如特定的NLS进程对第一(或其他)资源的消耗历史、所有NLS进程对第一(或其他)资源的消耗历史、LS进程中的一个对第一(或其他)资源的消耗历史、所有LS进程对第一(或其他)资源的消耗历史或它们的组合)来选择所应用的限制算法的类型。当与图8的表格800中的813处的消耗值相比时,1012处NLS进程中的每个已经减少了1013处实际值的相同的固定百分比10%。1.1GB/s的值已经减少至1.0GB/s,2.2GB/s的值已经减少至2.0,并且3.0的值已经减少至3.0。如图10中所示,SLO调度器将1013处NLS进程中的每个的消耗保持为1014处的其设定点持续一个或多个控制周期。当需要进一步约束或限制时,在另一个控制周期中减少1014处的设定点中的一个或多个,并且实际消耗值1013中的一个或多个将响应性地降低以满足1012处所指示的相应NLS进程的设定点1014。在第四时间,不需要或不期望对LS进程1002的限制。如图10中所示,1002处的LS进程在1003处消耗其在1004处所示的保证或约定SLO值。在1004处的SLO值和设定值1014中设定用于SLO调度器的策略。
图11是示出沿着主动处理系统的时间轴的第五时间处系统的底限和设定点的表格1100。表格1100类似于图10的表格1000,但是至少在两个方面不同。第一,相对于表格1000,NLS进程对第一资源(存储器带宽使用量)的实际消耗的某些值已经改变。在1112处所示的NLS进程中的每个的实际消耗已减少。在1113处,NLS进程中的每个已经向下限制使得每个NLS进程的消耗少于表格1000中的消耗。NLS进程的消耗在1013处分别为0.8GB/s、1.6GB/s和2.6GB/s,总共为5.0GB/s,其小于表格1100的第二部分1111中所有NLS进程可消耗的总和。SLO调度器已经减少了NLS进程的消耗,以便满足全局时延要求,如下面关于图12进一步描述的。SLO调度器已经被配置为首先减少NLS进程对第一资源的消耗,以便满足全局进程时延目标。如果通过限制或减少NLS进程对系统资源的消耗无法实现全局时延目标的减少,则SLO调度器被配置为也通过降低1104处的SLO来减少第一资源的消耗。在表格1100中,LS进程的总消耗通过允许第二进程LS-PROCESS_2的消耗从1.8个单位增加到2.0个单位而增加到1103处的4.0GB/s,其中4.0个单位与1104处相应SLO的总和相同。对于LS进程中的每个,1105处的SL设定点保持为值2.0。在第五时间,1102处的LS进程要求其保证的最小值,各自为2.0GB/s,并且LS进程不违反未能消耗它们的对第一资源的实际消耗的相应底限。
第二,将在1112处指示的NLS进程限制在所有NLS进程可用的6.0GB/s以下。在1113处,NLS进程的实际总消耗为5.0GB/s。在表格1100的第二部分1111中,SLO调度器已在第五时间对NLS进程中的每个施加设定点或极限,如1115处的标签“是”所指示。SLO调度器被配置为采用包括根据需要将NLS进程对第一资源的消耗主动限制在第一资源的可用量以下以便满足系统范围目标的各种动作。目标可以被称为系统范围目标、策略、约定、最小值和SLO。与1013处的值相比,1113处NLS进程中的每个对第一资源的消耗已经减少。1103处LS进程对第一资源的消耗和1113处NLS进程对第一资源的消耗的总和低于第一受限资源的系统最大值10.0GB/s。图11示出了控制方案的另一种状态,其中控制器或调度器(诸如图1的SLO调度器111)被编程为当需要将NLS消耗总和限制到第一资源的可用量以下时减少NLS进程中的两个或更多个对第一资源的消耗。SLO调度器被配置为针对第二资源和NLS进程正在消耗或影响的任何其他资源限制相同的NLS进程。
表格1100示出了NLS进程的行为仍然在SLO调度器的控制之内,这是因为即使系统中的第一资源(存储器带宽使用量)的总可用量(6.0GB/s)超过被分配给在1112处所示的这组NLS进程的值5.0GB/s,1113处实际消耗值也能满足1114处NLS进程的设定点。当需要进一步约束或限制时,进一步减少1114处设定点中的一个或多个,并且实际消耗值1113中的一个或多个将会下降以满足作为1112处相应的NLS进程的设定点而提供的设定点1114。尽管表格1100未示出,但是提供NLS与LS(NVL)限制比,其中总NLS进程消耗随时间减少到NVL限制比,并且然后如果需要进一步的进程限制,则第一资源消耗的减少分布在LS进程和NLS进程两者中。通过这种方式,1112处的NLS进程没有在1113处全部下降为零,这是以在1103处过度活跃的LS进程为代价的。一般来说,在第五时间,不需要或不希望限制1103处的LS进程使用。如表格1100的第一部分1101中所示,1102处的LS进程正在1103处消耗一定量的第一资源,所述一定量为在1104处所示的其保证或约定SLO值。
图12是示出根据一些实施例的用于计算系统的随时间变化的资源消耗和存储器时延的图形。图形1200示出了第一迹线1201,所述第一迹线以微秒为单位表示存储器时延的值。第一迹线1201表示系统中所有LS和NLS进程所经历的并且如图7至图11中所示的存储器时延。图形1200还示出了第二迹线1202,所述第二迹线表示图7至图11中所示的总第一资源(存储器带宽使用量)的实际消耗值。图形1200中的总消耗为10个单位(GB/s)。沿着图形1200的第一竖直轴1204示出了系统时延的细分。沿着图形1200的第二竖直轴1205示出了总消耗的细分。
沿着图形1200的水平轴1203绘制时间。时间以处理器的控制周期为单位。水平轴1203被细分为标记为T1至T5的五个部分。部分中的每个对应于表格700、800、900、1000和1100中的一者,其中T1对应于表格700,T2对应于表格800,T3对应于表格900,T4对应于表格1000,并且T5对应于表格1100。
对于前三个部分T1至T3,存储器时延1201低于系统时延阈值1206。时延阈值1206是基于空闲系统时延的预定阈值。例如,时延阈值1206至多为以下一者:比空闲系统时延高1%、2%、2.5%、3%、5%、7%、10%、12%、15%、20%、25%、30%、35%、40%、45%和50%。在第四部分T4中,实际存储器时延1201在区域1207处超过时延阈值1206。系统被配置为控制存储器时延1201。系统通过激活SLO调度器能够以编程方式将第五部分T5中的存储器时延1201(相对于第四部分T4)降低至时延阈值1206并低于所述时延阈值。如第五部分T5中所示,存储器时延1201至少在一定程度上取决于第二迹线1202的值在一些条件下的变化。所示条件是通过减少NLS进程对第一资源的消耗来将第一资源的总消耗减少到其最大值10GB/s以下。参考表格1100,存储器时延1201取决于912处NLS进程对第一资源的总体消耗的减少。具体地,如图形1200的部分T5中所示,SLO调度器已经减少了三个NLS进程中的每一者对第一资源的消耗。图形1200中所示的特定系统配置和控制方案涉及确保存储器时延1201保持在时延阈值1206以下,即使以允许最大程度地使用第一资源为代价。
此外,从表格700、表格800和表格900可以看出,并且在图形1200中可以看出,系统的SLO调度器被配置为将系统和处理器的两个因变量保持在期望范围内。具体地,SLO调度器能够允许每个LS进程在相应底限(诸如在2.0GB/s的底限)下消耗第一资源,并且能够通过如图形1200中所示调整NLS进程的活动来将总存储器时延保持在时延阈值1206以下。根据一些实施例,SLO调度器用来将存储器时延1201控制在时延阈值1206以下的一个变量是处理器或处理器中每个核的存储器预取量。
在参考图7至图12描述的示例中,底限控制变量至少在由图形1200的第四部分T4表示的特定时间段内具有高于进程时延变量的优先级。在部分T1、T2和T3中,系统已经能够允许NLS进程使用未分配给LS进程的多余带宽。在窗口T4中,系统识别出时延高于约定时延,并且进程LS2未满足其底限,如图10中的1003处可以看出。通过对NLS进程动态地施加上限或极限,系统能够通过基本上在所有时间或者至少在大部分时间单位或控制时间单位减少第五部分T5中的系统时延来使LS2恢复到其分配的带宽。
根据其他实施例,如对相关领域的技术人员明显的,如本文中所描述的处理器和SLO调度器不仅为LS进程提供保证的资源底限,而且还提供约定上限以便在相当长的时间范围(例如,几分钟、几小时、几天、几月)的基本上所有时间将进程和系统行为塑形为期望状态。
图13是示出根据一些实施例的用于在计算系统中可操作的单个LS进程的存储器带宽使用对进程存储器时延的图形1300。图13示出了处理器的行为以及SLO调度器针对特定进程采取的动作的结果。第一相关性1301和第二相关性1302示出了在两组计算系统条件下与处理器执行进程指令相关联的存储器时延1303和存储器带宽使用1304之间的关系。两个相关性1301、1302是系统中的特定进程的多个可能相关性中的两者。计算系统中进程的相关性(包括两个相关性1301、1302)是非线性的并且是多重关系的:系统中的多个变量影响包括存储器时延1303和存储器带宽使用1304的进程行为。出于说明目的,相关性1301和1302各自持续数毫秒或数秒,同时控制循环以较小时间量程(诸如微秒数量级)进行评估。
SLO调度器负责使进程行为处于某些极限内,诸如约定进程时延1305、最大可允许进程时延,其中所述进程行为基本上在可能的情况下在所有时间保持在约定进程时延1305或以下。约定进程时延1305是高于物理计算最小存储器时延时间1312的合理值,在所述合理值以下,即使没有任何其他进程竞争系统资源,无论多么简单也没有进程可以在计算系统中操作。如本文中所描述的约定进程时延1305是硬件部件或系统与操作人员之间的约定,而不是操作人员与使用所述硬件部件或系统的顾客之间的约定。在理解特定计算系统能够满足约定进程时延1305或被提供给SLO调度器的任何其他约束的情况下,所述约定在SLO调度器配置期间设定或识别。
在图13中,SLO调度器还负责当进程请求使用至少其存储器带宽底限1306时,使进程行为到所述进程的存储器带宽底限1306(处于或高于所述存储器带宽底限)。总之,SLO调度器控制计算系统中的某些变量以便控制特定进程的至少两个因变量或行为1303、1304。当所述进程没有请求至少其存储器带宽底限1306时,SLO调度器可以允许所述进程消耗少于其保证的存储器带宽底限1306。根据一些实施例,当所述进程请求至少其存储器带宽底限1306时,所述进程针对两种行为(存储器时延1303和存储器带宽使用1304)的期望行为满足两个条件,所述两个条件包括沿着第二相关性1302的第三点1311所示的约定进程时延1305。根据其他实施例,SLO调度器满足两个条件中的一者,所述条件在沿着图13中的相关性1301、1302的某些点处示出。
第一相关性1301描述了当系统处于包括特定水平的处理器负载的第一组系统条件下时的进程行为。例如,第一组系统条件包括在处理器上可操作的第一组活动LS和NLS进程的重负载,以及进程对存储器带宽使用的中度竞争量。在第一时间T1处,进程行为在沿着相关性1301的第一点1307处,所述第一点对应于高于所述进程的约定进程时延1305的存储器时延以及低于存储器带宽底限1306的存储器带宽使用。为了便于说明,所述进程始终(包括在T1)请求至少其存储器带宽底限1306。因此,在T1,SLO调度器违反了控制计算系统以为所述进程提供至少其存储器带宽底限1306,这是针对SLO调度器的约束条件。
在第一时间T1之后的某个时间,在第二时间T2,SLO调度器通过对系统中的NLS进程施加上限来减少系统时延。这已经导致进程行为处于沿着第一相关性1301的第二点1308处。根据一些实施例,第二时间T2是在T1之后的多个SLO调度器控制周期。如所示,进程行为在T2在第二点1308处仅满足两个条件中的一者:(1)将存储器时延减少到约定进程时延1305或以下,而不(2)提供所述进程正在请求的至少存储器带宽底限1306。因此,如相关性1301所指示,SLO调度器将违反满足存储器带宽底限1306。然而,在第二点1308处的这组条件是SLO调度器可以沿着第一相关性1301提供的最佳条件。因此,SLO调度器已满足了其对系统时延的约定义务,并且LS进程一定不会要求其存储器带宽底限分配,并且不需要对SLO调度器的一部分采取进一步的措施。NLS进程消耗的存储器带宽的上限可以通过任何适当的方式来实现。根据一个实施例,一种方法包括减少与针对给定NLS进程在给定时间处正在进行的并发存储器请求的数量相对应的可用令牌池中的可用令牌的数量。因此,在消耗存储器带宽的下一个或多个控制周期期间,特定进程竞争较少。这种对存储器带宽总需求的降低减少了系统中所有进程所经历的存储器时延。
第二相关性1302是用于计算系统内的特定进程的多个替代相关性中的一者。一旦SLO调度器已经改变了系统条件使得第二相关性1302生效,或者一旦计算系统已经前进到另一种状态使得第二相关性1302生效,特定进程的行为就会在SLO调度器的控制下从第一点1309变为沿着第二相关性1302的另一点。例如,可以将进程行为改变为第二点1310或第三点1311。第一点1309对应于高于所述进程的约定进程时延1305的存储器时延以及低于其存储器带宽底限1306的存储器带宽使用。所述进程在时间T1请求消耗的存储器带宽使用1304处于或高于存储器带宽底限1306。点1309对应于违反针对特定进程的两个条件。
第二相关性1302是用于计算系统内的特定进程的多个替代相关性中的一者,所述多个替代相关性可发生在不同时间。一旦第二相关性1302生效,特定进程的行为就会在SLO调度器的控制下从第一点1309变为沿着第二相关性1302的另一点。例如,因为LS进程没有消耗其带宽分配,并且系统时延高于约定时延,所以SLO调度器需要移动LS进程的操作点。通过对系统中的NLS进程的带宽利用率施加上限,SLO调度器降低了系统中的总存储器带宽需求。通过这种方式,LS进程的操作点改变为沿着相关性曲线1302的第二点。
在第一时间T1之后的某个时间,在第二时间T2,SLO调度器通过调整系统条件导致进程行为处于第二点1310或第三点1311,使得其他进程(例如,LS进程、NLS进程、LS进程和NLS进程两者)消耗更少的处理器资源。如图13中所示,当特定进程处于请求处于或高于存储器带宽底限1306的状态时,在第二点1310处用于所述进程的进程行为满足处于或高于该底限的存储器带宽使用。在第三点1311处,进程行为沿着第二相关性1302在T2也满足两个条件:(1)进程存储器时延小于约定进程时延1305,以及(2)当进程处于请求处于或高于存储器带宽底限1306的状态时,存储器带宽使用处于或高于该底限。因此,在第二时间T2处至少对于一个控制时间周期,SLO调度器将不需要通过独立控制变量来将系统条件改变为进一步脱离与第二相关性1302所对应的应用于特定进程行为的系统条件。实际上,在第三点1311处,SLO调度器可以通过遵循一种方法(诸如图3中所示的一种方法)来逐渐减少对LS进程和NLS进程的限制。这可以认为是对第三条件的优化:尽可能更少地应用限制使得在满足主要约束的同时将整个系统吞吐量最大化。
总之,关于图13,当通过第一相关性1301描述给定时间间隔内的进程特性时,SLO调度器被配置为将进程行为驱动到第一相关性1301与约定进程时延1305的交点。然而,当LS进程特性改变并且所述进程由第二相关性1302描述时,根据第一实施例,SLO调度器被配置为将进程行为驱动到第二相关性1302与存储器带宽底限1306的交点。根据第二实施例,SLO调度器被配置为将进程行为驱动到第二相关性1302与约定进程时延1305的交点。一般而言,时延1303与进程在某个操作阶段期间消耗的存储器带宽1304之间的关系是在特定计算系统上操作的对应软件应用的进程的函数。计算系统适于适应根据第一相关性1301在一段时间内以及根据第二相关性1302在其他时间段内表现的进程,其中所述进程在那些相关性1301、1302中的一者上停留的时间显著长于控制循环迭代时间。即,系统经由SLO调度器具有多个调整时间段以在进程相关性改变之前控制进程行为。
图13中所示的示例适用于由本文所述的SLO调度器的实施例控制的其他系统范围的条件和其他进程的行为。在一些实施例中,SLO调度器的部件(诸如进程行为的测量值或计数、系统时延阈值、LS底限和NLS设定点,以及其他部件)被存储在数据结构中,诸如存储在图1的处理器102的一组寄存器110中。此外,用于数据结构的值可以源自诸如图1的系统存储器103之类的系统存储器的进程调度参数122。根据一些实施例,并且根据需要,通过由操作系统提供的SLO调度器API(诸如通过图1的SLO调度器API 108和OS 120)分别将系统时延阈值、LS底限、NLS设定点和其他部件提供给SLO调度器,诸如图1的SLO调度器111。根据一些实施例,当通过在操作系统内执行或启动应用使应用投入使用时,SLO调度器被配置用于特定进程。例如,当第一次执行应用121时或者当通过另一个进程产生应用121的副本时,将用于特定进程的系统时延阈值、LS底限和NLS设定点提供给用于图1的SLO调度器111的寄存器110。图1的进程调度参数122、诸如图13的相关性1301、1302之类的进程相关性被应用以操作SLO调度器,诸如图1的SLO调度器111。
在一些实施例中,上述设备和技术在一种系统中实施,所述系统包括一个或多个集成电路(IC)装置(也被称为集成电路封装或微芯片),诸如上文参考图1描述的处理器102。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可以用于这些IC装置的设计和制造。这些设计工具通常被表示为一个或多个软件程序。所述一个或多个软件程序包括代码,所述代码可由计算机系统执行以操纵计算机系统来对表示一个或多个IC装置的电路的代码进行操作,以便执行用以设计或调适制造系统从而制造电路的过程的至少一部分。这个代码可以包括指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令通常存储在可由计算系统访问的计算机可读存储介质中。同样地,表示IC装置的设计或制造的一个或多个阶段的代码可以存储在同一计算机可读存储介质或不同的计算机可读存储介质中,以及从同一计算机可读存储介质或不同的计算机可读存储介质进行访问。
在第一方面,一种用于与系统存储器和操作系统进行通信的处理器,所述处理器包括:多个处理器核,所述多个处理器核用于执行第一进程和第二进程;以及调度器,所述调度器被配置为调度所述第二进程对存储器带宽的使用直到当与所述存储器带宽使用相对应的第一设定点处于或低于所述第一进程的时延敏感(LS)底限时所述第一进程在控制周期中的当前使用满足所述第一设定点,或者当所述第一设定点超过所述LS底限时所述第一进程在所述控制周期中的所述当前使用超过所述LS底限。
在所述第一方面的一个实施例中,所述调度器还被配置为通过估计所述第一进程在未来的控制周期中的所述存储器带宽的使用来确定所述第一设定点。在另一个实施例中,所述LS底限对应于所述处理器的第一核对所述存储器带宽的使用的极限,所述第一进程的所述第一设定点与所述第一核相关联,并且所述第一进程的所述当前使用是所述第一核的所述存储器带宽的使用。在另一实施例中,所述调度器还被配置为存储系统时延阈值,通过将系统时延阈值与当前系统进程时延进行比较来确定系统进程时延违反所述系统时延阈值,并且控制所述第二进程的执行直到解决所述系统进程时延违反。在特定实施例中,所述调度器还被配置为限制所述第一进程的执行直到解决所述系统进程时延违反。
在所述第一方面的另一实施例中,所述调度器还被配置为存储系统时延阈值,并且通过将系统时延阈值与当前系统进程时延进行比较来确定系统进程时延违反所述系统时延阈值。所述调度器还被配置为至少基于在当前控制周期中所述第二进程对所述存储器带宽的所述使用的极限来为所述第一进程和所述第二进程生成控制方案,并且通过降低在所述当前控制周期之后的后续控制周期中的所述极限来应用所述控制方案直到所述当前系统进程时延不再违反所述系统时延阈值。在更特定的实施例中,所述处理器包括用于所述系统时延阈值的寄存器,所述寄存器在所述操作系统中启动所述第一进程时可经由所述操作系统的应用程序接口(API)来访问。
在所述第一方面的另一实施例中,一种用于所述LS底限的寄存器,所述寄存器在所述操作系统中启动所述第一进程时可经由所述操作系统的应用程序接口(API)来访问。
在第二方面,一种方法包括:由装置的处理器的调度器确定在所述装置的所述处理器上执行的非时延敏感(NLS)进程对所述装置的存储器带宽的当前使用;由所述调度器确定在所述处理器上执行的时延敏感(LS)进程对所述存储器带宽的当前使用;当所述当前使用指示在所述LS进程请求使用所述存储器带宽的至少所述LS底限时所述LS进程未能使用所述存储器带宽的至少LS底限量时,由所述调度器确定总NLS限制值;由所述调度器基于所述总NLS限制值来确定用于所述NLS进程的限制方案;以及由所述处理器基于所述限制方案来将第一限制应用于所述NLS进程中的第一NLS进程,所述第一限制包括减少所述存储器带宽的消耗。
在所述第二方面的一个实施例中,所述方法包括:当所述LS进程未能使用至少LS底限使用量时且当所述LS进程请求使用所述存储器带宽的至少所述LS底限时,由所述调度器确定对所述LS进程的第二限制量;以及由所述处理器将所述第二限制应用于所述LS进程持续至少一个控制周期。在另一个实施例中,所述处理器是包括第一核和第二核的多核处理器,所述LS进程在控制周期中在所述第一核上执行,并且所述第一限制应用在所述控制周期中所述第二核对所述存储器带宽的消耗减少。在又一实施例中,所述处理器是包括多个核的多核处理器,并且所述第一限制被应用于在同一控制周期中执行的所述第一NLS进程的多个线程。
在所述第二方面的另一实施例中,所述方法包括:当所述第一NLS进程、第二NLS进程或所述LS进程中的任一者在所述装置的时延目标之外执行时,通过所述调度器对所述NLS进程中的所述第一NLS进程或所述第二NLS进程实施时延限制。在另一实施例中,所述LS底限是用于所述LS进程的入站网络带宽底限。
在第三方面,一种计算处理器包括:第一组寄存器,所述第一组寄存器用于存储在所述计算处理器上执行的非时延敏感(NLS)进程对装置的存储器带宽的当前使用;第二组寄存器,所述第二组寄存器用于存储在所述计算处理器上执行的时延敏感(LS)进程对所述存储器带宽的当前使用;第三组寄存器,所述第三组寄存器用于存储所述LS进程的LS底限;第四组寄存器,所述第四组寄存器用于存储所述NLS进程的总NLS限制值;以及调度器,所述调度器用于确定在LS进程中的一个或多个请求使用所述存储器带宽的至少所述LS底限之后所述一个或多个LS进程何时未能使用所述存储器带宽的至少相应的LS底限量,基于所述总NLS限制值来确定所述NLS进程的一组限制值,并基于这组限制值来限制所述NLS进程中的一个或多个对所述存储器带宽的使用。
在所述第三方面的一个实施例中,所述计算处理器包括第五组寄存器,所述第五组寄存器用于存储所述LS进程的LS限制值,并且所述调度器还用于当在所述LS进程请求使用所述存储器带宽的至少其相应的LS底限时所述LS进程中的一个或多个未能使用所述存储器带宽的至少LS底限量时确定所述LS进程的LS限制量,并且基于所确定的LS限制量来限制所述LS进程中的一个或多个持续至少一个控制周期。在另一个实施例中,所述计算处理器是包括第一核和第二核的多核处理器,所述NLS进程在控制周期中在所述第一核上执行,并且所述限制应用在所述控制周期中所述第一核对所述存储器带宽的消耗减少。
在所述第三方面的另一实施例中,所述NLS进程包括第一NLS进程;所述计算处理器包括多个核,并且所述限制被应用于在同一控制周期中在所述计算处理器中执行的第一NLS进程的多个线程。在又另一实施例中,所述NLS进程包括第一NLS进程,并且所述调度器进一步用于当LS进程正在所述装置的时延极限之外执行时将时延限制应用于所述第一NLS进程。在又另一实施例中,所述LS进程包括第一LS进程,并且所述调度器进一步用于当任何LS进程正在所述装置的时延极限之外执行时将时延限制应用于所述第一LS进程。
计算机可读存储介质可包含使用期间可由计算机系统访问以将指令和/或数据提供给计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可包含但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,RAM)、非易失性存储器(例如,ROM或快闪存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器)或经由有线或无线网络耦合到计算机系统(例如,网络可访问存储装置(NAS))。
在一些实施例中,上文描述的技术的某些方面可以由执行软件的处理系统的一个或多个处理器实施。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个和多个可执行指令集合。所述软件可以包括当由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可以包括例如磁盘或光盘存储装置、固态存储装置诸如快闪存储器、缓存、随机存取存储器(RAM)或其他一个或多个非易失性存储器装置等。存储在非暂时性计算机可读存储介质上的可执行指令可以呈源代码、汇编语言代码、目标代码或者被一个或多个处理器解译或可以其他方式执行的其他指令格式。
应当注意,并不需要上文在一般描述中所描述的所有活动或元件,特定活动或装置的一部分可能是不需要的,并且可执行一个或多个其他活动,或者可包括除所描述的那些元件之外的元件。此外,列出活动的顺序不一定是执行活动的顺序。另外,已经参考具体实施例描述了概念。然而,本领域普通技术人员应了解,在不脱离如所附权利要求中所阐述的本公开范围的情况下,可作出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性意义的,并且所有此类修改都意图被包括在本公开的范围内。
上文已经关于具体实施例描述了益处、其他优点以及问题解决方案。然而,所述益处、优点、问题解决方案以及可使任何益处、优点或问题解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,上文所公开的特定实施例只是说明性的,因为所公开的主题可按受益于本文教义的本领域技术人员明白的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制本文所展示的构造或设计的细节。因此,明显的是,上文所公开的特定实施例可更改或修改,并且所有此类变化都被认为是在所公开的主题的范围内。因此,本文所寻求的保护正如在所附权利要求中所阐述的那般。

Claims (20)

1.一种用于与系统存储器和操作系统进行通信的处理器,所述处理器包括:
多个处理器核,所述多个处理器核用于执行第一进程和第二进程;以及
调度器,所述调度器被配置为调度所述第二进程对存储器带宽的使用直到:
当与所述存储器带宽的所述使用相对应的第一设定点处于或低于所述第一进程的时延敏感(LS)底限时所述第一进程在控制周期中的当前使用满足所述第一设定点;或者
当所述第一设定点超过所述LS底限时所述第一进程在所述控制周期中的所述当前使用超过所述LS底限。
2.如权利要求1所述的处理器,其中所述调度器还被配置为:
通过估计所述第一进程在未来的控制周期中的所述存储器带宽的使用来确定所述第一设定点。
3.如权利要求1所述的处理器,其中:
所述LS底限对应于所述处理器的第一核对所述存储器带宽的使用的极限;
所述第一进程的所述第一设定点与所述第一核相关联;并且
所述第一进程的所述当前使用是所述第一核的所述存储器带宽的使用。
4.如权利要求1所述的处理器,其中所述调度器还被配置为:
存储系统时延阈值;
通过将所述系统时延阈值与当前系统进程时延进行比较来确定系统进程时延违反所述系统时延阈值;并且
控制所述第二进程的执行直到解决所述系统进程时延违反。
5.如权利要求4所述的处理器,其中所述调度器还被配置为:
限制所述第一进程的执行直到解决所述系统进程时延违反。
6.如权利要求1所述的处理器,其中所述调度器还被配置为:
存储系统时延阈值;
通过将所述系统时延阈值与当前系统进程时延进行比较来确定系统进程时延违反所述系统时延阈值;
至少基于以下项来为所述第一进程和所述第二进程生成控制方案:
在当前控制周期中所述第二进程对所述存储器带宽的所述使用的极限;并且
通过以下项来应用所述控制方案直到所述当前系统进程时延不再违反所述系统时延阈值:
降低在所述当前控制周期之后的后续控制周期中的所述极限。
7.如权利要求6所述的处理器,其还包括:
用于所述系统时延阈值的寄存器,所述寄存器在所述操作系统中启动所述第一进程时可经由所述操作系统的应用程序接口(API)来访问。
8.如权利要求1所述的处理器,其还包括:
用于所述LS底限的寄存器,所述寄存器在所述操作系统中启动所述第一进程时可经由所述操作系统的应用程序接口(API)来访问。
9.一种方法,其包括:
由装置的处理器的调度器确定在所述装置的所述处理器上执行的非时延敏感(NLS)进程对所述装置的存储器带宽的当前使用;
由所述调度器确定在所述处理器上执行的时延敏感(LS)进程对所述存储器带宽的当前使用;
当所述当前使用指示在所述LS进程请求使用所述存储器带宽的至少所述LS底限时所述LS进程未能使用所述存储器带宽的至少LS底限量时,由所述调度器确定总NLS限制值;
由所述调度器基于所述总NLS限制值来确定用于所述NLS进程的限制方案;以及
由所述处理器基于所述限制方案来将第一限制应用于所述NLS进程中的第一NLS进程,所述第一限制包括减少所述存储器带宽的消耗。
10.如权利要求9所述的方法,其还包括:
当所述LS进程未能使用至少LS底限使用量时且当所述LS进程请求使用所述存储器带宽的至少所述LS底限时,由所述调度器确定对所述LS进程的第二限制量;以及
由所述处理器将所述第二限制应用于所述LS进程持续至少一个控制周期。
11.如权利要求9所述的方法,其中:
所述处理器是包括第一核和第二核的多核处理器;
所述LS进程在控制周期中在所述第一核上执行;并且
所述第一限制应用在所述控制周期中所述第二核对所述存储器带宽的消耗减少。
12.如权利要求9所述的方法,其中:
所述处理器是包括多个核的多核处理器;并且
所述第一限制被应用于在同一控制周期中执行的所述第一NLS进程的多个线程。
13.如权利要求9所述的方法,其还包括:
当所述第一NLS进程、第二NLS进程或所述LS进程中的任一者在所述装置的时延目标之外执行时,通过所述调度器对所述NLS进程中的所述第一NLS进程或所述第二NLS进程实施时延限制。
14.如权利要求9所述的方法,其中:
所述LS底限是用于所述LS进程的入站网络带宽底限。
15.一种计算处理器,其包括:
第一组寄存器,所述第一组寄存器用于存储在所述计算处理器上执行的非时延敏感(NLS)进程对装置的存储器带宽的当前使用;
第二组寄存器,所述第二组寄存器用于存储在所述计算处理器上执行的时延敏感(LS)进程对所述存储器带宽的当前使用;
第三组寄存器,所述第三组寄存器用于存储所述LS进程的LS底限;
第四组寄存器,所述第四组寄存器用于存储所述NLS进程的总NLS限制值;以及
调度器,所述调度器用于:
确定在所述LS进程中的一个或多个请求使用所述存储器带宽的至少所述LS底限之后所述一个或多个LS进程何时未能使用所述存储器带宽的至少相应的LS底限量;
基于所述总NLS限制值来确定所述NLS进程的一组限制值;并且
基于所述一组限制值来限制所述NLS进程中的一个或多个对所述存储器带宽的使用。
16.如权利要求15所述的计算处理器,其还包括:
第五组寄存器,所述第五组寄存器用于存储所述LS进程的LS限制值;并且
所述调度器还用于:
当在所述LS进程请求使用所述存储器带宽的至少其相应的LS底限时所述LS进程中的一个或多个未能使用所述存储器带宽的至少LS底限量时确定所述LS进程的LS限制量;并且
基于所确定的LS限制量来限制所述LS进程中的一个或多个持续至少一个控制周期。
17.如权利要求15所述的计算处理器,其中:
所述计算处理器是包括第一核和第二核的多核处理器;
所述NLS进程在控制周期中在所述第一核上执行;并且
限制应用在所述控制周期中所述第一核对所述存储器带宽的消耗减少。
18.如权利要求15所述的计算处理器,其中:
所述NLS进程包括第一NLS进程;
所述计算处理器包括多个核;并且
限制被应用于在同一控制周期中在所述计算处理器中执行的第一NLS进程的多个线程。
19.如权利要求15所述的计算处理器,其中:
所述NLS进程包括第一NLS进程;并且
所述调度器还用于:
当LS进程正在所述装置的时延极限之外执行时将时延限制应用于所述第一NLS进程。
20.如权利要求15所述的计算处理器,其中:
所述LS进程包括第一LS进程;并且
所述调度器还用于:
当任何LS进程正在所述装置的时延极限之外执行时将时延限制应用于所述第一LS进程。
CN201880082739.8A 2017-12-20 2018-09-18 基于服务质量底限调度存储器带宽 Active CN111512291B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/849,266 US10700954B2 (en) 2017-12-20 2017-12-20 Scheduling memory bandwidth based on quality of service floorbackground
US15/849,266 2017-12-20
PCT/US2018/051593 WO2019125557A1 (en) 2017-12-20 2018-09-18 Scheduling memory bandwidth based on quality of service floorbackground

Publications (2)

Publication Number Publication Date
CN111512291A true CN111512291A (zh) 2020-08-07
CN111512291B CN111512291B (zh) 2024-06-18

Family

ID=66816568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880082739.8A Active CN111512291B (zh) 2017-12-20 2018-09-18 基于服务质量底限调度存储器带宽

Country Status (6)

Country Link
US (1) US10700954B2 (zh)
EP (1) EP3729282A4 (zh)
JP (1) JP7109549B2 (zh)
KR (1) KR102430934B1 (zh)
CN (1) CN111512291B (zh)
WO (1) WO2019125557A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561834B2 (en) * 2019-01-16 2023-01-24 Rambus Inc. Methods and systems for adaptive memory-resource management
US11314558B2 (en) 2019-07-23 2022-04-26 Netapp, Inc. Methods for dynamic throttling to satisfy minimum throughput service level objectives and devices thereof
US11169812B2 (en) * 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
CN111444012B (zh) * 2020-03-03 2023-05-30 中国科学院计算技术研究所 一种保证延迟敏感应用延迟slo的动态调控资源方法及系统
JP2021170241A (ja) * 2020-04-16 2021-10-28 富士通株式会社 情報処理装置及び制御プログラム
US12112212B2 (en) * 2021-02-26 2024-10-08 Google Llc Controlling system load based on memory bandwidth

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101896886A (zh) * 2007-10-31 2010-11-24 艾科立方公司 单个计算机系统上运行的多个内核之间的一致同步
CN102473137A (zh) * 2009-07-23 2012-05-23 英派尔科技开发有限公司 线程节流
US20140137129A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system
US20140372711A1 (en) * 2013-06-13 2014-12-18 Advanced Micro Devices, Inc. Scheduling memory accesses using an efficient row burst value
US20160179560A1 (en) * 2014-12-22 2016-06-23 Mrittika Ganguli CPU Overprovisioning and Cloud Compute Workload Scheduling Mechanism
CN106716365A (zh) * 2014-09-26 2017-05-24 微软技术许可有限责任公司 异构线程调度

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060004983A1 (en) * 2004-06-30 2006-01-05 Tsao Gary Y Method, system, and program for managing memory options for devices
US8230069B2 (en) * 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
WO2010095182A1 (ja) 2009-02-17 2010-08-26 パナソニック株式会社 マルチスレッドプロセッサ及びデジタルテレビシステム
JP5803408B2 (ja) * 2011-08-11 2015-11-04 富士通株式会社 通信方法及び情報処理システム
US8705307B2 (en) * 2011-11-17 2014-04-22 International Business Machines Corporation Memory system with dynamic refreshing
WO2013101139A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Providing an asymmetric multicore processor system transparently to an operating system
US8775762B2 (en) 2012-05-07 2014-07-08 Advanced Micro Devices, Inc. Method and apparatus for batching memory requests
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
US9535860B2 (en) 2013-01-17 2017-01-03 Intel Corporation Arbitrating memory accesses via a shared memory fabric
US9483423B2 (en) 2013-05-17 2016-11-01 Nvidia Corporation Techniques for assigning priorities to memory copies
US9632832B2 (en) 2014-02-27 2017-04-25 Empire Technology Development Llc Thread and data assignment in multi-core processors based on cache miss data
US9645935B2 (en) 2015-01-13 2017-05-09 International Business Machines Corporation Intelligent bandwidth shifting mechanism
US10210023B2 (en) 2016-04-05 2019-02-19 Netapp, Inc. Methods and systems for managing service level objectives in a networked storage environment
US10387099B2 (en) * 2016-07-28 2019-08-20 Intelligent Waves Llc System, method and computer program product for generating remote views in a virtual mobile device platform using efficient color space conversion and frame encoding
US10185659B2 (en) * 2016-12-09 2019-01-22 Cray, Inc. Memory allocation system for multi-tier memory
US10776309B2 (en) * 2016-12-31 2020-09-15 Intel Corporation Method and apparatus to build a monolithic mesh interconnect with structurally heterogenous tiles

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101896886A (zh) * 2007-10-31 2010-11-24 艾科立方公司 单个计算机系统上运行的多个内核之间的一致同步
CN102473137A (zh) * 2009-07-23 2012-05-23 英派尔科技开发有限公司 线程节流
US20140137129A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system
US20140372711A1 (en) * 2013-06-13 2014-12-18 Advanced Micro Devices, Inc. Scheduling memory accesses using an efficient row burst value
CN106716365A (zh) * 2014-09-26 2017-05-24 微软技术许可有限责任公司 异构线程调度
US20160179560A1 (en) * 2014-12-22 2016-06-23 Mrittika Ganguli CPU Overprovisioning and Cloud Compute Workload Scheduling Mechanism
CN107003887A (zh) * 2014-12-22 2017-08-01 英特尔公司 Cpu超载设置和云计算工作负荷调度机构

Also Published As

Publication number Publication date
US10700954B2 (en) 2020-06-30
JP2021508108A (ja) 2021-02-25
EP3729282A1 (en) 2020-10-28
KR20200090957A (ko) 2020-07-29
KR102430934B1 (ko) 2022-08-08
EP3729282A4 (en) 2021-05-05
JP7109549B2 (ja) 2022-07-29
WO2019125557A1 (en) 2019-06-27
US20190190805A1 (en) 2019-06-20
CN111512291B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
CN111512291A (zh) 基于服务质量底限调度存储器带宽
US9152200B2 (en) Resource and power management using nested heterogeneous hypervisors
TWI591542B (zh) 雲端計算節點、方法與系統及電腦可讀媒體
JP6381956B2 (ja) 動的仮想マシンサイジング
US9146761B2 (en) Virtualization system and resource allocation method thereof
KR20160005367A (ko) 전력-인식 스레드 스케줄링 및 프로세서들의 동적 사용
US20140373010A1 (en) Intelligent resource management for virtual machines
EP3543852B1 (en) Systems and methods for variable rate limiting of shared resource access
JP6895235B2 (ja) 環境的に調整されたスラックを割り当てるためのシステム及び方法
US9183061B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
US10079774B2 (en) Hierarchical fairshare of multi-dimensional resources
JP5616523B2 (ja) 情報処理システム
CN115599512A (zh) 在图形处理单元上调度作业
JP2012133630A (ja) ストレージリソース制御システムおよびストレージリソース制御プログラムならびにストレージリソース制御方法
US20220171549A1 (en) Method for dynamically assigning memory bandwidth
KR20210007417A (ko) 멀티-코어 시스템 및 그 동작 제어 방법
KR101924467B1 (ko) 가상 머신의 cpu 및 블록 i/o 작업에 성능 보장을 위한 자원 할당 시스템 및 방법
JP5945617B2 (ja) マルチコアプロセッサの制御プログラム、電子機器及び制御方法
US11403143B2 (en) DRR-based two stages IO scheduling algorithm for storage system with dynamic bandwidth regulation
CN115129465A (zh) 用于运行计算单元的方法
CN112667356A (zh) 时延可预测的NVMe存储虚拟化方法和系统
KR101743028B1 (ko) 가상화 환경에서 네트워크 성능 차등화를 위한 동적 자원 할당 장치 및 방법
US20100192158A1 (en) Modeling Computer System Throughput
WO2024013831A1 (ja) タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム
CN107391229B (zh) 一种基于vmware虚拟化的集群填满方法及装置

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