用于最小化工作负荷空闲时间和工作负荷间干扰的网络和存储I/O请求的排序方案的制作方法

文档序号:11851467阅读:240来源:国知局
用于最小化工作负荷空闲时间和工作负荷间干扰的网络和存储I/O请求的排序方案的制作方法与工艺

本发明大体上涉及计算机系统中的数据网络通信和数据存储,且特别涉及用于服务网络和存储输入/输出(I/O)请求的方法和系统。

发明概述

在本文中所述的本发明的实施方式提供一种方法,其包括从由一个或多个处理器处理的一个或多个工作负荷接收通过通信网络或在存储设备上访问数据的请求。根据旨在最小化一个或多个处理器在处理多个工作负荷中的总空闲时间的标准来限定在多个请求当中的顺序。根据所限定的顺序来服务请求。

在一些实施方式中,限定顺序包括区分开阻塞请求和非阻塞请求,以及给予一个或多个阻塞请求优于一个或多个非阻塞请求的优先级。在所公开的实施方式中,限定顺序包括给予由第一工作负荷发出的并且阻塞第二工作负荷的处理的请求优先级。

在实施方式中,限定顺序包括从操作系统或从虚拟层接收提示以及基于提示来设定顺序。在示例实施方式中,工作负荷和操作系统或虚拟层在给定计算节点中运行,以及设定顺序包括将提示提供到在给定计算节点外部的远程元件。此外或可选地,限定顺序可包括从操作系统或从虚拟层接收给定工作负荷是空闲的通知以及基于通知来设定顺序。

在示例实施方式中,限定顺序包括相对于不页入任何存储页面的第二I/O请求给予将存储页面从通信网络或从存储设备页入到本地存储器内的第一I/O请求优先级。在另一实施方式中,限定顺序包括相对于访问具有低于第一访问频率的第二访问频率的第二数据的第二I/O请求给予访问具有第一访问频率的第一数据的第一I/O请求优先级。

在又一实施方式中,限定顺序包括相对于被识别为异步的第二I/O请求给予被识别为同步的第一I/O请求优先级。在再一实施方式中,限定顺序包括相对于被识别为非屏障写的第二写请求给予被识别为屏障写的第一写请求优先级。

在另一实施方式中,限定顺序包括相对于写请求给予读请求优先级。在另一实施方式中,限定顺序包括相对于传输具有大于第一数据尺寸的第二数据尺寸的第二数据的第二I/O请求给予传输具有第一数据尺寸的第一数据的第一I/O请求优先级。在再一实施方式中,限定顺序包括相对于由第二类型的工作负荷发出的第二I/O请求给予由第一类型的工作负荷发出的第一I/O请求优先级。

根据本发明的实施方式另外提供包括接口和处理器的装置。接口被配置用于连接到通信网络或存储设备。处理器被配置成从由一个或多个处理器处理的一个或多个工作负荷接收通过通信网络或在存储设备上访问数据的请求,以根据旨在最小化一个或多个处理器在处理多个工作负荷中的总空闲时间的标准来限定在请求当中的顺序并根据所限定的顺序服务请求。

根据本发明的实施方式还提供计算机软件产品,该产品包括其中存储程序指令的有形非暂时性计算机可读介质,所述指令当由处理器读取时使处理器从由一个或多个处理器处理的一个或多个工作负荷接收通过通信网络或在存储设备上访问数据的请求,以根据旨在最小化一个或多个处理器在处理多个工作负荷中的总空闲时间的标准来限定在请求当中的顺序并根据所限定的顺序服务请求。

本发明从结合附图的其实施方式的下面的详细描述中将被更充分理解,其中:

附图的简要说明

图1是示意性示出根据本发明的实施方式的计算系统的方框图;以及

图2是示意性示出根据本发明的实施方式的用于服务I/O请求的方法的流程图。

实施方式的详细描述

综述

在本文中所述的本发明的实施方式提供了用于在计算系统中提供用于服务由工作负荷发出的I/O请求的改进的方法和系统。在示例实施方式中,计算系统包括计算机,以及工作负荷包括发出I/O请求的虚拟机(VM)。可选地,计算系统可包括多个计算节点的集群。

在所公开的实施方式中,计算系统包括运行一个或多个工作负荷的一个或多个处理器。作为系统操作的部分,工作负荷发出用于通过计算机网络或在存储设备上访问数据的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请求的目的地的途中的网络交换机、远程NIC、远程计算节点和/或远程存储设备。远程元件可接着根据期望顺序基于提示来服务I/O请求。

同样重要的是注意到所公开的技术一般只影响I/O请求被服务的顺序且不修改被分配到不同的工作负荷的带宽或其它服务等级目标(SLO)。例如,所公开的技术一般确保被分配相同的服务质量(QoS)等级的工作负荷仍然接收相似的带宽。

所公开的技术一般不旨在提高访问网络或存储设备的效率,而是改善运行工作负荷的处理器的计算效率。然而,所公开的技术可与旨在更有效地利用网络或存储资源的调度方案组合,以便进一步改善计算系统的性能。

系统描述

图1是示意性示出根据本发明的实施方式的计算系统的方框图。在本例子中,计算系统包括计算机20,例如个人计算机、在数据中心或其它计算机集群中的服务器或任何其它适当的计算机。

在图1的实施方式中,计算机20包括中央处理单元(CPU)24、易失性存储器28、磁盘接口30、一个或多个存储设备32和网络接口控制器(NIC)36。CPU 24一般包括一个或多个处理器,例如处理核心。易失性存储器28也被称为随机存取存储器(RAM)或仅仅是存储器,并可包括例如一个或多个动态RAM(DRAM)或静态RAM(SRAM)设备。存储设备32可包括例如一个或多个固态驱动器(SSD)和/或硬盘驱动器(HDD)。磁盘接口30可包括例如适当的HDD或SSD控制器。

NIC 36将计算机20连接到计算机网络40,例如局域网(LAN)、诸如互联网的广域网(WAN)或任何其它适当的网络。在本例子中,NIC 36包括用于连接到网络40的网络接口60和执行NIC的各种处理功能的NIC处理器64。NIC驱动器44控制NIC 36。NIC驱动器44一般被实现为在CPU 24上运行的软件模块。

CPU 24运行虚拟层,其将计算机20的物理资源分配到一个或多个工作负荷。在本例子中,虚拟层包括管理程序48,且工作负荷包括虚拟机(VM)52。被提供到工作负荷的物理资源可包括例如CPU资源、易失性存储器(例如RAM)资源、存储资源(例如磁盘32的资源)和联网资源,例如NIC36在访问网络40时的资源。

除了VM 52之外或对于VM 52可选地,其它类型的工作负荷也可包括例如操作系统容器、过程、应用或任何其它适当的工作负荷类型。为了清楚起见,接下来的描述主要指VM。然而,所公开的技术以类似的方式可应用于任何其它类型的工作负荷。

作为它们的操作的部分,VM 52发出用于通过网络40或在磁盘32上访问数据的I/O请求。I/O请求可例如通过网络40将数据写到在计算机20外部的某个位置,通过网络40从在计算机20外部的位置读取数据,并将数据写到磁盘32或从磁盘32读取数据。

用于通过网络40访问数据的I/O请求由驱动器44处理并被转发到NIC36。用于在磁盘32上访问数据的I/O请求由接口30处理并被转发到磁盘32。

为了清楚起见,接下来的描述主要指用于通过网络40访问数据的I/O请求的调度。在一些实施方式中,驱动器44包括调度器56,其使用下面详细描述的方法来优先考虑并调度这些I/O请求。然而,所公开的技术可以用类似的方式以用于调度用于访问在磁盘32上的数据的I/O请求。为了这个目的,存储调度器(未示出)可例如在接口30中或在管理程序48中运行。可由存储调度器以类似的方式执行下面关于调度器56描述的任何特征。

在一些情况下,被发到NIC 36或磁盘32的I/O请求可响应于VM 52的命令或请求由管理程序48生成。在本专利申请的上下文中和在权利要求中,这样的I/O请求也被视为起源于VM。一般来说,I/O请求在本文被视为由工作负荷发出,即使它们可在到达驱动器44、NIC 36、接口30和/或磁盘32之前经过某个中间实体。这个中间实体可修改、格式化、聚合或封装I/O请求,或甚至将I/O请求转换到不同的协议。

图1所示的计算系统配置是纯粹为了概念清楚起见而选择的示例配置。在可选实施方式中,可使用任何其它适当的系统配置。例如,在一些实施方式中,调度器56的功能可体现在NIC 36的NIC处理器64中。这样的实现将调度任务从CPU 24卸载到NIC 36。

所公开的技术一般在软件中实现,但也可在硬件中或使用软件和硬件元件的组合来实现。特别是,NIC 36和NIC驱动器44的元件(包括调度器56)和/或存储调度器可在软件中、在硬件中或使用这两者来实现。

一般地,CPU 24包括在软件中被编程以执行本文所述的功能的一个或多个通用处理器。软件或其部件(例如,管理程序48、VM 52或其它工作负荷、NIC驱动器44、调度器56、存储调度器和/或其它软件部件)可以例如以电子形式通过网络被下载到处理器,或它可以可选地或另外地在诸如磁性、光学或电子存储器的非暂时性有形介质上被提供和/或存储。

用于最小化总CPU空闲时间的I/O请求的优先化

如上面提到的,为了清楚起见,下面所述的实施方式指调度网络I/O请求。所有的这些技术能够以用于调度存储I/O请求的类似方式来执行。

在一些实施方式中,调度器56从VM 52接收各种I/O请求,并根据旨在最小化CPU 24在处理多个工作负荷中的总空闲时间的标准来将多个请求排序。一般地,调度器56区分开阻塞和非阻塞I/O请求,并旨在首先服务阻塞I/O请求。

图2是示意性示出根据本发明的实施方式的用于服务I/O请求的方法的流程图。该方法在请求输入步骤70处以调度器56接收由VM 52发出的I/O请求开始。在分类步骤74处,调度器56将所接收的I/O请求分类为阻塞I/O请求和非阻塞I/O请求。

在本专利申请的上下文中和在权利要求中,术语“阻塞I/O请求”指的是使一个或多个工作负荷停止直到被服务(例如,直到接收到响应或确认)为止的I/O请求。被停止的工作负荷可包括发出阻塞I/O请求的相同工作负荷和/或不同的工作负荷。术语“非阻塞I/O请求”指的是不停止任何工作负荷即允许所有工作负荷即使未被服务也至少在某个时间段期间继续处理的I/O请求。注意,相同类型的I/O请求可以是阻塞或非阻塞的,这取决于工作负荷的内部组织。

在排序步骤78处,调度器56设定I/O请求被服务的顺序,例如I/O请求被转发到NIC 36的顺序。顺序取决于步骤74的分类结果,并给予阻塞I/O请求优于非阻塞请求的优先级。调度器56根据这个顺序来服务I/O请求。

当设定I/O请求被服务的顺序时,调度器56通常考虑维持在工作负荷当中的某个公平程度的需要。除非维持了公平,否则可能的是例如非阻塞请求将被无限期地推迟。还可能的是,只发出阻塞请求的工作负荷将在访问网络或存储设备时接收无限带宽。

调度器56可以用任何适当的方式并使用任何适当的标准来维持在工作负荷当中的公平。在一个示例实施方式中,调度器56可基于工作负荷优先级来给每个工作负荷分配带宽。在这个带宽内,调度器可给予阻塞请求优于非阻塞请求的优先级。该方法然后环回到上面的步骤70。

下面的例子澄清了阻塞和非阻塞I/O请求的概念,并且也证明相同类型的I/O请求(例如,4KB页面的读出)根据工作负荷的内部设计可以是阻塞的或非阻塞的。在示例实施方式中,两个工作负荷通过网络40连续地读取4KB页面,并处理所读取的数据。第一工作负荷执行同步读出操作(即,发出读请求),等待响应且然后只继续发出下一读请求。第二工作负荷执行在缓冲器内的100个异步读出操作,并能够在随后的读出操作正在进行的同时处理缓冲器中的数据。

如可认识到的,第二工作负荷更好地设计成应付读时延。在第一工作负荷中,每个读请求是阻塞请求。第二工作负荷只有在它的缓冲器变成空的时才停止。因此,在第二工作负荷中,大多数读请求是非阻塞的。

而且,如果这两个工作负荷在“先来先接受服务”的基础上同时运行(例如,通过不同的CPU核心),则第一工作负荷也将停止,同时NIC服务于第二工作负荷的读请求。因此,当使用读请求的“先来先接受服务”调度时,总CPU利用率将非常低。

当使用所公开的技术时,另一方面,调度器56通常将第一工作负荷的读请求识别为阻塞的,并将第二工作负荷的(至少大部分的)读请求识别为非阻塞的。调度器56将读请求排序,使得第一工作负荷的读请求在第二工作负荷的读请求之前被服务。作为结果,运行第一工作负荷的CPU核心的空闲时间(和因而CPU 24的空闲时间作为整体)将相当大地减小。

调度器56可使用用于决定哪些I/O请求可能是阻塞的以及哪些可能是非阻塞的各种技术、标准或直观推断。例如,一些I/O请求由内部管理工作负荷发出。在这样的情况下,调度器56知道这些I/O请求的作用,并可决定它们中的哪些是阻塞的以及哪些是非阻塞的。例如,通过网络40从远程位置(或从磁盘32)将存储页面页入到RAM 28的读请求可能是阻塞的。因此,调度器56可相对于其它I/O请求给予页入存储页面的读请求优先级。

作为另一例子,当将VM或其它过程从一个计算节点迁移到另一计算节点时,对频繁地由VM访问的存储页面(“热页面”)的I/O请求可被考虑为阻塞的,并应首先被服务。对不常由VM访问的存储页面(例如“冷页面”)的I/O请求可被考虑为非阻塞的,并被给予低优先级。对比冷页面更频繁但比热页面更不频繁地访问的页面的另一类I/O请求也可被定义,且给定的某个中间优先级是服务的顺序。

在一些实施方式中,调度器56可接收提示,其将某些I/O请求标记为阻塞的或非阻塞的并基于提示来设定服务I/O请求的顺序。这样的提示可例如由工作负荷本身(例如,由VM 52的客户操作系统(OS)、由管理程序48或由任何其它实体)生成。例如,VM的客户OS可向调度器56指示某个I/O请求是同步的(且因此可能是阻塞的)和/或某个I/O请求是异步的(且因此可能是非阻塞的)。

作为另一例子,客户OS可向调度器56指示某个写请求是屏障写请求,这阻塞随后的写请求直到被服务为止。屏障写请求可能被视为阻塞的。此外或可选地,客户OS可向调度器56指示某个写请求是正常(非屏障)写请求,且因此可能是非阻塞的。

在其它实施方式中,调度器56可接收某个工作负荷是空闲的或至少部分地空闲的(例如,未充分利用它的所分配的资源)的通知。如果这个工作负荷也已经发出当前未决的I/O请求,则调度器56可假设未决的I/O请求是阻塞的,并给予它优于其它I/O请求的优先级。换句话说,调度器56可给予由被识别为当前空闲的工作负荷发出的I/O请求优先级。

在实施方式中,管理程序48可通过在I/O请求已经被发出之后由工作负荷检测到CPU资源要求中的下降或在I/O请求已经被完成之后由工作负荷检测到在CPU资源要求中的增加来确定工作负荷由于未决的I/O请求而是空闲的。

在又一些其它实施方式中,调度器56可在没有明确的边信息的情况下而是基于在统计上有效的直观推断来区分开阻塞和非阻塞I/O请求。例如,调度器可相对于写请求给予读请求优先级,假设写请求通常不是屏障写,但读请求具有是同步的不可忽略的可能性。

根据另一直观推断,调度器56可相对于传输较大的数据尺寸的I/O请求给予传输(读或写)较小的数据尺寸的I/O请求优先级。这样的标准是有用的,这是因为大I/O事务比小I/O事务引起在更长的时间段期间的阻塞。而且,较大的I/O事务具有属于对延迟较不敏感的后台处理的较高可能性。

在又一些其它实施方式中,调度器56可基于发出I/O请求的工作负荷的类型来设定服务I/O请求的顺序。在示例实施方式中,调度器相对于由备份应用工作负荷或视频流工作负荷发出的I/O请求给予由Apache HTTP服务器工作负荷发出的I/O请求优先级。在备份应用中,可假设在统计上大部分I/O请求是非阻塞的。视频流应用一般采用一些内部缓冲,且因此能够容忍一些时延,假设维持了合理的公平。调度器56可例如基于由工作负荷发出的I/O请求的模式来识别或估计给定工作负荷的类型。

上面列出的排序标准纯粹作为例子被描绘。在可选实施方式中,调度器56可根据旨在最小化运行工作负荷的一个或多个处理器的空闲时间的任何其它适当的标准来将I/O请求排序。

例如,在很多上面的例子中,调度器56给予使工作负荷停止的阻塞I/O请求优先级。在可选实施方式中,调度器56也可识别并给予使工作负荷未充分利用它已被分配的资源的I/O请求优先级。换句话说,I/O请求可被识别为“部分阻塞的”,即被识别为防止工作负荷充分利用其所分配的资源。调度器56可在服务非阻塞I/O请求之前服务这样的部分阻塞I/O请求。

虽然本文描述的实施方式主要处理对网络或存储设备的访问请求的调度,但是本文描述的方法和系统也可在工作负荷竞争资源的其它应用中使用,例如在访问本地RAM或远程RAM(位于不同的计算节点上的RAM)时被使用。

由远程元件对I/O请求的排序

在一些实施方式中,阻塞和非阻塞I/O请求的识别由调度器56执行,但I/O请求的实际排序由在计算机20外部的一个或多个元件来应用。一些远程元件可属于网络40,或可位于网络40当中。

例如,考虑通过网络40从计算机20发送到一个或多个远程计算节点和/或存储设备的I/O请求。这样的I/O请求一般遍历远程元件,例如网络交换机、在远程计算节点中的远程NIC和/或远程存储设备。

在一些实施方式中,调度器56将一个或多个提示发送到一个或多个这样的远程元件。远程元件可接着根据期望顺序基于提示来服务I/O请求。每个远程元件可包括接收提示并相应地调度I/O请求的调度器。

提示可例如区分开阻塞和非阻塞I/O请求或否则向远程元件指示期望排序。给定的提示可起源于OS或计算机20的管理程序,如上所述,并被转发到远程元件。此外或可选地,给定的提示可由调度器56生成。

特定的提示机制可从一种类型的远程元件到另一类型的远程元件改变。在示例实施方式中,调度器56在目的地计算节点处通过设置被使用的基本网络协议的适当的服务质量(QoS)字段来向网络交换机或向NIC提供提示。在以太网中,例如,调度器56可为了这个目的来设置服务类别(CoS)字段。如果在讨论中的协议不支持适当的字段,则调度器56可例如提供软件提示而不是硬件提示。

将认识到,上面所述的实施方式作为例子被引用,以及本发明不限于在上文中特别示出和描述的内容。更确切地,本发明的范围包括在上文中描述的各种特征的组合和子组合,以及本领域中的技术人员在阅读前述描述后将想到的且未在现有技术中公开的变化及其修改。通过引用并入本专利申请中的文档应被考虑为本申请的组成部分,除了在某种程度上任何术语在这些所并入的文档中以与在本说明书中明确地或隐含地被做出的定义冲突的方式被定义以外,只有在本说明书中的定义应被考虑。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1