CN103189844A - 在非一致存储器访问架构上使用处理位置来绑定io资源 - Google Patents
在非一致存储器访问架构上使用处理位置来绑定io资源 Download PDFInfo
- Publication number
- CN103189844A CN103189844A CN2011800524139A CN201180052413A CN103189844A CN 103189844 A CN103189844 A CN 103189844A CN 2011800524139 A CN2011800524139 A CN 2011800524139A CN 201180052413 A CN201180052413 A CN 201180052413A CN 103189844 A CN103189844 A CN 103189844A
- Authority
- CN
- China
- Prior art keywords
- numa
- node
- framework
- numa node
- proc
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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/505—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 load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
大体上在一方面,本发明涉及将输入/输出(I/O)对象绑定到节点的方法。所述方法包括:从处理接收使用I/O器件的请求;确定服务于该请求的资源;生成与该资源对应的第一I/O对象,该第一I/O对象未被绑定;生成proc对象,该proc对象包括对请求使用所述I/O器件的处理的引用。该方法还包括:将第一I/O对象和proc对象发送到非一致存储器访问(NUMA)I/O框架;确定所述处理正在第一NUMA节点上执行;选择第一NUMA;将第一I/O对象绑定到第一NUMA节点;以及通过在第一NUMA节点上处理与第一I/O对象对应的资源来服务于所述请求。
Description
背景技术
一些现代计算系统架构利用物理上和概念上分离的节点来改变计算硬件的速度。在这些架构中,输入/输出器件可以位于计算机上的各种物理位置中。分离节点上的不同应用和处理可以使用每个输入/输出器件。在这些架构上执行的内核元件可以负责促进输入/输出器件与物理上远离该器件的应用之间的通信。
发明内容
通常,在一方面,本发明涉及一种计算机可读介质,其包括软件指令,该指令在被处理器执行时执行一方法。所述方法包括:I/O(输入输出)子系统从处理接收使用I/O器件的请求;所述I/O子系统确定用于服务该请求的资源;所述I/O子系统生成与所述资源对应的第一I/O对象,其中所述第一I/O对象是未绑定的;以及所述I/O子系统生成proc对象,其中所述proc对象包括对请求使用所述I/O器件的处理的引用。所述方法还包括:所述I/O子系统将所述第一I/O对象和所述proc对象发送到非一致存储器访问(NUMA)I/O框架;所述NUMA I/O框架使用所述proc对象来确定所述处理正在第一NUMA节点上执行;所述NUMA I/O框架基于确定所述处理正在所述第一NUMA节点上执行而选择所述第一NUMA节点;所述NUMAI/O框架基于所述选择而将所述第一I/O对象绑定到所述第一NUMA节点;以及通过在所述第一NUMA节点上处理与所述第一I/O对象对应的资源来服务于所述请求。
通常,在一方面,本发明涉及一种系统。所述系统包括多个非一致存储器访问(NUMA)节点,其包括包含第一处理器和第一存储器的第一NUMA节点。所述系统还包括I/O器件组,其包括I/O器件。所述系统还包括:I/O子系统,在所述多个NUMA节点中的至少一个上执行,配置为:从在所述第一NUMA节点上执行的处理接收使用所述I/O器件的请求;生成包括对请求使用所述I/O器件的处理的引用的proc对象;确定服务于所述请求所需的第一资源;以及生成与所述第一资源对应的第一I/O对象,其中所述第一I/O对象是未绑定的。所述系统还包括:NUMA I/O框架,在所述多个NUMA节点中的至少一个上执行,配置为:从所述I/O子系统接收所述第一I/O对象;从所述I/O子系统接收所述proc对象;使用所述proc对象来确定所述处理正在所述第一NUMA节点上执行;基于确定所述处理正在所述第一NUMA节点上执行而选择所述第一NUMA节点;以及将所述第一I/O对象绑定到所述第一NUMA节点,其中通过在所述第一NUMA节点上处理与所述第一I/O对象对应的所述第一资源来服务于所述请求。
通常,在一方面,本发明涉及一种用于将I/O对象绑定到节点的方法。所述方法包括:网络栈从处理接收创建到I/O器件的连接的请求;所述网络栈确定服务于所述请求的线程;所述网络栈生成与所述线程对应的第一I/O对象,其中,所述第一I/O对象是未绑定的;以及所述网络栈生成proc对象,其中所述proc对象包括对发送创建所述连接的请求的所述处理的引用。所述方法还包括:所述网络栈将所述第一I/O对象和所述proc对象发送到非一致存储器访问(NUMA)I/O框架;所述NUMA I/O框架使用所述proc对象确定所述处理正在多个NUMA节点中的第一NUMA节点上执行;所述NUMA I/O框架基于确定所述处理正在所述第一NUMA节点上执行而选择所述第一NUMA节点;所述NUMA I/O框架基于所述选择而将所述第一I/O对象绑定到所述第一NUMA节点;以及通过在所述第一NUMA节点上执行与所述第一I/O对象对应的所述线程来服务于所述连接。
附图说明
图1示出根据本发明的一个或多个实施例的系统。
图2示出根据本发明的一个或多个实施例的NUMA节点。
图3示出根据本发明的一个或多个实施例的I/O器件组。
图4示出根据本发明的一个或多个实施例的系统。
图5示出根据本发明的一个或多个实施例的I/O拓扑模块。
图6示出根据本发明的一个或多个实施例的地点组模块。
图7示出根据本发明的一个或多个实施例的负载平衡模块。
图8示出根据本发明的一个或多个实施例的I/O对象组。
图9示出根据本发明的一个或多个实施例的流程图。
图10示出根据本发明的一个或多个实施例的流程图。
图11示出根据本发明的一个或多个实施例的流程图。
图12示出根据本发明的一个或多个实施例的流程图。
图13示出根据本发明的一个或多个实施例的流程图。
图14A示出根据本发明的一个或多个实施例的示例性系统。
图14B示出根据本发明的一个或多个实施例的示例性时间线。
图14C示出根据本发明的一个或多个实施例的示例性时间线。
图15示出根据本发明的一个或多个实施例的系统。
具体实施方式
将参照附图描述本发明的示例性实施例。附图中相似的项以相同的附图标记示出。在本发明实施例中,阐述大量具体细节以提供对本发明的更透彻理解。然而对本领域技术人员而言将显然的是,可以在没有这些具体细节的情况下实践本发明。在其它实例中,并未详细描述公知特征,以免模糊本发明。
通常,本发明的实施例涉及用于管理具有非一致存储器访问(NUMA)架构的系统上的输入/输出(I/O)资源的框架。更特别地,本发明的实施例涉及用于动态地安置I/O资源和将I/O资源重新分配给NUMA节点的方法和系统。
图1示出根据本发明一实施例的系统。如图1所示,该系统包括节点A(100A)、节点B(100B)、节点C(100C)和节点N(100N)。每个节点(节点A(100A)、节点B(100B)、节点C(100C)和节点N(100N))操作上经由互连(IC)(IC A(102A)、IC B(102B)、IC C(102C)、IC N(102N))连接到一个或多个其它节点。每个节点(节点A(100A)、节点B(100B)、节点C(100C)和节点N(100N))也操作上连接到一个或多个I/O器件组(I/O器件组A(104A)、I/O器件组D(104D)、I/O器件组C(104C)、I/O器件组B(104B)、I/O器件组E(104E)、I/O器件组N(104N))(见图3)。该系统还包括I/O子系统(106)和NUMA I/O框架(108)。在本发明的一个或多个实施例中,图1描述的系统架构可以操作为具有NUMA架构的系统。在本发明的一个或多个实施例中,IC(IC A(102A)、IC B(102B)、IC C(102C)、IC N(102N))可以实现为能够在NUMA架构系统上的节点之间传送数据的计算机总线或数据链路。
在本发明的一个或多个实施例中,I/O子系统(106)(又称为I/O框架)提供系统处理与各种系统I/O功能之间的抽象层。具体地说,I/O子系统(106)可以对利用该框架的软件实体如何与彼此通信进行多种控制,并且可以包括用于另外其他系统目的(例如电源管理、消耗方优先级等)的机制。I/O子系统(例如I/O子系统(106))的示例包括但不限于存储栈、网络栈、InfiniBand ULP(InfiniBand是InfiniBand贸易协会的注册商标)以及网络MAC层。
在本发明的一个或多个实施例中,每个I/O子系统从其它软件实体接收使用或访问其关联的I/O器件的请求。在本发明的一个或多个实施例中,每个I/O子系统包括管理服务于该请求所需的I/O资源的功能。I/O受管理资源可以包括例如线程、中断(interrupt)以及软件接收环(ring)。此外,I/O子系统(106)可以通过初始化与受管理资源对应的I/O对象来管理其关联资源。(见图8)。此外,由一个或多个I/O子系统(106)管理的I/O资源可以在单个节点(例如节点A(100A))上、在多个节点(例如节点A(100A)和节点B(100B))上或在单个系统内的所有节点上存在或运行。I/O子系统(106)中的每个也可以在单个节点(例如节点A(100A))上、在多个节点(例如节点A(100A)和节点B(100B))上或在单个系统内的所有节点上运行。相应地,为了示范,I/O子系统(106)和NUMA I/O框架(108)在图1中示为在系统上的其它元件的外部。
在本发明的一个或多个实施例中,NUMA I/O框架(108)是I/O子系统(106)与下面的NUMA架构(例如图1所示的系统)之间的抽象层。NUMA I/O框架(108)承担确定何处以及如何处理I/O对象(例如对I/O资源的引用)的所有责任。具体地说,NUMA I/O框架管理由I/O子系统(106)管理的I/O资源的物理位置。在本发明的一个或多个实施例中,NUMA I/O框架使用为了进一步的系统目标而实施的策略或信息收集模块来确定I/O对象的安置。
在本发明的一个或多个实施例中,NUMA I/O框架(108)将I/O资源绑定到系统上的一个或多个节点。将I/O资源绑定到节点可以包括:向内核调度器通知将要在I/O资源绑定到的一个或多个节点上执行与I/O资源关联的指令。在本发明的一个或多个实施例中,一旦I/O资源绑定到一个或多个节点(例如经由I/O对象),源自该I/O资源的指令或消息就被调度为用于在其绑定到的节点上执行,直到存在NUMA I/O框架(108)的进一步干预。在本发明的一个实施例中,I/O资源可以绑定到节点的子集(例如经由I/O对象)。作为绑定I/O资源的一部分,NUMA I/O框架(108)可以提供关于节点子集的内核调度器信息。内核调度器然后可以选择在节点子集中的哪个节点上调度指令或消息以用于执行。
图2示出根据本发明一实施例的节点。如图2所示,节点A(200A)操作上经由IC(IC A(202A)、IC N(202N))连接到节点B(200B)和节点N(200N)。节点A(200A)包括经由总线(210)连接到存储器(208)的中央处理单元(CPU)(204)和高速缓存(cache)(206)。系统中的其它节点中的每个(节点B(200B)、节点N(200C))可以包括与节点A(200A)中所描述的那些基本相似的元件。
在本发明的一个或多个实施例中,存储器(208)包括本地应用存储器和本地内核存储器。可以分配一部分本地内核存储器,以供系统侧软件元件(例如I/O子系统、NUMA I/O框架等)使用。在本发明一实施例中,存储器(208)在对于节点A(200A)上的CPU(204)特定的存储器管理器的控制之下,节点B(200B)的存储器(未示出)在对于节点B(200B)的CPU(未示出)特定的存储器管理器的控制之下。换言之,上述架构与所有CPU从单个存储器管理器竞争存储器的架构相比可以更高效地操作。可以在除了上述系统架构之外的系统架构上实施本发明的其它实施例。
在本发明的一个或多个实施例中,可以用变化的频率来接收利用CPU(204)和存储器(208)在节点A(200A)上执行的处理和其它指令集。例如,如果节点具有每秒处理10条指令的能力,但每秒仅接收5条指令,则该节点被称为是利用不足的。如果同一节点替代地每秒接收12条指令,则该节点被称为是利用过度的。节点的I/O负载容量指的是节点在不变得利用过度的情况下可以处理的额外指令量的量化(例如,利用不足的节点相对于节点的总处理能力将具有高I/O负载容量)。
在本发明的一个或多个实施例中,每个节点(节点A(200A)、节点B(200B)、节点N(200B))可以操作地连接到一个或多个I/O器件组。如图2所示的那样,节点A(200A)操作上连接到一个或多个I/O器件组(IO器件组A(212A)、I/O器件组N(212N))。在本发明一实施例中,I/O器件组中的一个或多个(例如I/O器件组A(212A)、I/O器件组N(212N))可以经由IC连接到一个或多个节点。
在本发明的一个或多个实施例中,NUMA节点可以包括CPU(例如CPU(204)),而不包括存储器。替代地,在本发明一实施例中,NUMA节点可以包括存储器(例如存储器(208)),但不包括CPU。
图3示出根据本发明一实施例的I/O器件组。如图3所示,I/O器件组(300)包括一个或多个I/O器件(IO器件A(302A)、I/O器件N(302N)),其操作上连接到I/O总线(304),I/O总线(304)进而操作上连接到I/O桥(306)。I/O桥(306)操作上连接到一个或多个节点(节点A(308A)、节点N(308N))(例如图1中的节点A(100A))。
在本发明一实施例中,I/O器件(IO器件A(302A)、I/O器件N(302N))指的是连接到计算机系统的资源,其可以由在系统上执行的程序使用,以用于信息输入和/或信息输出。这种器件的示例可以包括但不限于盘驱动器、网络接口卡、打印机、通用串行总线(USB)等。本领域技术人员应理解,存在这里未列出的其它I/O器件。
图4示出根据本发明一实施例的系统。具体地说,图4示出根据本发明一实施例在系统的一个或多个节点(例如图1中的节点A(200A)、节点B(200B)和节点N(200N))上执行的软件实体之间的交互。如图4所示,系统包括NUMA I/O框架(400),其直接地或经由内核亲和性API(404)与I/O子系统(402)进行通信。I/O子系统(402)促进消耗方(406)与I/O器件(408)之间的通信(经由器件驱动器(410))。I/O子系统也可以从管理工具(412)接收I/O对象约束或限制信息。
在本发明的一个或多个实施例中,NUMA I/O框架(400)利用多个专用模块来执行具体任务和收集信息。这些模块包括NUMA内核存储器分配模块(414)、I/O负载平衡模块(416)、NUMA地点(locality)组模块(418)和I/O拓扑模块(420)。以下详细描述这些元件中的每一个。
在本发明的一个或多个实施例中,消耗方(消耗方(406))指的是利用或试图利用系统的I/O资源的处理和程序。消耗方可以在内核级别操作(例如,作为操作系统的一部分),或可以在用户级别操作(例如,作为应用的一部分)。I/O资源可以包括I/O器件(例如I/O器件(408))、处理资源(例如图2中的CPU(204)和存储器(208))以及促进处理与I/O器件之间的通信的其它系统元件(例如中断、接收环、监听方等),并且可以包括物理或虚拟元件。
在本发明的一个或多个实施例中,I/O子系统(402)管理服务于从消耗方(406)接收到的访问I/O器件(408)的请求所需的I/O资源。这些请求可以包括调用以打开到I/O器件(408)的连接、或建立经由适当I/O子系统(402)的数据链路。I/O子系统(402)可以还包括如下功能:初始化或实例化I/O对象,以及将I/O对象与I/O资源关联。具体地说,I/O子系统(402)可以创建包括对I/O资源的引用的I/O对象,其可以然后被提供给NUMA I/O框架(400)作为绑定I/O资源的请求的一部分(见图8)。
在本发明一实施例中,NUMA I/O框架(400)从I/O子系统(402)接收I/O对象。可以经由内核亲和性API(404)接收I/O对象,内核亲和性API(404)为I/O子系统(402)提供接口以将I/O对象注册到NUMA I/O框架(400)。此外,注册到NUMA I/O框架(400)的I/O对象可以包括关于I/O对象分组、I/O对象之间的亲和性以及与I/O对象关联的任何约束的信息。NUMA I/O框架(400)使用亲和性来确定I/O对象应绑定到的适当的一个或多个节点。(例如,物理上彼此靠近的节点、物理上靠近所指定的I/O器件的节点等)。在本发明的一个或多个实施例中,I/O对象以一个或多个I/O对象组(见图8)发送到NUMA I/O框架(400)。
在本发明一实施例中,NUMA I/O框架(400)将I/O对象绑定到节点。在本发明一实施例中,绑定I/O对象指的是将I/O对象所引用的I/O资源发布的任务(例如处理中断、执行线程)分配给系统上的一个或多个节点。在本发明的一个或多个实施例中,NUMA I/O框架(400)使用I/O对象内的信息(例如亲和性)以及来自系统上的其它模块的信息和这些模块的功能以完成绑定。下面分别关于图5、图6和图7讨论负载平衡模块(416)、地点组模块(418)和I/O拓扑模块(420)。在本发明一实施例中,NUMA I/O框架(400)可以根据一个或多个目的来绑定I/O对象。例如,NUMA I/O框架(400)可以绑定I/O对象以使得整个系统的性能最大化。替代地,NUMA I/O框架(400)可以按照最高效地使用系统资源的方式来绑定I/O对象。NUMA I/O框架(400)也可以绑定I/O对象以使得执行一个或所有处理的速度最大化。NUMA I/O框架(400)可以按照使得正使用的I/O器件与绑定到关联的I/O对象的节点之间的距离最小化的方式来绑定I/O对象。
在本发明的一个或多个实施例中,内核存储器分配模块(414)允许NUMA I/O框架(400)分配来自任何附连节点的内核存储器(例如来自图2中节点A(200A)中的存储器(208))。在本发明一实施例中,负载平衡模块(416)监视每个节点执行的工作量。考虑到资源管理和I/O拓扑(即节点相对于彼此的位置),NUMA I/O框架使用该信息来对节点之间的工作进行动态平衡。在本发明一实施例中,系统节点进行的工作量或处理速率被称为节点的I/O负载。
图5示出根据本发明一实施例的I/O拓扑模块。如图5所示,I/O拓扑模块(500)包括一个或多个I/O器件记录(I/O器件记录A(502A)、I/O器件记录N(502N))。I/O拓扑模块(500)使用从I/O子系统(例如图4中的I/O子系统(402))收集到的信息来为系统上的每个I/O器件(例如图4中的I/O器件(408))创建I/O器件记录。每个I/O器件记录(例如I/O器件记录A(502A)、I/O器件记录N(502N))包括指示哪些系统节点直接连接到I/O器件的信息。替代地,在本发明的一个或多个实施例中,由I/O拓扑模块(500)可访问的系统上的其它内核元件创建和维护I/O器件记录。关于系统上的每个I/O器件的位置的信息可以被称为I/O拓扑。
在本发明的一个或多个实施例中,I/O拓扑模块(500)包括如下功能:对NUMA I/O框架的询问进行响应,从而对于给定的I/O器件,I/O拓扑模块(500)返回直接连接到该I/O器件的一个或多个节点。在本发明一实施例中,这些节点被称为优选节点。
图6示出根据本发明一实施例的地点组模块。如图6所示,地点组模块(600)包括一个或多个地点组(例如节点A地点组(602A)、节点N地点组(602N))。每个地点组维护关于系统上的节点的信息。该信息可以包括在系统上该节点相对于其它节点的位置(即,哪些节点与该节点直接相邻)。关于系统上的每个节点的位置的信息可以被称为NUMA拓扑。在本发明一实施例中,节点或I/O器件之间的距离指的是两个元件之间的物理距离。在本发明一实施例中,该距离可以指的是两个元件之间的节点数(又称为“跳”)。此外,在本发明一实施例中,可以关于数据从一个节点行进到另一节点所需的时间(又称为节点之间的等待时间(latency))来表示节点之间的距离。
在本发明的一个或多个实施例中,地点组模块(600)包括如下功能:对NUMA I/O框架的询问进行响应,从而对于给定的节点,地点组模块(600)返回直接连接到该节点的一个或多个节点。在本发明一实施例中,这些节点被称为优选节点。
图7示出根据本发明一实施例的负载平衡模块。如图7所示,负载平衡模块(700)包括一个或多个负载监视器(例如节点A负载监视器(702A)、节点N负载监视器(702N))。每个负载监视器(例如节点A负载监视器(702A)、节点N负载监视器(702N))维护关于对应节点利用和I/O负载容量的信息(例如CPU利用、存储器利用等)。具体地说,每个负载监视器(例如节点A负载监视器(702A)、节点N负载监视器(702N))获得指定度规(metric)的周期性测量(例如CPU利用、存储器利用等),并且使用测量来计算节点的I/O负载。在本发明一实施例中,I/O负载包括反映所测量的度规的趋势方向的指示符(例如在过去的10个周期上增大的CPU利用)。此外,在本发明一实施例中,每个负载监视器(例如节点A负载监视器(702A)、节点N负载监视器(702N))包括如下功能:随时间跟踪度规,并且检测I/O负载的模式(例如CPU利用在星期一下午2点至5点之间最大)。I/O负载还用于计算节点I/O负载容量。
图8示出根据本发明一实施例的I/O对象组。如图8所示,I/O对象组(800)包括一个或多个I/O对象(例如I/O对象A(802A)、I/O对象N(802N))和Proc对象(804)。在本发明的一个或多个实施例中,I/O对象是封装对应的I/O资源的句柄或对对应的I/O资源的引用的软件结构。每个I/O对象可以还包括与其它I/O对象的一个或多个亲和性、关于I/O对象绑定的约束、以及专用CPU标记。
在本发明的一个或多个实施例中,Proc对象(例如Proc对象(804))是将封装对I/O子系统从其接收请求的处理或应用的引用的软件结构。在本发明一实施例中,与Proc对象(804)对应的处理或应用在I/O子系统创建或初始化Proc对象(804)之前被绑定到节点。在本发明一实施例中,I/O子系统和NUMA I/O框架使用Proc对象(804)来维护关于其请求正被I/O对象组(800)中的I/O对象(例如I/O对象A(802A)、I/O对象N(802N))所服务的处理或应用的位置信息。
在本发明的一个或多个实施例中,Proc对象(804)包括用于对应处理的标识符。在本发明一实施例中,NUMA I/O框架可以重新分配或重新绑定I/O对象组(800)中的一些或所有I/O对象(例如I/O对象A(802A)、I/O对象N(802N))。一旦发生该情况,NUMAI/O框架就可以将该标识符传送到内核调度器,并且通知内核调度器还应将与Proc对象(804)对应的处理重新分配给与其它I/O对象相同的一个或多个NUMA节点。
在本发明的一个或多个实施例中,每当将I/O对象组中的I/O对象中的一个或多个重新分配或重新绑定到不同NUMA节点时,NUMAI/O框架就确定是否通知内核调度器还应重新分配与Proc对象(804)对应的处理。在本发明一实施例中,基于处理重新分配策略来进行该确定。处理重新分配策略可以例如规定:当I/O对象组中重新分配的I/O对象的数量超过阈值时,应指示内核调度器重新分配与该I/O对象组中的Proc对象对应的处理。替代地,处理重新分配策略可以规定:当在未也执行与Proc对象对应的处理的NUMA节点上执行I/O对象总负载的预定百分比时,应指示内核调度器将处理重新分配给该NUMA节点。本领域技术人员应理解,本发明不限于以上列出的处理重新分配策略。
在本发明的一个或多个实施例中,亲和性是I/O对象之间以及I/O对象(例如I/O对象A(802A)、I/O对象N(802N))与Proc对象(例如Proc对象(804))之间的关系强度(例如无关系、弱关系、强关系、消极关系等)的数量指示。两个I/O对象(I/O对象A(802A)、I/O对象N(802N))之间或I/O对象(例如I/O对象A(802A)、I/O对象N(802N))与Proc对象(例如Proc对象(804))之间的亲和性定义这两个对象可以或应绑定到的节点之间的最大或最小允许距离。在本发明的一个或多个实施例中,管理I/O对象(例如I/O对象A(802A)、I/O对象N(802N))和Proc对象(例如Proc对象(804))的I/O子系统指定亲和性。
在本发明的一个或多个实施例中,I/O子系统创建与一起工作以执行一部分I/O操作的I/O资源对应的I/O对象(例如I/O对象A(802A)、I/O对象N(802N))之间的亲和性。例如,与用于虚拟网络接口卡所接收到的业务的中断对应的I/O对象可以具有与处理同一虚拟网络接口卡上的数据的其它中断和线程对应的其它I/O对象的强亲和性。
在本发明的一个或多个实施例中,I/O子系统创建I/O对象(例如I/O对象A(802A)、I/O对象N(802N))与Proc对象(804)之间的亲和性,以指定处理与I/O对象(例如I/O对象A(802A)、I/O对象N(802N))对应的I/O资源的节点与处理与Proc对象(804)对应的处理或应用的节点之间的亲和性。例如,创建连接的I/O子系统可以指定应在与请求连接的处理相同的节点上处理用于连接的中断,并且I/O对象组中的所有其它I/O对象可以绑定到任何相邻节点。在该示例中,I/O子系统将指定Proc对象与和与中断对应的I/O对象之间的强亲和性,以及Proc对象与I/O对象组中的其它I/O对象之间的较弱亲和性。
在本发明的一个或多个实施例中,约束可以指定I/O对象或I/O对象组必须绑定到的节点或节点组。约束可以用于将I/O对象或I/O对象组限制到所批准的或适当的节点集合。约束可以用于将一个I/O对象或I/O对象组与其他的相隔离。在本发明的一个或多个实施例中,I/O子系统可以使用约束来强制分离系统上的区域或容器(container)。
在本发明的一个或多个实施例中,专用CPU标记可以指示I/O对象应绑定到具有可用于专用于I/O对象的CPU的节点。NUMA I/O框架可以将专用CPU标记解释为绝对限制,或替代地解释为优选。在本发明一实施例中,专用CPU标记可以包括指示优选强度的其它信息。
在本发明的一个或多个实施例中,I/O对象包括与和I/O对象关联的I/O资源所产生的I/O负载有关的信息。具体地说,I/O对象可以包括表示将在I/O对象绑定到的节点上施加的预期I/O负载的值。替代地,I/O对象可以包括允许NUMA I/O框架从系统上的另外地方获得与I/O对象关联的I/O负载的信息。此外,一旦I/O对象绑定到节点,就测量该节点上的I/O对象所产生的负载。在本发明的一个或多个实施例中,所测量的I/O对象的I/O负载被称为有效I/O负载或I/O对象有效负载。测量可以用于更新表示I/O对象的预期I/O负载的值。在本发明一实施例中,一旦绑定I/O对象,就周期性地进行测量,并且测量被用于更新I/O对象的有效I/O负载。
在本发明的一个或多个实施例中,I/O对象可以作为I/O对象组(800)提交给NUMA I/O框架。I/O对象组(800)可以包括应用于I/O对象组(800)内的所有I/O对象的亲和性或约束。此外,在本发明一实施例中,NUMA I/O框架可以向I/O对象组(800)内的所有I/O对象应用固有的亲和性或约束。
图9示出根据本发明的一个或多个实施例的用于将新I/O器件注册到NUMA I/O框架的流程图。在本发明的一个或多个实施例中,图9所示的一个或多个步骤可以被省略、重复和/或按与图9所示不同的顺序执行。相应地,图9所示的步骤的具体布置方式不应理解为限制本发明的范围。
在步骤910中,I/O拓扑模块检测新I/O器件附连到系统。在步骤912中,I/O拓扑模块创建新I/O器件记录。在步骤914中,I/O拓扑模块将新I/O器件信息加入到I/O器件记录。在步骤916中,I/O拓扑模块从地点组模块或从其它系统资源(例如BIOS、机器描述等)获得新I/O器件的位置信息。该信息可以包括未直接连接到I/O器件的对于I/O器件最接近的节点。在步骤918中,I/O拓扑模块使用从地点组模块所获得的位置信息来更新I/O器件记录。
图10示出根据本发明的一个或多个实施例的I/O子系统服务于请求的流程图。在本发明的一个或多个实施例中,可以省略、重复和/或按与图10所示不同的顺序执行图10所示的一个或多个步骤。相应地,图10所示的步骤的具体布置方式不应理解为限制本发明的范围。
在步骤1010中,处理将请求发送到I/O子系统,以使用I/O器件。所述请求可以是例如这样的请求:创建与网络接口卡关联的数据链路,从而处理可以穿过网络发送并且传输数据。替代地,请求可以是获取对存储器件的访问,以更改位于该器件上的数据。到来的请求的其它示例包括来自网络栈的请求(例如创建VNIC)以及来自文件系统的请求。在步骤1012中,I/O子系统确定服务于该请求所需的资源。这可以包括例如线程的具体数量和中断的具体数量。在本发明一实施例中,该确定是基于先前所服务的相似请求的需求的。在本发明一实施例中,由于分析使用信息,因此所确定的资源可以随时间而改变。
例如,创建处理与数据存储器件之间的连接的I/O子系统可以配置为创建指定数量的用于线程的I/O对象以及指定数量的用于中断的I/O对象,以用于所创建的类型的连接。I/O子系统可以进一步配置为指定线程不应在分离节点上执行,因为这样做可能导致对于连接不可接受量的缓慢性或数据丢失。为此,I/O子系统可以通过指定I/O对象之间的强亲和性来表示这点。
在步骤1014中,I/O子系统创建用于所需资源的I/O对象。在步骤1016中,I/O子系统创建与进行请求的处理对应的Proc对象。在步骤1018中,I/O子系统将I/O对象和Proc对象发送到NUMA I/O框架。在本发明一实施例中,通过援引亲和性内核API的方法调用来创建I/O对象。在步骤1020中,I/O子系统指定供NUMA I/O框架使用的I/O对象之间的亲和性。在步骤1022中,NUMA I/O框架基于策略和亲和性而将I/O对象绑定到节点。关于图10和图11详细说明步骤1020。
图11示出根据本发明的一个或多个实施例的用于确定I/O对象组总负载的流程图。在本发明的一个或多个实施例中,可以省略、重复和/或按与图11所示不同的顺序执行图11所示的一个或多个步骤。相应地,图11所示的步骤的具体布置方式不应理解为限制本发明的范围。
虽然关于图11所讨论的步骤描述为由负载平衡模块执行,但在本发明一实施例中,NUMA I/O框架可以直接执行这些步骤。在步骤1110中,负载平衡模块接收I/O对象组。在步骤1112中,NUMA I/O框架选择第一I/O对象,从而与I/O对象关联的有效I/O负载尚未加入到I/O对象组总负载(被称为未标记的I/O对象)。在步骤1114中,所选择的I/O对象的有效I/O负载加入到I/O对象组总负载。在步骤1116中,对所选择的I/O对象进行标记。在本发明一实施例中,对I/O对象进行标记,从而其有效I/O负载将不会被加入到I/O对象组总负载超过一次。
在步骤1118中,负载平衡模块确定是否任何未标记的I/O对象余留在I/O对象组中。如果至少一个未标记的I/O对象余留在I/O对象组中,则流程返回到步骤1112。如果没有未标记的I/O对象余留在I/O对象组中,则在步骤1120中,负载平衡模块将I/O对象组总负载提供给NUMA I/O框架。
图12示出根据本发明的一个或多个实施例的用于通过NUMAI/O框架绑定I/O对象的流程图。在本发明的一个或多个实施例中,可以省略、重复和/或按与图12所示不同的顺序执行图12所示的一个或多个步骤。相应地,图12所示的步骤的具体布置方式不应理解为限制本发明的范围。
在步骤1210中,NUMA I/O框架接收将I/O对象组绑定到NUMA节点集合的请求。在步骤1212中,NUMA I/O框架获得对于I/O对象组中的每个I/O对象的I/O对象亲和性以及该对象组中的Proc对象与I/O对象之间的亲和性。在本发明一实施例中,在I/O对象组中的所有I/O对象之间以及每个I/O对象与Proc对象之间假定亲和性。在步骤1214中,NUMA I/O框架确定I/O对象组约束。在本发明一实施例中,亲和性和约束嵌入在所接收到的I/O对象中。在步骤1216中,NUMA I/O框架从负载平衡模块获得I/O对象组总负载。
在步骤1218中,NUMA I/O框架利用关于I/O对象和Proc对象亲和性和约束的信息以及关于I/O对象获得的任何其它限制或指示(包括专用CPU标记的存在)来确定节点选择要求。在本发明一实施例中,节点选择要求指定绑定I/O对象组将要考虑的节点或节点集合必须满足的条件集合。这些条件可以包括距I/O器件设定距离内的节点的具体布置。在本发明一实施例中,所述条件可以包括选择节点的I/O负载容量。
在本发明一实施例中,节点选择要求可以仅被多于一个的节点所满足。例如,如果I/O对象组中的一个I/O对象具有专用CPU标记,I/O对象组中没有其他对象可被置于同一节点上,则节点选择要求将需要要求使用多于一个的节点。因此,节点选择要求可以需要I/O对象组绑定到节点或节点的组合,二者都可以被称为节点集合或节点的集合。因此,节点集合可以由单个节点或节点组合构成。
在本发明一实施例中,只要I/O对象组存在,用于I/O对象组的节点选择要求就一直存在。在本发明一实施例中,系统的节点上的I/O负载可以不同,从而NUMA I/O框架将I/O对象组重新绑定到不同的节点集合。在此情况下,I/O对象组移动到的节点集合也必须满足相同的节点选择要求。
在步骤1220中,NUMA I/O框架使用负载平衡模块来确定主优选NUMA节点集合。具体地说,NUMA I/O框架询问负载平衡模块以确定具有至少等于I/O对象组总负载的I/O负载容量的节点集合。在本发明一实施例中,NUMA I/O框架也可以询问I/O拓扑模块以确定具有必要I/O负载容量的哪个或哪些节点最接近于I/O器件。在本发明一实施例中,主优选NUMA节点集合是包括必要I/O负载容量的最接近于I/O器件的节点集合。替代地,NUMA I/O框架可以确定主优选NUMA节点集合是具有大于必要I/O负载容量的最高I/O负载容量的节点集合。在本发明一实施例中,使用这些因素的组合来确定主优选NUMA节点集合。
在步骤1222中,NUMA I/O框架确定是否存在I/O对象组中的I/O对象可以绑定到的多于一个的主优选NUMA节点集合。具体地说,NUMA I/O框架确定是否任何主优选NUMA节点集合都满足节点选择要求(即,是否可用)。
如果存在多于一个的可用主优选NUMA节点集合,则在步骤1224中,基于选择策略而选择主优选NUMA节点集合之一。在本发明一实施例中,当存在两个节点或节点集合都可以同样地满足节点选择要求时,根据选择策略选择满意的主优选NUMA节点集合之一。在本发明一实施例中,选择策略规定选择具有最高I/O负载容量的节点集合(如果存在变化)。在本发明一实施例中,选择策略规定选择最接近于I/O器件的节点集合(如果存在变化)。在本发明一实施例中,选择策略指定随机地选择一个主优选NUMA节点集合。替代地,选择策略可以独立于用于确定主优选NUMA节点集合的系统目标而促进其它系统目标。
如果没有多于一个的主优选NUMA节点集合可用,则在步骤1226中,NUMA I/O框架确定是否存在满足节点选择要求的一个主优选NUMA节点集合。如果存在一个主优选NUMA节点集合,则在步骤1228中,选择该主优选NUMA节点集合。
如果不存在主优选NUMA节点集合,则在步骤1230中,NUMAI/O框架确定次优选NUMA节点集合。具体地说,NUMA I/O框架询问负载平衡模块以获得具有至少等于I/O对象组总负载的I/O负载容量的节点集合。根据该节点列表,将主优选节点集合标记为不可用。从其余节点的列表确定次优选节点集合。
在本发明一实施例中,次优选NUMA节点集合是来自包括必要I/O负载容量的最接近I/O器件的其余节点的列表的节点集合。在本发明一实施例中,NUMA I/O框架可以询问地点组模块以确定直接连接到最接近于I/O器件的节点的一个或多个节点。替代地,NUMA I/O框架可以来自其余节点的该列表的次优选NUMA节点集合是具有大于必要I/O负载容量的最高I/O负载容量的节点集合。在本发明一实施例中,使用这些因素的组合从其余节点的列表确定次优选NUMA节点集合。在本发明一实施例中,如果没有主优选NUMA节点集合可用,则系统等待,直到初始确定的主优选NUMA节点集合之一变为可用。此外,如果没有主优选NUMA节点集合可用,则NUMA I/O框架可以将I/O对象组绑定到不满足所有节点选择要求的节点集合。例如,如果I/O对象组中的一个I/O对象包括专用CPU标记,NUMAI/O框架可以确定I/O对象组中的所有I/O对象都可以绑定到相同节点,而不管专用CPU标记的存在。
在步骤1232中,次优选NUMA节点集合提升为主优选NUMA节点集合,流程返回到步骤1222。一旦选择了主优选NUMA节点集合,则在步骤1234中,I/O对象组中的一个或多个I/O对象就绑定到所选择的主优选NUMA节点集合。
图13示出根据本发明的一个或多个实施例的通过NUMA I/O框架来绑定I/O对象的流程图。在本发明的一个或多个实施例中,可以省略、重复和/或按与图13所示不同的顺序执行图13所示的一个或多个步骤。相应地,图13所示的步骤的具体布置方式不应理解为限制本发明的范围。
在步骤1310中,NUMA I/O框架从负载平衡模块获得更新的I/O对象组总负载。更新的I/O对象组总负载可以包括例如每个I/O对象施加给其绑定到的节点上的I/O负载的较新测量以及I/O对象组总负载的重新计算。
在步骤1312中,NUMA I/O框架使用关于I/O对象和Proc对象亲和性和约束的信息以及关于I/O对象获得的任何其它限制或指示(包括专用CPU标记的存在)来确定节点选择要求。在步骤1314中,NUMA I/O框架使用节点选择要求和负载平衡模块来确定主优选NUMA节点集合。具体地说,NUMA I/O框架询问负载平衡模块以确定具有至少等于重新计算的I/O对象组总负载的I/O负载容量的节点集合。在本发明一实施例中,NUMA I/O框架也可以询问I/O拓扑模块以确定具有必要I/O负载容量的哪个或哪些节点最接近于I/O器件。
在本发明一实施例中,I/O对象组当前绑定到的节点集合加入到从负载平衡模块所获得的节点集合列表。在本发明一实施例中,在确定主优选NUMA节点集合中,考虑I/O对象组当前绑定到的节点集合,就像从节点集合的当前I/O负载减去重新计算的I/O对象组总负载。换句话说,从节点集合中的每个节点的总资源利用情况按比例减去重新计算的I/O对象组总负载。在本发明一实施例中,为了比较而忽略了重新计算的I/O对象组总负载,以防止颠簸(thrashing)。
作为示例,假设主优选NUMA节点集合被确定为具有至少等于重新计算的I/O对象组总负载的I/O负载容量的那些节点当中具有最高I/O负载容量的节点。进一步假设将I/O对象组置于该节点集合上已经导致该节点集合中的节点的资源利用与其它节点的资源利用相比相对较高。然而,在没有I/O对象组的负担的情况下,该节点集合中的节点可以具有比系统上的其它节点更高的I/O负载容量。在此情况下,I/O对象组不应从其当前绑定移动。
在本发明一实施例中,从自负载平衡模块获得的节点列表确定主优选NUMA节点集合(包括当前绑定的节点集合)。在本发明一实施例中,主优选NUMA节点集合是包括必要I/O负载容量的最接近于I/O器件的节点集合。替代地,NUMA I/O框架可以确定主优选NUMA节点集合是具有大于必要I/O负载容量的最高I/O负载容量的节点集合。在本发明一实施例中,使用这些因素的组合来确定主优选NUMA节点集合。
在步骤1316中,NUMA I/O框架确定当前绑定到I/O对象组的节点集合是否在确定为主优选NUMA节点集合的节点集合当中。如果当前绑定的节点集合在主优选NUMA节点集合当中,则系统上没有其他节点集合优于I/O对象组当前绑定到的节点集合,流程结束。
在本发明一实施例中,虽然可以存在其他主优选NUMA节点集合,但这些节点集合全都未被赋予超过当前绑定的节点集合的任何优点,因为二者都被确定为主优选NUMA节点集合。此外,先前已经确定当前绑定的节点集合满足节点选择要求。将I/O对象组重新绑定到不同的主优选NUMA节点集合将不产生超过保持当前安置的明显优点。
如果在步骤1316中,NUMA I/O框架确定当前绑定节点集合不在主优选NUMA节点集合当中,则在步骤1318中,NUMA I/O框架确定是否存在I/O对象组中的I/O对象可以绑定到的多于一个的主优选NUMA节点集合。在本发明一实施例中,当多于一个的NUMA节点集合满足节点选择要求并且每个都具有用于处理I/O对象组总负载的等同容量时,可以存在多于一个的主优选NUMA节点集合。
如果存在多于一个的可用主优选NUMA节点集合,则在步骤1320中,基于选择策略而选择主优选NUMA节点集合之一。如果不存在多于一个的主优选NUMA节点集合,则在步骤1322中,NUMAI/O框架确定是否存在一个主优选NUMA节点集合。如果存在一个主优选NUMA节点集合,则在步骤1324中,选择主优选NUMA节点集合。
如果不存在主优选NUMA节点集合,则在步骤1326中,NUMAI/O框架使用负载平衡模块来确定次优选NUMA节点集合。具体地说,NUMA I/O框架询问负载平衡模块以获得具有至少等于I/O对象组总负载的I/O负载容量的节点集合。根据该节点列表,将主优选节点集合标记为不可用。从其余节点的列表确定次优选节点集合。
在本发明一实施例中,次优选NUMA节点集合是来自包括必要I/O负载容量的最接近于I/O器件的其余节点的列表的节点集合。在本发明一实施例中,NUMA I/O框架可以询问地点组模块以确定直接连接到最接近于I/O器件的节点的一个或多个节点。替代地,NUMAI/O框架可以确定来自其余节点的列表的次优选NUMA节点集合是具有大于必要I/O负载容量的最高I/O负载容量的节点集合。在本发明一实施例中,使用这些因素的组合从其余节点的列表确定次优选NUMA节点集合。在本发明一实施例中,如果不存在可用的主优选NUMA节点集合,则系统等待,直到初始确定的主优选NUMA节点集合之一变为可用。
在步骤1328中,次优选NUMA节点集合提升到主优选NUMA节点集合,流程返回到步骤1316。一旦选择了主优选NUMA节点集合,则在步骤1330中,I/O对象组中的一个或多个I/O对象就绑定到所选择的主优选NUMA节点集合。
在步骤1332中,NUMA I/O框架确定是否通知内核调度器与Proc对象对应的处理也应绑定到所选择的主优选NUMA节点集合或系统上的另一NUMA节点。在本发明一实施例中,使用处理重新分配策略来进行该确定。
图14A、图14B和图14C示出根据本发明一实施例的示例性系统和时间线。如图14A所示,系统包括节点A(1400A)、节点B(1400B)、节点C(1400C)和节点D(1400D)。节点A(1400A)经由IC A(1402A)连接到节点B(1400B),并且经由IC B(1402B)连接到节点C(1400C)。节点B(1400B)经由IC A(1402A)连接到节点A(1400A),并且经由IC C(1402C)连接到节点D(1400D)。节点C(1400C)经由IC B(1402B)连接到节点A(1400A),并且经由IC D(1402D)连接到节点D(1400D)。节点D(1400D)经由IC C(1402C)连接到节点B(1400B),并且经由IC D(1402D)连接到节点C(1400C)。
继续讨论图14A,节点A(1400A)操作上连接到I/O器件组A(1404A),节点B(1400B)操作上连接到I/O器件组B(1404B)。此外,节点C(1400C)和节点D(1400D)都操作上连接到I/O器件(1404C)。I/O器件C(1404C)包括物理网络接口卡(NIC)(1406)。
图14B示出图14A中的元件之间的示例性交互的时间线。具体地说,图14B中的时间线描述在节点A上执行的处理,请求在处理与接收系统之间创建网络连接。为了示例的目的,假设接收系统在图14A的示例性系统外部,从而网络连接需要物理NIC。描述在同一系统上的两个处理之间建立网络连接的系统的其它实施例将不从该示例明显变化,但可以涉及虚拟NIC而不是物理NIC。为了示例的目的,进一步假设图14B中的I/O子系统(1408)是负责在用户级别和内核级别处理与附连到系统的I/O器件之间建立数据传送连接的网络栈。
在步骤1420中,节点A(1400A)上的处理将请求发送到I/O子系统(1408),以建立与网络目的地的网络连接。在步骤1422中,I/O子系统(1408)选择在建立和连接中使用的NIC(1406),并且确定打开节点A(1400A)上的处理与NIC(1406)之间的连接所需的I/O资源。为了该示例的目的,假设I/O子系统确定一个线程和一个中断是必需的I/O资源。在步骤1424中,I/O子系统(1408)创建用于该线程的I/O对象以及用于该中断的I/O对象。此外,I/O子系统(1408)创建与节点A(1400)上的请求处理对应的Proc对象。在步骤1426中,I/O子系统(1408)发送I/O对象和Proc对象作为I/O组。I/O子系统(1408)还指定I/O对象之间的亲和性,从而I/O对象应置于相同节点上,并且I/O对象应每个被放置在相同节点或与Proc对象邻近的节点上。I/O子系统(1408)然后向NUMA I/O框架(1410)通知亲和性。
在步骤1428中,NUMA I/O框架(1410)使用关于I/O对象和Proc对象亲和性和约束的信息以及关于I/O对象所获得的任何其它限制或指示来确定节点选择要求。此外,NUMA I/O框架从每个I/O对象的有效I/O负载确定I/O对象组总负载。对于该示例,NUMA I/O框架(1410)所确定的节点选择要求详述所选择的节点必须能够执行两个I/O对象,并且必须是与执行与Proc对象对应的处理的节点相同或相邻的节点。
在步骤1430中,NUMA I/O框架(1410)询问负载平衡模块(1412)以确定具有至少等于所计算的I/O对象组总负载的I/O负载容量的节点集合。为了该示例的目的,假设负载平衡模块(1412)回应指出(未示出)节点D(1200D)和节点B(1200B)具有必要的I/O负载容量。
NUMA I/O框架(1410)也可以询问I/O拓扑模块(未示出)以确定最接近于NIC(1406)的一个或多个节点。I/O拓扑模块(未示出)回应指出节点C(1400C)和节点D(1400D)直接连接到I/O器件组C(1404C)和NIC(1406)。为了示例的目的,假设NUMA I/O框架将主优选NUMA节点确定为最接近于具有必要I/O负载容量的I/O器件的节点。因此,节点D(1400D)是唯一的主优选节点。
在步骤1432中,NUMA I/O框架(1410)将节点选择要求应用于主优选节点。NUMA I/O框架(1410)确定节点D(1400D)不是与Proc对象对应的处理位于其上的节点。此外,节点D(1400D)也不邻近于与Proc对象对应的处理所位于其上的节点。因此,NUMA I/O框架(1410)确定没有主优选NUMA节点集合可用。
在步骤1434中,NUMA I/O框架(1410)询问地点组模块(1414)以确定最接近于主优选节点的一个或多个节点。地点组模块(1414)回应(未示出)通知NUMA I/O框架(1410)节点A(1400A)和节点B(1400B)直接连接到主优选节点(节点C(1400C)和节点D(1400D))。NUMA I/O框架(1410)然后确定节点A(1400A)或节点B(1400B)是否具有至少等于I/O对象组总负载的I/O负载容量。然后假设节点A(1400A)和节点B(1400B)都具有必要的I/O负载容量。因此,节点A(1400A)和节点B(1400B)是次优选节点,并且随后被提升到主优选NUMA节点集合。
继续步骤1434,NUMA I/O框架(1410)将节点选择要求应用于次优选节点。NUMA I/O框架(1410)确定节点A(1400A)和节点B(1400B)都不是与Proc对象对应的处理所位于的节点。然而,节点A(1400A)和节点B(1400B)都邻近于与Proc对象对应的处理所位于的节点。因此,确定节点A(1400A)和节点B(1400B)都满足节点选择要求。此外,假设选择策略规定选择具有最高当前I/O负载容量的节点。NUMA I/O框架(1410)将选择策略应用于主优选节点集合,并且选择节点B(1400B)。
在步骤1436中,NUMA I/O框架(1410)将I/O对象绑定到节点B(1400B),并且向内核调度器(1414)通知该绑定。在步骤1438中,内核调度器(1414)将与I/O对象关联的指令引导为在节点B(1400B)上处理。
图14C示出图14A中的元件之间的示例性交互的时间线。具体地说,图14C中的时间线描述NUMA I/O框架重新平衡图14A中所描述的系统上的I/O负载。
在步骤1460中,NUMA I/O框架(1410)询问负载平衡模块(1412)以获得I/O对象组中的每个I/O对象的当前有效I/O负载。在步骤1462中,负载平衡模块(1412)以I/O对象组中的每个I/O对象的当前有效I/O负载进行响应。在步骤1464中,NUMA I/O框架(1410)从I/O对象组中的每个I/O对象的当前有效I/O负载重新计算I/O对象组总负载。假设在给定示例中,使用图14B中的步骤所打开的连接开始以较高速率传送数据,从而I/O对象组中的每个I/O对象的有效I/O负载已经增加到两倍。因此,NUMA I/O框架(1410)必须重新计算I/O对象组总负载。假设重新计算的I/O对象组总负载被计算为值X。
在步骤1466中,NUMA I/O框架(1410)获得先前确定的节点选择要求。在步骤1468中,NUMA I/O框架(1410)询问负载平衡模块(1412)以获得具有至少等于重新计算的I/O对象组总负载X的I/O负载容量的节点的列表。为了该示例的目的,假设负载平衡模块(1412)以详述节点A(1400A)具有X+1的当前I/O负载容量,节点C(1400C)具有X+3的当前I/O负载容量,节点D(1400D)具有X+4的当前I/O负载容量的列表进行响应。NUMA I/O框架(1410)还询问负载平衡模块以获得具有2的当前I/O负载容量的节点B(1400B)的当前I/O负载容量。NUMA I/O框架(1410)将节点B(1400B)的I/O负载容量计算为当前I/O负载容量减去当前I/O对象组总负载X。NUMA I/O框架(1410)然后将节点B(1400B)加入具有必需I/O负载容量的节点的列表,并且将节点B(1400B)的当前I/O负载容量指定为X+2。
在步骤1470中,NUMA I/O框架(1410)询问I/O拓扑模块(1416)以确定最接近于NIC(1406)的一个或多个节点。在步骤1472中,I/O拓扑模块(1416)响应指出节点C(1400C)和节点D(1400D)直接连接到I/O器件组C(1404C)和NIC(1406)。
为了示例的目的,假设NUMA I/O框架将主优选NUMA节点确定为与具有必要I/O负载容量的I/O器件最接近的节点。在进行确定时,因此,因为并无其它节点具有X+4的I/O负载容量,所以仅节点D(1400D)是主优选节点。
在步骤1474中,NUMA I/O框架(1410)确定I/O对象组绑定到的当前节点(节点B(1400B))不在主优选NUMA节点当中。NUMAI/O框架(1410)然后将节点选择要求应用于主优选节点。NUMA I/O框架(1410)确定因为对I/O对象组的约束,所以可以不选择节点D(1400D)。因此,NUMA I/O框架(1410)确定没有主优选NUMA节点集合可用。
在步骤1476中,NUMA I/O框架(1410)确定次优选NUMA节点集合。为了示例的目的,假设从具有第二最高I/O负载容量的最接近于I/O器件的节点确定次优选NUMA节点集合。替代地,可以从最接近于I/O器件的节点确定次优选NUMA节点集合,而不管是大于必要I/O负载容量的任何I/O负载容量。
在步骤1478中,NUMA I/O框架(1410)询问I/O拓扑模块(1416)以获得最接近于I/O器件的节点的列表,从该列表移除节点D(1400D)。在步骤1480中,I/O拓扑模块(1416)响应指出节点C(1400C)直接连接到I/O器件组C(1404C)和NIC(1406)。节点C(1400C)因此被确定为次优选NUMA节点集合,并且提升到主优选节点集合。替代地,如果I/O拓扑模块(1416)以已经摒除的节点的列表进行响应,则NUMA I/O框架将询问地点组模块以确定最接近于所摒除的节点的节点集合。
在步骤1482中,NUMA I/O框架(1410)确定I/O对象组绑定到的当前节点(节点B(1400B))不在主优选NUMA节点当中。在步骤1484中,NUMA I/O框架(1410)将节点选择要求应用于主优选节点集合。在步骤1486中,NUMA I/O框架(1410)确定一个主优选节点集合(节点C(1400C))可用。在步骤1488中,NUMA I/O框架(1410)将I/O对象绑定到节点C(1400C),并且向内核调度器(1414)通知该绑定。在步骤1490中,NUMA I/O框架(1410)确定还应重新分配与Proc对象对应的处理,并且通知内核调度器(1414)。为了示例的目的,假设确定是根据如下规定的处理重新分配策略的:如果已经将I/O对象组中的多数I/O对象重新分配到并非处理当前正在其上执行的NUMA节点的NUMA节点,则处理应被移动。在步骤1492中,内核调度器(1414)将与I/O对象关联的指令引导为在节点C(1400C)上处理。
可以在实现NUMA架构(1500)(或等同物)的基本上任何类型的计算机上实现本发明的实施例。例如,包括两个或更多处理器(1502)、关联的存储器(1504)、储存器件(1506)、两个或更多I/O器件(未示出)以及如今的计算机典型的许多其它元件和功能的联网计算机系统。联网的计算机也可以包括输入装置(例如键盘(1508)和鼠标(1510))以及输出装置(例如监视器(1512))。联网的计算机系统经由网络接口连接而连接到局域网(LAN)或广域网。本领域技术人员应理解,这些输入和输出装置可以采取其它形式。此外,本领域技术人员应理解,上述计算机的一个或多个元件可以位于远程处并且通过网络连接到其它元件。此外,用于执行本发明实施例的软件指令可以存储在非瞬时计算机可读存储介质上,诸如压缩盘(CD)、磁盘、带、物理盘或任何其它非瞬时计算机可读存储介质。
虽然已经关于有限数量的实施例描述了本发明,但受益于本公开的本领域技术人员应理解,可以设计出不脱离在此所公开的本发明的范围的其它实施例。相应地,本发明的范围应仅由所附权利要求限定。
Claims (20)
1.一种包括软件指令的非暂时性计算机可读介质,所述软件指令在由处理器执行时执行一方法,该方法包括:
I/O(输入输出)子系统从处理接收使用I/O器件的请求;
所述I/O子系统确定服务于所述请求的资源;
所述I/O子系统生成与所述资源对应的第一I/O对象,其中所述第一I/O对象未被绑定;
所述I/O子系统生成proc对象,其中所述proc对象包括对请求使用所述I/O器件的处理的引用;
所述I/O子系统将所述第一I/O对象和所述proc对象发送到非一致存储器访问(NUMA)I/O框架;
所述NUMA I/O框架使用所述proc对象确定所述处理正在多个NUMA节点中的第一NUMA节点上执行;
所述NUMA I/O框架基于确定所述处理正在所述第一NUMA节点上执行而选择所述第一NUMA节点;
所述NUMA I/O框架基于所述选择而将所述第一I/O对象绑定到所述第一NUMA节点;以及
通过在所述第一NUMA节点上处理与所述第一I/O对象对应的资源来服务于所述请求。
2.如权利要求1所述的非暂时性计算机可读介质,其中,基于所述确定而选择所述第一NUMA节点包括:
所述NUMA I/O框架从所述第一I/O对象获得I/O对象有效负载;
所述NUMA I/O框架获得所述多个NUMA节点中的所述第一NUMA节点的I/O负载容量;以及
所述NUMA I/O框架确定所述I/O负载容量大于所述I/O对象有效负载。
3.如权利要求1所述的非暂时性计算机可读介质,其中,将所述第一I/O对象和所述proc对象发送到所述NUMA I/O框架包括:
指示所述第一I/O对象与所述proc对象之间的亲和性。
4.如权利要求3所述的非暂时性计算机可读介质,其中,所述方法还包括:
所述NUMA I/O框架基于确定所述第一NUMA节点与所述多个NUMA节点中的第二NUMA节点之间的关系满足所述亲和性而选择所述第二NUMA节点;
所述NUMA I/O框架基于选择所述第二NUMA节点而将所述第一I/O对象绑定到所述第二NUMA节点;
通过在所述第二NUMA节点上处理与所述第一I/O对象对应的资源来服务于所述请求。
5.如权利要求4所述的非暂时性计算机可读介质,其中,选择所述第二NUMA节点包括:
所述NUMA I/O框架从所述第一I/O对象获得I/O对象有效负载;
所述NUMA I/O框架获得所述第二NUMA节点的I/O负载容量;以及
所述NUMA I/O框架确定所述I/O负载容量大于所述I/O对象有效负载。
6.如权利要求1所述的非暂时性计算机可读介质,其中,所述proc对象和所述第一I/O对象在I/O对象组中。
7.如权利要求6所述的非暂时性计算机可读介质,其中,所述I/O对象组包括包含第二I/O对象与所述proc对象之间的亲和性的所述第二I/O对象。
8.一种系统,包括:
多个非一致存储器访问(NUMA)节点,包括:
第一NUMA节点,包括第一处理器和第一存储器;
输入/输出(I/O)器件组,包括I/O器件;
I/O子系统,在所述多个NUMA节点中的至少一个上执行,所述I/O子系统被配置为:
从在所述第一NUMA节点上执行的处理接收使用所述I/O器件的请求;
生成包括对请求使用所述I/O器件的所述处理的引用的proc对象;
确定服务于所述请求所需的第一资源;以及
生成与所述第一资源对应的第一I/O对象,其中所述第一I/O对象未被绑定;以及
NUMA I/O框架,在所述多个NUMA节点中的至少一个上执行,被配置为:
从所述I/O子系统接收所述第一I/O对象;
从所述I/O子系统接收所述proc对象;
使用所述proc对象来确定所述处理正在所述第一NUMA节点上执行;
基于确定所述处理正在所述第一NUMA节点上执行而选择所述第一NUMA节点;以及
将所述第一I/O对象绑定到所述第一NUMA节点,
其中,通过在所述第一NUMA节点上处理与所述第一I/O对象对应的所述第一资源来服务于所述请求。
9.如权利要求8所述的系统,其中,所述I/O子系统还被配置为:
将所述第一I/O对象与所述proc对象之间的亲和性发送到所述NUMA I/O框架。
10.如权利要求9所述的系统,
其中,所述多个NUMA节点还包括:
第二NUMA节点,包括第二处理器和第二存储器;且
其中,所述NUMA I/O框架还被配置为:
接收所述亲和性;
基于确定所述第一NUMA节点与所述第二NUMA节点之间的关系满足所述亲和性而选择所述第二NUMA节点;以及
基于选择所述第二NUMA节点而将所述第一I/O对象绑定到所述第二NUMA节点。
11.如权利要求8所述的系统,
其中,所述多个NUMA节点还包括:
第二NUMA节点,包括第二处理器和第二存储器;
其中,所述I/O子系统还被配置为:
确定服务于所述请求所需的第二资源;
生成与所述第二资源对应的第二I/O对象,其中所述第二I/O对象未被绑定;以及
将所述第二I/O对象与所述proc对象之间的亲和性发送到所述NUMA I/O框架;且
其中,所述NUMA I/O框架还被配置为:
从所述I/O子系统接收所述第二I/O对象;
从所述I/O子系统接收所述亲和性;
基于确定所述第一NUMA节点与所述第二NUMA节点之间的关系满足所述亲和性而选择所述第二NUMA节点;以及
基于选择所述第二NUMA节点而将所述第二I/O对象绑定到所述第二NUMA节点。
12.如权利要求11所述的系统,其中,所述亲和性指示所述第一NUMA节点与所述第二NUMA节点之间的优选关系。
13.如权利要求8所述的系统,其中,基于所述确定而选择所述第一NUMA节点包括:
从所述第一I/O对象获得I/O对象有效负载;
获得所述第一NUMA节点的I/O负载容量;以及
所述NUMA I/O框架确定所述I/O负载容量大于所述I/O对象有效负载。
14.如权利要求8所述的系统,其中,所述proc对象和所述第一I/O对象在I/O对象组中。
15.一种将输入/输出(I/O)对象绑定到节点的方法,所述方法包括:
网络栈从处理接收创建到I/O器件的连接的请求;
所述网络栈确定用于服务于所述请求的线程;
所述网络栈生成与所述线程对应的第一I/O对象,其中所述第一I/O对象未被绑定;
所述网络栈生成proc对象,其中所述proc对象包括对发送创建所述连接的所述请求的所述处理的引用;
所述网络栈将所述第一I/O对象和所述proc对象发送到非一致存储器访问(NUMA)I/O框架;
所述NUMA I/O框架使用所述proc对象来确定所述处理正在多个NUMA节点中的第一NUMA节点上执行;
所述NUMA I/O框架基于确定所述处理正在所述第一NUMA节点上执行而选择所述第一NUMA节点;
所述NUMA I/O框架基于所述选择而将所述第一I/O对象绑定到所述第一NUMA节点;以及
通过在所述第一NUMA节点上执行与所述第一I/O对象对应的所述线程来服务于所述连接。
16.如权利要求15所述的方法,其中,基于所述确定而选择所述第一NUMA节点包括:
所述NUMA I/O框架从所述第一I/O对象获得I/O对象有效负载;
所述NUMA I/O框架获得所述第一NUMA节点的I/O负载容量;以及
所述NUMA I/O框架确定所述I/O负载容量大于所述I/O对象有效负载。
17.如权利要求15所述的方法,其中,将所述第一I/O对象和所述proc对象发送到所述NUMA I/O框架包括:
指示所述第一I/O对象与所述proc对象之间的亲和性。
18.如权利要求15所述的方法,还包括:
所述NUMA I/O框架确定所述第一NUMA节点不可用;
所述NUMA I/O框架基于确定所述第一NUMA节点与所述多个NUMA节点中的第二NUMA节点之间的关系满足所述亲和性而选择所述第二NUMA节点;
所述NUMA I/O框架基于所述选择而将所述第一I/O对象绑定到所述第二NUMA节点;以及
通过在所述第二NUMA节点上执行与所述第一I/O对象对应的所述线程来服务于所述连接。
19.如权利要求18所述的方法,其中,确定所述第一NUMA节点不可用包括:
所述NUMA I/O框架从所述第一I/O对象获得I/O对象有效负载;
所述NUMA I/O框架获得所述第一NUMA节点的I/O负载容量;以及
所述NUMA I/O框架确定所述I/O对象有效负载大于所述I/O负载容量。
20.如权利要求15所述的方法,其中,所述第一I/O对象和所述proc对象在I/O对象组中,其中所述I/O对象组包括第二I/O对象以及所述第二I/O对象与所述proc对象之间的第二亲和性。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38412010P | 2010-09-17 | 2010-09-17 | |
US61/384,120 | 2010-09-17 | ||
US13/076,735 US8996756B2 (en) | 2010-09-17 | 2011-03-31 | Using process location to bind IO resources on NUMA architectures |
US13/076,735 | 2011-03-31 | ||
PCT/US2011/050748 WO2012036961A1 (en) | 2010-09-17 | 2011-09-08 | Using process location to bind io resources on numa architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103189844A true CN103189844A (zh) | 2013-07-03 |
CN103189844B CN103189844B (zh) | 2016-11-09 |
Family
ID=44645228
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180052399.2A Active CN103201722B (zh) | 2010-09-17 | 2011-08-31 | 将输入/输出对象绑定到节点的系统和方法 |
CN201180052415.8A Active CN103189845B (zh) | 2010-09-17 | 2011-09-08 | 非一致存储器访问平台上的io资源的动态平衡 |
CN201180052413.9A Active CN103189844B (zh) | 2010-09-17 | 2011-09-08 | 在非一致存储器访问架构上使用处理位置来绑定io资源 |
CN201180052400.1A Active CN103210374B (zh) | 2010-09-17 | 2011-09-08 | 基于实际负载和资源可用性的io资源动态创建和销毁 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180052399.2A Active CN103201722B (zh) | 2010-09-17 | 2011-08-31 | 将输入/输出对象绑定到节点的系统和方法 |
CN201180052415.8A Active CN103189845B (zh) | 2010-09-17 | 2011-09-08 | 非一致存储器访问平台上的io资源的动态平衡 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180052400.1A Active CN103210374B (zh) | 2010-09-17 | 2011-09-08 | 基于实际负载和资源可用性的io资源动态创建和销毁 |
Country Status (4)
Country | Link |
---|---|
US (4) | US8996756B2 (zh) |
EP (4) | EP2616934B1 (zh) |
CN (4) | CN103201722B (zh) |
WO (4) | WO2012036898A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109076029A (zh) * | 2016-03-31 | 2018-12-21 | 英特尔公司 | 用于网络i/o访问的技术 |
CN109918027A (zh) * | 2019-05-16 | 2019-06-21 | 上海燧原科技有限公司 | 存储访问控制方法、装置、设备及存储介质 |
CN114780463A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 中断控制方法、设备、分布式系统及存储介质 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8522251B2 (en) * | 2011-01-10 | 2013-08-27 | International Business Machines Corporation | Organizing task placement based on workload characterizations |
US9172766B2 (en) * | 2011-01-10 | 2015-10-27 | Fiberlink Communications Corporation | System and method for extending cloud services into the customer premise |
US8793459B2 (en) * | 2011-10-31 | 2014-07-29 | International Business Machines Corporation | Implementing feedback directed NUMA mitigation tuning |
US9047417B2 (en) * | 2012-10-29 | 2015-06-02 | Intel Corporation | NUMA aware network interface |
US10048871B2 (en) * | 2013-02-20 | 2018-08-14 | Red Hat, Inc. | Assigning pre-existing processes to select sets of non-uniform memory access (NUMA) aligned resources |
US10684973B2 (en) | 2013-08-30 | 2020-06-16 | Intel Corporation | NUMA node peripheral switch |
US9274835B2 (en) | 2014-01-06 | 2016-03-01 | International Business Machines Corporation | Data shuffling in a non-uniform memory access device |
US9256534B2 (en) | 2014-01-06 | 2016-02-09 | International Business Machines Corporation | Data shuffling in a non-uniform memory access device |
US10255091B2 (en) * | 2014-09-21 | 2019-04-09 | Vmware, Inc. | Adaptive CPU NUMA scheduling |
WO2016118162A1 (en) * | 2015-01-23 | 2016-07-28 | Hewlett Packard Enterprise Development Lp | Non-uniform memory access aware monitoring |
US11275721B2 (en) * | 2015-07-17 | 2022-03-15 | Sap Se | Adaptive table placement in NUMA architectures |
KR20170094911A (ko) * | 2016-02-12 | 2017-08-22 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
CN109254933A (zh) * | 2018-09-25 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种io请求的处理方法、系统及相关组件 |
WO2020091836A1 (en) * | 2018-10-31 | 2020-05-07 | Middle Chart, LLC | System for conducting a service call with orienteering |
US11003585B2 (en) * | 2019-03-07 | 2021-05-11 | International Business Machines Corporation | Determining affinity domain information based on virtual memory address |
US11144226B2 (en) * | 2019-04-11 | 2021-10-12 | Samsung Electronics Co., Ltd. | Intelligent path selection and load balancing |
US11216190B2 (en) | 2019-06-10 | 2022-01-04 | Samsung Electronics Co., Ltd. | Systems and methods for I/O transmissions in queue pair-based NVMeoF initiator-target system |
US11240294B2 (en) | 2019-08-23 | 2022-02-01 | Samsung Electronics Co., Ltd. | Systems and methods for spike detection and load balancing resource management |
KR20210127565A (ko) * | 2020-04-14 | 2021-10-22 | 삼성전자주식회사 | 가상 머신에 자원을 할당하는 방법 및 장치 |
WO2022056798A1 (en) * | 2020-09-18 | 2022-03-24 | Intel Corporation | Improving remote traffic performance on cluster-aware processors |
CN116820687B (zh) * | 2023-08-29 | 2023-12-05 | 银河麒麟软件(长沙)有限公司 | 基于kubelet的NUMA架构资源分配方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080092138A1 (en) * | 2003-03-31 | 2008-04-17 | International Business Machines Corporation | Resource allocation in a numa architecture based on separate application specified resource and strength preferences for processor and memory resources |
US20080216087A1 (en) * | 2006-08-15 | 2008-09-04 | International Business Machines Corporation | Affinity dispatching load balancer with precise cpu consumption data |
US20090187915A1 (en) * | 2008-01-17 | 2009-07-23 | Sun Microsystems, Inc. | Scheduling threads on processors |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6813769B1 (en) | 1997-10-28 | 2004-11-02 | Microsoft Corporation | Server application components with control over state duration |
US6026425A (en) * | 1996-07-30 | 2000-02-15 | Nippon Telegraph And Telephone Corporation | Non-uniform system load balance method and apparatus for updating threshold of tasks according to estimated load fluctuation |
US6434656B1 (en) | 1998-05-08 | 2002-08-13 | International Business Machines Corporation | Method for routing I/O data in a multiprocessor system having a non-uniform memory access architecture |
WO2000019326A1 (fr) | 1998-09-29 | 2000-04-06 | Fujitsu Limited | Procede et dispositif de traitement de demandes d'acces |
US6769017B1 (en) * | 2000-03-13 | 2004-07-27 | Hewlett-Packard Development Company, L.P. | Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems |
US7159036B2 (en) | 2001-12-10 | 2007-01-02 | Mcafee, Inc. | Updating data from a source computer to groups of destination computers |
US7761873B2 (en) | 2002-12-03 | 2010-07-20 | Oracle America, Inc. | User-space resource management |
US7296269B2 (en) | 2003-04-22 | 2007-11-13 | Lucent Technologies Inc. | Balancing loads among computing nodes where no task distributor servers all nodes and at least one node is served by two or more task distributors |
US20050091383A1 (en) | 2003-10-14 | 2005-04-28 | International Business Machines Corporation | Efficient zero copy transfer of messages between nodes in a data processing system |
ATE386978T1 (de) | 2004-02-10 | 2008-03-15 | Sap Ag | Verfahren zur neuverteilung von objekten an recheneinheiten |
US7343379B2 (en) | 2004-05-21 | 2008-03-11 | Bea Systems, Inc. | System and method for controls |
US8135731B2 (en) | 2004-12-02 | 2012-03-13 | International Business Machines Corporation | Administration of search results |
US7302533B2 (en) | 2005-03-11 | 2007-11-27 | International Business Machines Corporation | System and method for optimally configuring software systems for a NUMA platform |
CN100356325C (zh) * | 2005-03-30 | 2007-12-19 | 中国人民解放军国防科学技术大学 | 大规模并行计算机系统分组并行启动方法 |
US8037465B2 (en) * | 2005-09-30 | 2011-10-11 | Intel Corporation | Thread-data affinity optimization using compiler |
US7793301B2 (en) | 2005-11-18 | 2010-09-07 | Samsung Electronics Co., Ltd. | Method and system for providing efficient object-based network management |
US7755778B2 (en) * | 2006-03-30 | 2010-07-13 | Xerox Corporation | Print job management system |
US8255577B2 (en) | 2007-04-26 | 2012-08-28 | Hewlett-Packard Development Company, L.P. | I/O forwarding technique for multi-interrupt capable devices |
US8225325B2 (en) | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8286198B2 (en) | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
JP4772854B2 (ja) | 2008-12-02 | 2011-09-14 | 株式会社日立製作所 | 計算機システムの構成管理方法、計算機システム及び構成管理プログラム |
US8438284B2 (en) | 2009-11-30 | 2013-05-07 | Red Hat, Inc. | Network buffer allocations based on consumption patterns |
US8346821B2 (en) | 2010-05-07 | 2013-01-01 | International Business Machines Corporation | Orphan object tracking for objects having acquire-release semantics |
-
2011
- 2011-03-31 US US13/076,735 patent/US8996756B2/en active Active
- 2011-03-31 US US13/076,720 patent/US8782657B2/en active Active
- 2011-03-31 US US13/076,746 patent/US8725912B2/en active Active
- 2011-03-31 US US13/076,715 patent/US8725913B2/en active Active
- 2011-08-31 EP EP11755204.2A patent/EP2616934B1/en active Active
- 2011-08-31 CN CN201180052399.2A patent/CN103201722B/zh active Active
- 2011-08-31 WO PCT/US2011/049852 patent/WO2012036898A1/en active Application Filing
- 2011-09-08 CN CN201180052415.8A patent/CN103189845B/zh active Active
- 2011-09-08 WO PCT/US2011/050746 patent/WO2012036959A1/en active Application Filing
- 2011-09-08 WO PCT/US2011/050748 patent/WO2012036961A1/en active Application Filing
- 2011-09-08 EP EP11758624.8A patent/EP2616935B1/en active Active
- 2011-09-08 WO PCT/US2011/050747 patent/WO2012036960A1/en active Application Filing
- 2011-09-08 CN CN201180052413.9A patent/CN103189844B/zh active Active
- 2011-09-08 EP EP11758626.3A patent/EP2616937B1/en active Active
- 2011-09-08 EP EP11758625.5A patent/EP2616936B1/en active Active
- 2011-09-08 CN CN201180052400.1A patent/CN103210374B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080092138A1 (en) * | 2003-03-31 | 2008-04-17 | International Business Machines Corporation | Resource allocation in a numa architecture based on separate application specified resource and strength preferences for processor and memory resources |
US20080216087A1 (en) * | 2006-08-15 | 2008-09-04 | International Business Machines Corporation | Affinity dispatching load balancer with precise cpu consumption data |
US20090187915A1 (en) * | 2008-01-17 | 2009-07-23 | Sun Microsystems, Inc. | Scheduling threads on processors |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109076029A (zh) * | 2016-03-31 | 2018-12-21 | 英特尔公司 | 用于网络i/o访问的技术 |
CN109918027A (zh) * | 2019-05-16 | 2019-06-21 | 上海燧原科技有限公司 | 存储访问控制方法、装置、设备及存储介质 |
CN109918027B (zh) * | 2019-05-16 | 2019-08-09 | 上海燧原科技有限公司 | 存储访问控制方法、装置、设备及存储介质 |
CN114780463A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 中断控制方法、设备、分布式系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2616936B1 (en) | 2016-05-04 |
CN103201722B (zh) | 2017-03-01 |
US20120072627A1 (en) | 2012-03-22 |
EP2616934B1 (en) | 2017-01-04 |
EP2616935B1 (en) | 2016-07-20 |
EP2616937A1 (en) | 2013-07-24 |
CN103210374B (zh) | 2016-08-10 |
EP2616936A1 (en) | 2013-07-24 |
CN103189845A (zh) | 2013-07-03 |
CN103201722A (zh) | 2013-07-10 |
US20120072621A1 (en) | 2012-03-22 |
WO2012036959A1 (en) | 2012-03-22 |
US20120072622A1 (en) | 2012-03-22 |
US8725912B2 (en) | 2014-05-13 |
US20120072624A1 (en) | 2012-03-22 |
WO2012036961A1 (en) | 2012-03-22 |
US8725913B2 (en) | 2014-05-13 |
CN103210374A (zh) | 2013-07-17 |
EP2616934A1 (en) | 2013-07-24 |
EP2616937B1 (en) | 2016-04-27 |
EP2616935A1 (en) | 2013-07-24 |
US8782657B2 (en) | 2014-07-15 |
CN103189844B (zh) | 2016-11-09 |
WO2012036960A1 (en) | 2012-03-22 |
US8996756B2 (en) | 2015-03-31 |
CN103189845B (zh) | 2016-07-06 |
WO2012036898A1 (en) | 2012-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103189844A (zh) | 在非一致存储器访问架构上使用处理位置来绑定io资源 | |
CN100533387C (zh) | 执行作业步的系统和方法 | |
US8291430B2 (en) | Optimizing system performance using spare cores in a virtualized environment | |
US8448006B2 (en) | Performing virtual and/or physical resource management for power management | |
EP2430538B1 (en) | Allocating computing system power levels responsive to service level agreements | |
CN101601014B (zh) | 利用存储负载信息来平衡集群虚拟机的方法和系统 | |
US8484495B2 (en) | Power management in a multi-processor computer system | |
CN100570534C (zh) | 多处理器的电源管理 | |
US20090300614A1 (en) | Virtual-machine control system and virtual-machine moving method | |
EP2065804A1 (en) | Virtual machine monitor and multi-processor system | |
TW201214284A (en) | Virtualization and dynamic resource allocation aware storage level reordering | |
US20130167152A1 (en) | Multi-core-based computing apparatus having hierarchical scheduler and hierarchical scheduling method | |
WO2008142137A1 (en) | Defragmenting blocks in a clustered or distributed computing system | |
CN102521154A (zh) | 用于创建低功率区域的动态存储器分配和重新定位 | |
CN100382034C (zh) | 信息处理设备和处理控制方法 | |
WO2012082349A2 (en) | Workload scheduling based on a platform energy policy | |
CN118034917A (zh) | 一种PCIe资源分配方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |