首页> 中国专利> 基于实际负载和资源可用性的IO资源动态创建和销毁

基于实际负载和资源可用性的IO资源动态创建和销毁

摘要

一种用于将输入/输出(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对象组大小。

著录项

  • 公开/公告号CN103210374A

    专利类型发明专利

  • 公开/公告日2013-07-17

    原文格式PDF

  • 申请/专利权人 甲骨文国际公司;

    申请/专利号CN201180052400.1

  • 发明设计人 N·G·德劳克斯;R·库恩哈盼;

    申请日2011-09-08

  • 分类号

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人冯玉清

  • 地址 美国加利福尼亚

  • 入库时间 2024-02-19 19:20:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-10

    授权

    授权

  • 2013-08-14

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20110908

    实质审查的生效

  • 2013-07-17

    公开

    公开

说明书

背景技术

一些现代计算系统架构利用物理上和概念上分离的节点来改变 计算硬件的速度。在这些架构中,输入/输出器件可以位于计算机上的 各种物理位置中。分离节点上的不同应用和处理可以使用每个输入/ 输出器件。在这些架构上执行的内核元件可以负责促进输入/输出器件 与物理上远离该器件的应用之间的通信。

发明内容

大体上,在一方面,本发明涉及一种非暂时性计算机可读介质, 其包括软件指令,该软件指令在由处理器运行时执行一种方法。所述方 法包括:非一致存储器访问(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示出根据本发明的一个或多个实施例的用于通过NUMA I/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中,NUMA I/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中,NUMA I/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标记,NUMA I/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)、 磁盘、带、物理盘或任何其它非瞬时计算机可读存储介质。

虽然已经关于有限数量的实施例描述了本发明,但受益于本公开 的本领域技术人员应理解,可以设计出不脱离在此所公开的本发明的 范围的其它实施例。相应地,本发明的范围应仅由所附权利要求限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号