CN103210374B - 基于实际负载和资源可用性的io资源动态创建和销毁 - Google Patents
基于实际负载和资源可用性的io资源动态创建和销毁 Download PDFInfo
- Publication number
- CN103210374B CN103210374B CN201180052400.1A CN201180052400A CN103210374B CN 103210374 B CN103210374 B CN 103210374B CN 201180052400 A CN201180052400 A CN 201180052400A CN 103210374 B CN103210374 B CN 103210374B
- Authority
- CN
- China
- Prior art keywords
- object group
- group
- node
- numa
- size
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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对象组绑定到系统上的多个NUMA节点中的NUMA节点;获得所述I/O对象组的I/O对象组大小;以及基于所述I/O对象组的I/O对象组总负载来确定I/O对象组目标大小。所述方法还包括:所述NUMA I/O框架对所述I/O对象组目标大小和所述I/O对象组总负载进行比较;所述NUMA I/O框架确定所述I/O对象组目标大小与所述I/O对象组总负载之间的差超过阈值;所述NUMA I/O框架指令与所述I/O对象组关联的I/O子系统改变所述I/O对象组大小,其中所述I/O子系统响应于所述指令而改变所述I/O对象组大小。
Description
背景技术
一些现代计算系统架构利用物理上和概念上分离的节点来改变计算硬件的速度。在这些架构中,输入/输出器件可以位于计算机上的各种物理位置中。分离节点上的不同应用和处理可以使用每个输入/输出器件。在这些架构上执行的内核元件可以负责促进输入/输出器件与物理上远离该器件的应用之间的通信。
发明内容
大体上,在一方面,本发明涉及一种非暂时性计算机可读介质,其包括软件指令,该软件指令在由处理器运行时执行一种方法。所述方法包括:非一致存储器访问(NUMA)输入/输出(I/O)框架将I/O对象组绑定到系统上的多个NUMA节点中的NUMA节点;获得所述I/O对象组的I/O对象组大小;以及基于所述I/O对象组的I/O对象组总负载来确定I/O对象组目标大小。所述方法还包括:所述NUMA I/O框架对所述I/O对象组目标大小和所述I/O对象组总负载进行比较;所述NUMA I/O框架确定所述I/O对象组目标大小与所述I/O对象组总负载之间的差超过阈值;以及所述NUMA I/O框架指令与所述I/O对象组相关联的I/O子系统改变所述I/O对象组大小,其中,所述I/O子系统响应于所述指令而改变所述I/O对象组大小。
大体上,在一方面,本发明涉及一种包括多个非一致存储器访问(NUMA)节点的系统。所述多个NUMA节点每个包括处理器和存储器。所述系统还包括在所述多个NUMA节点中的至少一个上执行的NUMA I/O框架,其被配置为:将I/O对象组绑定到所述NUMA节点;获得所述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对象组大小。所述系统还包括在所述多个NUMA节点中的至少一个上执行的I/O子系统,其被配置为:接收所述I/O对象组目标大小;接收改变所述I/O对象组大小的指令;以及使用所述I/O对象组目标大小来改变所述I/O对象组大小,其中,在所述改变之后,所述I/O对象组大小等于所述I/O对象组目标大小。
大体上,在一方面,本发明涉及一种用于将输入/输出(I/O)对象绑定到节点的方法。所述方法包括:非一致存储器访问(NUMA)输入/输出(I/O)框架将I/O对象组绑定到系统上的多个NUMA节点中的NUMA节点,其中所述I/O对象组包括与线程对应的第一I/O对象以及与中断对应的第二I/O对象;获得所述I/O对象组的I/O对象组大小;基于所述第一I/O对象的第一I/O对象有效负载以及所述第二I/O对象的第二I/O对象有效负载来确定I/O对象组目标大小;所述NUMA I/O框架对所述I/O对象组目标大小与所述I/O对象组大小进行比较;所述NUMA I/O框架确定所述I/O对象组目标大小与所述I/O对象组大小之间的差超过阈值;以及所述NUMA I/O框架指令与所述I/O对象组关联的网络媒体访问连接(MAC)层改变所述I/O对象组大小,其中所述网络MAC层响应于所述指令而改变所述I/O对象组大小。
附图说明
图1示出根据本发明的一个或多个实施例的系统。
图2示出根据本发明的一个或多个实施例的NUMA节点。
图3示出根据本发明的一个或多个实施例的I/O器件组。
图4示出根据本发明的一个或多个实施例的系统。
图5示出根据本发明的一个或多个实施例的I/O拓扑模块。
图6示出根据本发明的一个或多个实施例的地点组模块。
图7示出根据本发明的一个或多个实施例的负载平衡模块。
图8示出根据本发明的一个或多个实施例的I/O对象组。
图9示出根据本发明的一个或多个实施例的流程图。
图10示出根据本发明的一个或多个实施例的流程图。
图11示出根据本发明的一个或多个实施例的流程图。
图12示出根据本发明的一个或多个实施例的流程图。
图13示出根据本发明的一个或多个实施例的流程图。
图14A示出根据本发明的一个或多个实施例的示例性系统。
图14B示出根据本发明的一个或多个实施例的示例性时间线。
图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)。在本发明一实施例中,多个I/O对象可以引用单个资源或者资源的集合,反之,单个I/O资源或I/O资源的集合可以对应于多个I/O对象。
在本发明一实施例中,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))。在本发明的一个或多个实施例中,I/O对象是封装对应的I/O资源的句柄或对对应的I/O资源的引用的软件结构。每个I/O对象可以还包括与其它I/O对象的一个或多个亲和性、关于I/O对象绑定的约束、以及专用CPU标记。
在本发明的一个或多个实施例中,亲和性是I/O对象之间的关系强度的数量指示(例如无关系、弱关系、强关系、负关系等)。两个I/O对象(I/O对象A(802A)、I/O对象N(802N))之间的亲和性定义I/O对象可以或应绑定到的节点之间的最大或最小允许距离。在本发明的一个或多个实施例中,由管理I/O对象的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对象或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对象应用固有的亲和性或约束。
在本发明的一个或多个实施例中,I/O对象组(800)中的多个I/O对象涉及同一I/O资源或I/O资源集合。在本发明一实施例中,使用与单个I/O资源或I/O资源集合相关联的多个I/O对象允许I/O对象组(800)包含多个I/O资源集合或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子系统将I/O对象发送到NUMA I/O框架。在本发明一实施例中,通过援引亲和性内核API的方法调用来创建I/O对象。在步骤1018中,I/O子系统指定供NUMA I/O框架使用的I/O对象之间的亲和性。在步骤1020中,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对象亲和性。在本发明一实施例中,假定在I/O对象组中的所有I/O对象之间的亲和性。在步骤1214中,NUMAI/O框架确定I/O对象组约束。在本发明一实施例中,亲和性和约束嵌入在所接收到的I/O对象中。在步骤1216中,NUMA I/O框架从负载平衡模块获得I/O对象组总负载。
在步骤1218中,NUMA I/O框架利用关于I/O对象亲和性和约束的信息以及关于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示出根据本发明的一个或多个实施例的用于调整I/O对象组的大小的流程图。在本发明的一个或多个实施例中,可以省略、重复和/或按与图13所示不同的顺序执行图13所示的一个或多个步骤。相应地,图13所示的步骤的具体布置方式不应理解为限制本发明的范围。
在步骤1310中,NUMA I/O框架从负载平衡模块获得更新的I/O对象组总负载。更新的I/O对象组总负载可以包括例如每个I/O对象施加给其绑定到的节点上的I/O负载的较新测量以及I/O对象组总负载的重新计算。NUMA I/O框架还确定I/O对象组大小(即,I/O对象组中I/O对象的数量)。
在步骤1312中,NUMA I/O框架使用关于I/O对象亲和性和约束的信息以及关于I/O对象所获得的任何其它限制或指示(包括专用CPU标记的存在)来确定节点选择要求。在步骤1314中,NUMA I/O框架询问负载平衡模块以获得系统上每个节点的更新后的系统I/O负载测量。在本发明一实施例中,该更新后的I/O负载测量包括系统上每个节点的I/O负载容量和资源利用情况。
在步骤1316中,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对象组的优先级。在本发明的一个或多个实施例中,关于与I/O对象组关联的资源的数量而不是I/O对象组内的I/O对象的数量来计算I/O对象组目标大小。
在步骤1318中,NUMA I/O框架对当前I/O对象组大小与I/O对象目标大小进行比较。在步骤1320中,NUMA I/O框架确定当前I/O对象组大小与I/O对象目标大小之间的差是否超过阈值。在本发明一实施例中,阈值是I/O对象组大小与I/O对象目标大小之间的最大容忍差的量化。在本发明一实施例中,可以设置阈值以避免以低效的速率改变I/O对象组的大小(即,太频繁而不必要地浪费资源)。在本发明一实施例中,可以取决于I/O对象组的属性(例如关联的I/O子系统、与I/O对象对应的I/O资源的类型等)而使用不同的阈值。在本发明一实施例中,阈值可以考虑I/O对象组总负载随时间的预期易变性,并且响应于该预期而应用宽容的阈值。
如果在步骤1320中,NUMA I/O框架确定尚未超过阈值,则流程结束。如果在步骤1320中,NUMA I/O框架确定已经超过阈值,则NUMA I/O框架确定I/O对象组目标大小大于当前I/O对象组大小。如果I/O对象组目标大小大于当前I/O对象组大小,则在步骤1324中,NUMA I/O框架指令关联的I/O子系统将I/O对象组中的I/O对象的数量增加到I/O对象组目标大小。在本发明一实施例中,增加I/O对象组中的I/O对象的数量可以包括:初始化附加I/O对象,以及将其加入到I/O对象组。然而,如果I/O对象组目标大小不大于当前I/O对象组大小,则在步骤1326中,NUMA I/O框架指令关联的I/O子系统将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对象的数量以满足NUMA I/O框架指令。
图14A和图14B示出根据本发明一实施例的示例性系统和时间线。如图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中的各元件之间的示例性交互的时间线。为了示例的目的,假设I/O对象组绑定到节点A(1400A)和节点B(1400B)构成的节点集合。假设三个I/O对象构成I/O对象组(即I/O对象组大小为三):I/O对象X、I/O对象Y和I/O对象Z。进一步假设I/O对象X绑定到节点A(1400A),I/O对象Y和I/O对象Z绑定到节点B(1400B)。还假设NUMA I/O框架使用声明在I/O对象组目标大小与I/O对象组总负载之间应保持1:3的比率的大小策略。最后,假设NUMA I/O框架使用被I/O对象组目标大小与当前I/O对象组大小之间的任何差超过的阈值。
在步骤1420中,NUMA I/O框架(1408)询问负载平衡模块以从负载平衡模块获得更新后的I/O对象组总负载。为了示例的目的,假设I/O对象X具有7的当前有效I/O负载,I/O对象Y具有6的当前有效I/O负载,I/O对象Z具有5的当前有效I/O负载。因此,更新后的I/O对象组总负载将被确定为18。
在步骤1422中,NUMA I/O框架(1408)使用关于I/O对象X、I/O对象Y和I/O对象Z的信息来确定节点选择要求。为了示例的目的,假设节点选择要求规定I/O对象组可以绑定到一个节点或两个直接连接的节点的节点集合。在步骤1424中,NUMA I/O框架(1408)询问负载平衡模块(1410)以获得用于系统上的每个节点的更新后的系统I/O负载测量。
在步骤1426中,NUMA I/O框架(1408)将大小策略应用于18的I/O对象组总负载和节点选择要求(注意,示例性大小策略不考虑系统I/O负载)。因为I/O对象组总负载是18,所以I/O对象目标大小被计算为6,以保持I/O对象组目标大小与I/O对象组总负载之间的1:3的比率。在步骤1428中,6的I/O对象目标大小与3的当前I/O对象大小进行比较。在步骤1428中,NUMA I/O框架确定I/O对象目标大小与当前I/O对象大小之间的差超过0的阈值,6的I/O对象目标大小大于3的当前I/O对象大小。在步骤1430中,NUMA I/O框架(1408)指令I/O子系统(1412)将I/O对象组的大小从3个I/O对象增加到6个I/O对象。在步骤1432中,I/O子系统(1412)创建新I/O对象。在步骤1434中,I/O子系统(1412)将新I/O对象传送到NUMA I/O框架(1408)以绑定到节点集合。
在本发明的一个或多个实施例中,根据负载来增加I/O对象组的大小确保了根据需要和使用度来分配资源。减少分配给I/O对象组的资源避免了重叠对象的出现,其可能竞争CPU周期并且由此减小总系统效率。此外,在本发明的一个或多个实施例中,可以确保有限的硬件资源(例如硬件环(ring))分配给用于高效使用这些资源的I/O对象组,并且避免过度利用或利用不足。
可以在实现NUMA架构(1500)(或等同物)的基本上任何类型的计算机上实现本发明的实施例。例如,包括两个或更多处理器(1502)、关联的存储器(1504)、储存器件(1506)、两个或更多I/O器件(未示出)以及如今的计算机典型的许多其它元件和功能的联网计算机系统。联网的计算机也可以包括输入装置(例如键盘(1508)和鼠标(1510))以及输出装置(例如监视器(1512))。联网的计算机系统经由网络接口连接而连接到局域网(LAN)或广域网。本领域技术人员应理解,这些输入和输出装置可以采取其它形式。此外,本领域技术人员应理解,上述计算机的一个或多个元件可以位于远程处并且通过网络连接到其它元件。此外,用于执行本发明实施例的软件指令可以存储在非瞬时计算机可读存储介质上,诸如压缩盘(CD)、磁盘、带、物理盘或任何其它非瞬时计算机可读存储介质。
虽然已经关于有限数量的实施例描述了本发明,但受益于本公开的本领域技术人员应理解,可以设计出不脱离在此所公开的本发明的范围的其它实施例。相应地,本发明的范围应仅由所附权利要求限定。
Claims (15)
1.一种系统,包括:
输入/输出(I/O)器件;
多个非一致存储器访问(NUMA)节点,包括:
NUMA节点,包括处理器和存储器;
NUMA I/O框架,运行在所述多个NUMA节点中的至少一个上,被配置为:
将I/O对象组绑定到所述NUMA节点,其中所述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对象组目标大小发送到与所述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对象组目标大小。
2.如权利要求1所述的系统,其中所述第一I/O对象包括定义所述第一I/O对象与所述第二I/O对象之间的关系的亲和性。
3.如权利要求2所述的系统,其中,改变所述I/O对象组大小包括:
初始化第三I/O对象;
将所述第三I/O对象加入到所述I/O对象组;以及
将把所述第三I/O对象绑定到所述系统上的所述多个NUMA节点之一的请求发送到所述NUMA I/O框架。
4.如权利要求2所述的系统,其中,改变所述I/O对象组大小包括:
选择所述第一I/O对象;
从所述I/O对象组移除所述第一I/O对象;以及
释放对与所述第一I/O对象对应的资源的引用。
5.如权利要求1所述的系统,其中,确定所述I/O对象组目标大小与所述I/O对象组大小之间的差超过阈值表明所述NUMA节点是从由以下各项构成的组选择的一项:利用不足的和过度利用的。
6.如权利要求1所述的系统,其中所述大小策略指定:所述I/O对象组目标大小是作为所述I/O对象组总负载的特定比率来计算的。
7.一种用于将输入/输出(I/O)对象绑定到节点的方法,所述方法包括:
非一致存储器访问(NUMA)输入/输出(I/O)框架将I/O对象组绑定到系统上的多个NUMA节点中的NUMA节点,其中所述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对象组所需的处理资源量对应的值来计算的;
所述NUMA I/O框架对所述I/O对象组目标大小与所述I/O对象组大小进行比较;
所述NUMA I/O框架确定所述I/O对象组目标大小与所述I/O对象组大小之间的差超过阈值;以及
所述NUMA I/O框架指令与所述I/O对象组关联的网络媒体访问连接(MAC)层改变所述I/O对象组大小,其中所述网络MAC层响应于所述指令而改变对服务于访问所述I/O器件的请求所需的I/O资源的所述引用的数量,其中在改变之后,所述I/O对象组大小等于所述I/O对象组目标大小。
8.如权利要求7所述的方法,其中,改变所述I/O对象组大小包括:
所述网络MAC层初始化与第二线程对应的第三I/O对象;
将所述第三I/O对象加入到所述I/O对象组;以及
将把所述第三I/O对象绑定到所述系统上的所述多个NUMA节点之一的请求发送到所述NUMA I/O框架。
9.如权利要求7所述的方法,其中,改变所述I/O对象组大小包括:
所述网络MAC层选择所述第一I/O对象;
所述网络MAC层从所述I/O对象组移除所述第一I/O对象;以及
所述网络MAC层释放对与所述第一I/O对象对应的资源的引用。
10.如权利要求7所述的方法,其中,所述I/O对象组与在所述多个NUMA节点之一上执行的虚拟网络接口卡关联。
11.如权利要求7所述的方法,其中,确定所述I/O对象组目标大小与所述I/O对象组大小之间的差超过阈值包括:确定与所述第一线程对应的第一I/O对象贡献于所述NUMA节点的利用不足。
12.如权利要求7所述的方法,其中所述大小策略指定:所述I/O对象组目标大小是作为所述I/O对象组总负载的特定比率来计算的。
13.如权利要求7所述的方法,其中所述第一I/O对象包括定义所述第一I/O对象与所述第二I/O对象之间的关系的亲和性。
14.如权利要求7所述的方法,其中,确定所述I/O对象组目标大小与所述I/O对象组大小之间的差超过阈值表明处理所述I/O对象组的NUMA节点是从由以下各项构成的组选择的一项:利用不足的和过度利用的。
15.如权利要求7所述的方法,其中,改变所述I/O对象组大小包括从由以下各项构成的组选择的一项:将I/O对象加入所述I/O对象组,从所述I/O对象组移除所述I/O对象,以及释放对与所述I/O对象对应的资源的引用。
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,720 | 2011-03-31 | ||
US13/076,720 US8782657B2 (en) | 2010-09-17 | 2011-03-31 | Dynamic creation and destruction of IO resources based on actual load and resource availability |
PCT/US2011/050747 WO2012036960A1 (en) | 2010-09-17 | 2011-09-08 | Dynamic creation and destruction of io resources based on actual load and resource availability |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103210374A CN103210374A (zh) | 2013-07-17 |
CN103210374B true CN103210374B (zh) | 2016-08-10 |
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资源的动态平衡 |
CN201180052400.1A Active CN103210374B (zh) | 2010-09-17 | 2011-09-08 | 基于实际负载和资源可用性的io资源动态创建和销毁 |
CN201180052413.9A Active CN103189844B (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 |
---|---|---|---|
CN201180052413.9A Active CN103189844B (zh) | 2010-09-17 | 2011-09-08 | 在非一致存储器访问架构上使用处理位置来绑定io资源 |
Country Status (4)
Country | Link |
---|---|
US (4) | US8782657B2 (zh) |
EP (4) | EP2616934B1 (zh) |
CN (4) | CN103201722B (zh) |
WO (4) | WO2012036898A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9172766B2 (en) * | 2011-01-10 | 2015-10-27 | Fiberlink Communications Corporation | System and method for extending cloud services into the customer premise |
US8522251B2 (en) * | 2011-01-10 | 2013-08-27 | International Business Machines Corporation | Organizing task placement based on workload characterizations |
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 |
US10019167B2 (en) * | 2013-02-20 | 2018-07-10 | Red Hat, Inc. | Non-Uniform Memory Access (NUMA) resource assignment and re-evaluation |
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 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
US10142231B2 (en) * | 2016-03-31 | 2018-11-27 | Intel Corporation | Technologies for network I/O access |
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 |
CN109918027B (zh) * | 2019-05-16 | 2019-08-09 | 上海燧原科技有限公司 | 存储访问控制方法、装置、设备及存储介质 |
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 | 삼성전자주식회사 | 가상 머신에 자원을 할당하는 방법 및 장치 |
US20230289303A1 (en) * | 2020-09-18 | 2023-09-14 | Intel Corporation | Improving remote traffic performance on cluster-aware processors |
CN114780463A (zh) * | 2022-03-01 | 2022-07-22 | 阿里巴巴(中国)有限公司 | 中断控制方法、设备、分布式系统及存储介质 |
CN116820687B (zh) * | 2023-08-29 | 2023-12-05 | 银河麒麟软件(长沙)有限公司 | 基于kubelet的NUMA架构资源分配方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN1664784A (zh) * | 2005-03-30 | 2005-09-07 | 中国人民解放军国防科学技术大学 | 大规模并行计算机系统分组并行启动方法 |
Family Cites Families (24)
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 |
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 |
US7334230B2 (en) | 2003-03-31 | 2008-02-19 | International Business Machines Corporation | Resource allocation in a NUMA architecture based on separate application specified resource and strength preferences for processor and memory resources |
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 |
DE602004011890T2 (de) | 2004-02-10 | 2009-03-12 | 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 |
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 |
US7941805B2 (en) * | 2006-08-15 | 2011-05-10 | International Business Machines Corporation | Affinity dispatching load balancer with precise CPU consumption data |
US8255577B2 (en) | 2007-04-26 | 2012-08-28 | Hewlett-Packard Development Company, L.P. | I/O forwarding technique for multi-interrupt capable devices |
US8156495B2 (en) | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
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,720 patent/US8782657B2/en active Active
- 2011-03-31 US US13/076,715 patent/US8725913B2/en active Active
- 2011-03-31 US US13/076,746 patent/US8725912B2/en active Active
- 2011-03-31 US US13/076,735 patent/US8996756B2/en active Active
- 2011-08-31 WO PCT/US2011/049852 patent/WO2012036898A1/en active Application Filing
- 2011-08-31 EP EP11755204.2A patent/EP2616934B1/en active Active
- 2011-08-31 CN CN201180052399.2A patent/CN103201722B/zh active Active
- 2011-09-08 EP EP11758625.5A patent/EP2616936B1/en active Active
- 2011-09-08 CN CN201180052415.8A patent/CN103189845B/zh active Active
- 2011-09-08 CN CN201180052400.1A patent/CN103210374B/zh active Active
- 2011-09-08 EP EP11758626.3A patent/EP2616937B1/en active Active
- 2011-09-08 WO PCT/US2011/050748 patent/WO2012036961A1/en active Application Filing
- 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 WO PCT/US2011/050746 patent/WO2012036959A1/en active Application Filing
- 2011-09-08 EP EP11758624.8A patent/EP2616935B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN1664784A (zh) * | 2005-03-30 | 2005-09-07 | 中国人民解放军国防科学技术大学 | 大规模并行计算机系统分组并行启动方法 |
Also Published As
Publication number | Publication date |
---|---|
US8725913B2 (en) | 2014-05-13 |
CN103189845A (zh) | 2013-07-03 |
US20120072621A1 (en) | 2012-03-22 |
WO2012036960A1 (en) | 2012-03-22 |
US20120072624A1 (en) | 2012-03-22 |
EP2616935B1 (en) | 2016-07-20 |
EP2616936A1 (en) | 2013-07-24 |
WO2012036961A1 (en) | 2012-03-22 |
US8725912B2 (en) | 2014-05-13 |
CN103189844A (zh) | 2013-07-03 |
US8782657B2 (en) | 2014-07-15 |
WO2012036898A1 (en) | 2012-03-22 |
CN103189845B (zh) | 2016-07-06 |
CN103201722B (zh) | 2017-03-01 |
WO2012036959A1 (en) | 2012-03-22 |
US8996756B2 (en) | 2015-03-31 |
EP2616935A1 (en) | 2013-07-24 |
EP2616934B1 (en) | 2017-01-04 |
EP2616936B1 (en) | 2016-05-04 |
EP2616937A1 (en) | 2013-07-24 |
EP2616937B1 (en) | 2016-04-27 |
CN103189844B (zh) | 2016-11-09 |
EP2616934A1 (en) | 2013-07-24 |
CN103210374A (zh) | 2013-07-17 |
US20120072622A1 (en) | 2012-03-22 |
CN103201722A (zh) | 2013-07-10 |
US20120072627A1 (en) | 2012-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103210374B (zh) | 基于实际负载和资源可用性的io资源动态创建和销毁 | |
CN103377091B (zh) | 用于资源共享池中的作业的高效执行的方法和系统 | |
US7784056B2 (en) | Method and apparatus for scheduling grid jobs | |
JP5998206B2 (ja) | クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散 | |
CN103207814B (zh) | 一种去中心化的跨集群资源管理与任务调度系统与调度方法 | |
CN101136939B (zh) | 分布式计算系统和用于在其中执行应用的方法 | |
US20080229320A1 (en) | Method, an apparatus and a system for controlling of parallel execution of services | |
CN104881325A (zh) | 一种资源调度方法和资源调度系统 | |
US20070058547A1 (en) | Method and apparatus for a grid network throttle and load collector | |
CN109684074A (zh) | 物理机资源分配方法及终端设备 | |
CN105471985A (zh) | 负载均衡方法及云平台计算方法、云平台 | |
Sharma et al. | An improved task allocation strategy in cloud using modified k-means clustering technique | |
CN106293933A (zh) | 一种支持多大数据计算框架的集群资源配置与调度方法 | |
CN107977271A (zh) | 一种数据中心综合管理系统负载均衡方法 | |
CN114666335B (zh) | 一种基于数据分发服务dds的分布式系统负载均衡装置 | |
Ghafouri et al. | Smart-Kube: Energy-Aware and Fair Kubernetes Job Scheduler Using Deep Reinforcement Learning | |
CN107220128A (zh) | 一种集群系统中cpu的分配方法和装置 | |
CN117032964A (zh) | 一种作业自动化调度方法及装置、系统、设备、存储介质 | |
CN116662008A (zh) | 一种异构硬件统一纳管调度节点控制器 |
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 |