CN110235106B - 完成侧客户端节流 - Google Patents

完成侧客户端节流 Download PDF

Info

Publication number
CN110235106B
CN110235106B CN201880009855.7A CN201880009855A CN110235106B CN 110235106 B CN110235106 B CN 110235106B CN 201880009855 A CN201880009855 A CN 201880009855A CN 110235106 B CN110235106 B CN 110235106B
Authority
CN
China
Prior art keywords
server
request
completion time
server request
time
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
Application number
CN201880009855.7A
Other languages
English (en)
Other versions
CN110235106A (zh
Inventor
G·布班
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to CN202311235638.9A priority Critical patent/CN117290096A/zh
Publication of CN110235106A publication Critical patent/CN110235106A/zh
Application granted granted Critical
Publication of CN110235106B publication Critical patent/CN110235106B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/56Queue scheduling implementing delay-aware scheduling
    • H04L47/564Attaching a deadline to packets, e.g. earliest due date first
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

计算设备包括处理器和存储器。节流应用被存储在存储器中并且由处理器执行,节流应用被配置为:响应于来自第一应用的新服务器请求,确定执行新服务器请求是否超过进行中的请求的预定数目;如果执行新服务器请求没有超过进行中的请求的预定数目,则估计用于新服务器请求的完成时间;将新服务器请求和完成时间插入在请求队列中;并且向服务器发送新服务器请求和生存时间字段,其中生存时间字段等于完成时间减去新服务器请求被发送到服务器的当前时间。

Description

完成侧客户端节流
技术领域
本公开涉及客户端-服务器网络,并且更特别地涉及客户端-服务器网络中的完成侧节流。
背景技术
在此所提供的背景描述用于通常呈现用于本公开的上下文的目的。在该背景部分中描述工作的程度上,目前命名的发明人的工作以及在提交时可以不以其他方式限制为现有技术的描述的各方面既不明确地也不隐含地承认为针对本公开的现有技术。
现在参考图1,在客户端-服务器网络100中,多个客户端计算设备110-1、110-2、……和110-C(共同地,客户端计算设备或者客户端)经由分布式通信系统(DSC)108(诸如因特网)或者经由设备、本地网络等的组合总线与服务器计算设备或服务器120通信。在服务器120(作为资源或服务的提供者)与客户端110(作为服务请求者)划分任务或工作负荷。服务器120通常具有与客户端110的一对多关系。
客户端/服务器网络可以使用节流机制以基于销售给客户的服务水平协议(SLA)来限制性能。节流机制还可以用于防止客户端110利用太多工作使服务器120过载。传统地,在客户端-服务器网络100的请求侧完成该节流。如果客户端110试图完成比节流将允许更多工作,则阻止客户端110发送新请求。
当使用请求侧节流时,客户端之一(例如110-1)不知道其他客户端(例如110-1、……、110-V)在做什么。如此,请求可能不必要地冲突,并且客户端-服务器网络100的整体效率被降低。在另一示例中,客户端中的两个(例如110-1和110-2)将取消请求以便实施其相应的节流。然而,服务器120空闲。然后,两个客户端110-1和110-2同时向服务器120发送请求。服务器120同时接收这两个请求。如此,必须延迟一个请求,同时处理另一请求。
在一些示例中,客户端110使用其中客户端110请求许可发送请求的更高级协议。客户端110然后在许可由服务器120授予时发送请求。然而,该方法要求与请求有关的额外开销以及许可的授予或者拒绝。
发明内容
计算设备包括处理器和存储器。节流应用被存储在存储器中并且由处理器执行,节流应用被配置为:响应于来自第一应用的服务器请求,确定执行服务器请求是否超过进行中的请求的预定数目;如果执行服务器请求没有超过进行中的请求的预定数目,则估计用于服务器请求的完成时间;将服务器请求和完成时间插入在请求队列中;并且向服务器发送服务器请求和生存时间字段。生存时间字段等于完成时间减去服务器请求被发送到服务器的当前时间。
在其他特征中,当确定服务器请求是否超过进行中的请求的预定数目时,节流应用被配置为以下至少一项:确定进行中的请求的总数目是否小于第一预定限制;并且确定进行中的服务器请求的数目是否小于第二预定限制。
在其他特征中,服务器请求通过被安装在远程于计算设备的第二计算设备上的第一应用而被发送到计算设备。
在其他特征中,第一应用由存储器存储、由处理器执行并且被配置为生成服务器请求。节流应用位于计算设备的操作系统的内核部分中。
在其他特征中,当请求准备从请求队列被发送时,节流应用被配置为向服务器发送包括偏移字段、长度字段和生存时间字段的报头分组;并且不向服务器发送对应于报头分组的写数据有效载荷。
在其他特征中,当服务器请求是服务器写请求时,计算设备的存储器由服务器基于报头分组直接读取。
在其他特征中,当服务器请求是服务器读请求时,计算设备的存储器由服务器基于报头分组直接写入。
在其他特征中,估计用于服务器请求的完成时间基于在响应于服务器请求时所涉及的数据和每单位时间数据节流限制而被确定。每单位时间数据节流限制包括恒定数据限制和预定突发时段期间的突发数据限制中的至少一个。
在其他特征中,当估计服务器请求的完成时间时,节流应用被配置为如果最后完成请求的先前完成时间在过去,则将先前完成时间更新到当前时间;并且将用于服务器请求的完成时间添加到先前完成时间。
在其他特征中,当估计服务器请求的完成时间时,节流应用被配置为如果先前完成时间在将来,则将用于服务器请求的完成时间添加到先前完成时间。
在其他特征中,节流应用还被配置为接收来自服务器的对服务器请求的响应;并且当用于服务器请求的完成时间在将来时,等待直到完成时间是现在并且然后向第一应用指示请求完成。
一种用于节流来自完成侧的服务器请求的方法,包括:响应于来自第一应用的服务器请求,确定执行服务器请求是否超过进行中的请求的预定数目;如果执行服务器请求没有超过进行中的请求的预定数目,则估计用于服务器请求的完成时间;将服务器请求和完成时间插入在请求队列中;并且向服务器发送服务器请求和生存时间字段。生存时间字段等于完成时间减去服务器请求被发送到服务器的当前时间。
在其他特征中,确定执行服务器请求是否超过进行中的请求的预定数目包括以下至少一项:确定进行中的请求的总数目是否小于第一预定限制;并且确定进行中的服务器请求的数目是否小于第二预定限制。
在其他特征中,当请求准备从请求队列被发送时,方法还包括:向服务器发送包括偏移字段、长度字段和生存时间字段的报头分组;并且不向服务器发送对应于报头分组的写数据有效载荷。
在其他特征中,估计用于服务器请求的完成时间基于在响应于服务器时所涉及的数据和每单位时间数据节流限制而被确定。当估计服务器请求的完成时间时,包括以下一项:如果最后完成请求的先前完成时间在过去,则将先前完成时间更新到当前时间,并且将用于服务器请求的完成时间添加到先前完成时间;或者如果先前完成时间在将来,则将用于服务器请求的完成时间添加到先前完成时间。
计算设备包括处理器和存储器。主机操作系统包括用户部分和内核部分。虚拟机位于主机操作系统的用户部分中并且包括第一应用。节流应用由处理器执行并且位于主机操作系统的内核部分中,节流应用被配置为:响应于来自第一应用的服务器请求,确定执行服务器请求是否超过进行中的请求的预定数目;如果执行服务器请求没有超过进行中的请求的预定数目,则估计用于服务器请求的完成时间;将服务器请求和完成时间插入在请求队列中;并且向服务器发送服务器请求和生存时间字段。生存时间字段等于完成时间减去服务器请求被发送到服务器的当前时间。
在其他特征中,服务器包括被存储在存储器上的服务器应用,服务器应用由处理器执行并且被配置为基于服务器请求来执行以下至少一项:从硬盘驱动系统读数据和向硬盘驱动系统写数据。
本公开的适用性的进一步领域将从具体实施方式、权利要求和附图变得明显。具体实施方式和特定示例旨在仅出于说明的目的并且不旨在限制本公开的范围。
附图说明
图1是根据现有技术的客户端-服务器网络的功能块图。
图2是根据本公开的包括完成侧节流的客户端-服务器网络的功能块图。
图3是包括完成侧节流应用的客户端侧的客户端计算设备的示例的功能块图。
图4是包括完成侧节流应用的服务器侧的服务器计算设备的示例的功能块图。
图5是包括充当客户端计算设备和节流应用的虚拟机或容器的服务器的示例的功能块图。
图6是根据本公开的包括客户端计算设备、受信任的服务器计算设备和服务器计算设备的系统的功能块图。
图7是根据本公开的图示完成侧节流应用的第一部分的示例的流程图。
图8是根据本公开的图示完成侧节流应用的第二部分的示例的流程图。
图9是根据本公开的图示服务器侧节流应用的流程图。
在附图中,附图标记可以被重用以标识类似和/或相同元件。
具体实施方式
根据本公开的对于客户端侧节流的系统和方法在完成侧执行大多数节流工作。客户端计算设备或者客户端被允许发送超过节流允许的请求。然而,请求在节流的限制内完成。
根据本公开的对于客户端侧节流的系统和方法适于其中与实际上处理请求消耗的资源相比请求消耗最小资源的系统。换句话说,从客户端发送到服务器的初始请求非常小并且消耗系统中的非常少的资源。其仅当服务器决定实际上完成消耗资源的工作时。
在一些示例中,当大量的数据在机器之间移动的输入/输出类型请求时,在此所描述的系统和方法利用远程直接存储器访问(RDMA)的性质。RDMA允许服务器直接地将数据推送到客户端的存储器/从客户端的存储器提取数据。在此所描述的系统和方法还可以利用客户端的受信任和不受信任的组件。例如,客户端的受信任组件包括对客户端应用不可访问的操作系统的那些部分。例如,受信任和不受信任的组件可以通过使用虚拟机(VM)来创建。例如,在VM中运行的客户的应用是不受信任组件。然而,诸如在主机操作系统的内核中运行的节流应用的组件是受信任组件。
通过允许客户端向服务器发送直到在时间方面更晚才完成的请求,在此所描述的系统和方法允许服务器更好地优先化其工作。如果服务器在任何时刻具有空闲资源,则服务器可以较早完成请求,知道客户端上的受信任组件将实际上直到由节流允许才释放对于用户应用的请求。这有效地允许服务器洞察未来,并且因此更高效地操作。
在本文所描述的一些示例中,客户端上的不受信任用户应用将请求发送到受信任组件(诸如在客户端或者受信任服务器处的操作系统的内核中运行的节流应用),其与处理请求的服务器通信。客户端具有用于用户应用的节流限制集。节流可以以兆字节数据每秒(MB/s)、输入输出操作每秒(IOPS)或者其他数据限制每单位时间来表达。客户端还可以具有可以对在任何时间点处未完成的请求的总数的一个或多个限制。例如,第一限制可以与发送到服务器并且由服务器未完成的请求有关。例如,第二限制可以与等待被指示为用户应用的完成的请求的总数有关。
受信任组件确定未完成的请求的总数是否大于进行计数中的总请求。在一些示例中,进行中的总请求包括未完成的被发送到服务器的请求和/或完成但是等待被指示为已完成的请求。如果限制超过,则受信任组件等待进行队列中的请求完成。受信任组件还可以确定服务器处的未完成请求的数目是否大于进行计数中的服务器请求。这时候,受信任组件可以向服务器发送请求,但是受信任组件确定请求应当基于用于应用的允许MB/s节流完成的时间。
为了完成MB/s节流,受信任组件跟踪最后先前发出请求将完成的未来的最远时间。如果由受信任组件存储的时间在过去,则新请求可以相对于当前时间(即“现在”)而完成。如此,由客户端存储的时间被更新为“现在”或者当前时间。如果由受信任组件存储的时间在将来,则新请求将相对于最后完成时间而完成。
基于节流完成请求要求的时间量由受信任组件计算。例如,如果客户端被允许100MB/s并且请求用于1MB,则请求将花费10ms完成。请求时间被添加到以上存储的最后完成时间,并且请求被分配时间(对应于当服务器请求应当完成时的受信任组件上的绝对时间)。请求然后被添加到受信任组件中的进行队列并且被发送到服务器。
当请求被发送到服务器时,从请求应当完成的绝对时间(对应于用于服务器请求的生存时间(TTL)字段)的绝对时间减去客户端的当前时间。注意,对于不使用绝对时间的原因在于,不同的机器上的时钟不能保证同步。虽然当在机器之间通信时使用相对时间,但是也可以使用绝对时间。
当请求被接收时,服务器经由TTL字段知道其必须处理请求多长时间。服务器可以基于服务器请求需要完成的相对时间对来自多个客户端的多个请求进行分类。服务器可以然后以最佳的方式执行工作。服务器在TTL终止之前自由完成请求,由此释放服务器上的资源并且允许服务器处理其他请求。服务器可以信任受信任组件并且依赖于以下事实:受信任组件将实际上直到实际完成时间到达才指示应用的完成。
当接收到用于请求的完成通知时,受信任组件搜索完成队列以定位对应于请求的条目。受信任组件检查服务器请求被调度以完成的绝对时间。如果该时间是“现在”或者在过去,则受信任组件立即指示对于用户应用的完成。如果完成时间在将来,则受信任组件等待直到该时间到达,然后指示对于用户应用的完成。受信任组件递减进行中的请求的计数。
注意,在此所描述的系统和方法也可以利用完全不受信任的客户端来实现。在该情况下,在正常服务器侧逻辑之前,在服务器上实现上文被描述为受信任组件的一部分的客户端侧部分。
现在参考图2,示出了包括完成侧节流的客户端-服务器网络122。在过去,在请求侧的124-A或124-B处执行客户端节流。相反,在完成侧的126-A或126-B处执行根据本公开的客户端节流。
现在参考图3,示出了包括完成侧节流应用的客户端侧部分的客户端计算设备130。客户端计算设备130包括一个或多个处理器170和存储器172。存储器172包括主机操作系统176,其包括用户部分178和内核部分180。生成用于服务器的请求的用户应用184位于主机操作系统176的用户部分178中。完成侧客户端节流应用186的客户端侧部分位于主机操作系统176的内核部分180中。客户端计算设备130还包括有线或无线接口188和大容量存储设备190,诸如硬盘驱动器或者其他大容量存储设备。
现在参考图4,示出了包括完成侧节流应用的服务器侧部分的服务器计算设备200。服务器计算设备200包括一个或多个处理器204和存储器206。存储器206包括主机操作系统208,其包括处理客户端请求的服务器应用214和完成侧客户端节流应用216的服务器侧部分。在一些示例中,节流应用216的服务器侧部分与服务器应用214集成或被提供为服务器应用214的插件。服务器计算设备200还包括有线或无线接口218和大容量存储设备220,诸如硬盘驱动器或者其他大容量存储设备。
现在参考图5,服务器计算设备或者服务器250包括充当生成请求并且包括完成侧节流应用的客户端计算设备的虚拟机(VM)或者容器。服务器计算设备250包括一个或多个处理器254和存储器258。主机操作系统260包括用户部分264和内核部分266。用户部分264包括一个或多个客户操作系统268-1、268-2、……和268-V(共同地,客户操作系统268),其中V是大于零的整数。一个或多个客户操作系统268-1、268-2、……和268-V(共同地,客户操作系统268)中的每一个托管虚拟机或容器270-1、270-2、……和270-V(共同地,虚拟机(VM)或容器270)。VM或容器270中的每一个包括或者与用户部分272和内核部分274相关联。
VM或容器270中的每一个包括位于用户部分272或者内核部分274中的用户应用276,其生成输出到服务器的服务器请求。服务器250的内核部分266包括控制或者虚拟化系统资源(诸如处理器、硬盘驱动器、存储器等)的共享使用的管理程序280。服务器250的主机操作系统的内核部分266包括节流应用282的客户端侧和服务器侧部分。备选地,节流应用282的服务器侧部分可以位于管理程序280中。服务器250还包括有线或无线接口284和大容量存储设备286。
现在参考图6,节流应用可以位于远程于客户端计算设备130的计算机和/或包括处理服务器请求的服务器应用214的服务器289上。在一个示例中,节流应用290的客户端侧部分位于远程于服务器289的受信任服务器计算设备294上。服务器请求由客户端计算设备130生成并且发送到受信任服务器计算设备294。节流应用290的客户端侧部分如上文所描述地操作以向服务器298发送服务器请求并且从服务器289接收完成通知。在另一示例中,包括客户端侧和服务器侧部分二者的节流应用297位于服务器289上,并且省略服务器294。
现在参考图7,示出了用于在发送服务器请求时执行完成侧节流的方法350。在354处,完成侧节流应用确定是否从客户端用户应用接收到请求。当354是真时,在356处完成侧节流应用确定进行计数中的请求的总数(包括服务器上的进行中的请求和等待被指示为对于用户应用完成的完成队列中的未完成请求)是否低于预定请求限制。如果356是假,则完成侧节流应用在358处继续并且等待请求中的至少一个完成并且然后返回356。
当356是真时,则在359处完成侧节流应用递增进行计数中的总请求。在360处,方法确定服务器处的进行计数中的总请求是否低于第二预定限制。如果360是假时,方法继续362并且等待服务器完成请求并且在360处继续。当360是真时,方法递增进行计数中的服务器请求。
在368处,完成侧节流应用确定最后请求完成时间是否在过去。如果368是真,则在372处完成侧节流应用计算基于节流完成请求的时间。如果368是假,则在374处最后完成时间被设置等于“现在”并且然后在372处继续。在376处,完成侧节流应用将完成请求的时间添加到最后完成时间。在378处,完成侧节流应用将请求完成时间设置到最后完成时间。在382处,完成侧节流应用将请求插入到请求队列中。在386处,完成侧节流应用的客户端侧部分向服务器发送请求并且设置生存时间等于完成时间减去“现在”。
现在参考图8,示出了用于在服务器完成服务器请求之后执行完成侧节流的方法450。在454处,完成侧节流应用在454处确定其是否已接收到完成通知。当454是真时,在456处完成侧节流应用在完成队列中找到请求。在460处,完成侧节流应用确定请求完成时间是否在将来。如果460是假,则在462处完成侧节流应用递减进行队列中的计数。如果460是假,则在468处完成侧节流应用等待直到请求完成时间是现在并且然后在462处继续。在464处,完成侧节流应用在464处指示用户应用的请求完成。
现在参考图9,示出了用于通过服务器侧节流应用执行读和写请求的方法500。服务器侧节流应用的操作可以归因于以下事实来调节:发送请求和接收完成通知的受信任组件是受信任的。因此,服务器侧可以完成服务器请求,并且如果那对于服务器是高效的,则较早发送完成通知。当客户端具有如在504处所确定的写请求时,在508处客户端将包括写偏移字段、写长度字段和生存时间字段的报头分组(但非数据有效载荷)发送给服务器。在512处,服务器确定完成时间是否是现在。在一些示例中,服务器可以空闲并且可以决定比完成时间更早地处理写请求(换句话说,完成时间在将来)。在让客户端中的用户应用知道服务器写请求完成之前,受信任组件等待直到完成时间是现在。
如果512是真,则在516处服务器基于由客户端提供的报头信息,来读取被存储在客户端存储器中的写数据。在一些示例中,服务器使用远程直接存储器访问(RDMA)从客户端存储器读取客户端将基于报头分组想要写入的有效载荷数据。
如果客户端需要执行如在520处所确定的读请求,则客户端将包括读取偏移、读取长度和生存时间字段的报头分组发送给服务器。在528处,当服务器准备好或完成时间是现在时,服务器基于报头中的读取偏移和读取长度字段,直接地将数据写入到客户端存储器。在一些示例中,服务器可以空闲并且可以决定比完成时间更早地处理读请求(换句话说,完成时间在将来)。在让客户端中的用户应用知道服务器读请求完成之前,受信任组件等待直到完成时间是现在。
在一些示例中,系统和方法在完成侧而不是在请求侧执行大多数节流实施。请求完成的延迟可以用于将反压力放在请求者上并且阻止新请求发出直到现有请求完成。服务器提前知道直到在时间方面更晚才需要处理的请求并且因此可以进行计划。
前述描述实际上仅是说明性的并且决不旨在限制本公开、其应用或者用途。本公开的宽泛的教导可以以各种形式实现。因此,虽然本公开包括特定示例,但是本公开的真实范围不应当是这样有限的,因为其他修改将在研究附图、说明书和权利要求书时变得明显。应当理解,在不改变本公开的原理的情况下,方法内的一个或多个步骤可以以不同的次序(或者并行地)执行。此外,虽然各实施例在上文被描述为具有某些特征,但是相对于本公开的任何实施例所描述的那些特征中的任何一个或多个可以在其他实施例中的任一个的特征中实现和/或组合实现,即使该组合未明确地描述。换句话说,所描述的实施例不是互相排斥的,并且一个或多个实施例彼此的排列保持在本公开的范围内。
元件之间(例如,模块、电路元件、半导体层等之间)的空间和功能关系使用各种术语描述,包括“被连接”、“被接合”、“被耦合”、“邻近”、“靠近”、“在…之上”、“上面”、“下面”和“被布置”。除非明确地被描述为“直接的”,否则当在以上公开中描述第一元件与第二元件之间的关系时,该关系可以是其中没有其他中间元件存在于第一元件与第二元件之间的直接关系,而且可以是其中一个或多个中间元件存在于第一元件与第二元件之间(或者空间地或者功能地)的间接关系。如在此所使用的,短语A、B和C中的至少一个应当被解释为使用非专有逻辑OR的逻辑(A OR B OR C),并且不应当被解释为意味着“A中的至少一个、B中的至少一个和C中的至少一个”。
在附图中,如由箭头所指示的箭头的方向通常证明对图示感兴趣的信息(诸如数据或者指令)的流动。例如,当元件A和元件B交换各种信息但是从元件A被传送到元件B的信息与图示有关时,箭头可以从元件A指向元件B。该单向箭头不隐含没有其他信息从元件B被传送到元件A。进一步地,对于从元件A被发送到元件B的信息而言,元件B可以向元件A发送信息请求或者接收信息确认。
在包括以下定义的本申请中,术语“模块”或者术语“控制器”可以利用术语“电路”替换。术语“模块”可以指代以下各项的一部分或者包括:专用集成电路(ASIC);数字、模拟或者混合模拟/数字分立电路;数字、模拟或者混合模拟/数字集成电路;组合逻辑电路;现场可编程门阵列(FPGA);执行代码的处理器电路(共享、专用或者分组);存储由处理器电路执行的代码的存储器电路(共享、专用或者分组);提供所描述的功能的其他适合的硬件部件;或者以上中的一些或全部的组合,诸如在片上系统中。
模块可以包括一个或多个接口电路。在一些示例中,接口电路可以包括被连接到局域网(LAN)、因特网、广域网(WAN)或其组合的有线或无线接口。本公开的任何给定模块的功能可以被分布在经由接口电路连接的多个模块中间。例如,多个模块可以允许负载平衡。在另一示例中,服务器(还被称为远程或者云)模块可以代表客户模块完成一些功能。
如上文所使用的,术语代码可以包括软件、固件和/或微代码,并且可以指代程序、例程、函数、类、数据结构和/或对象。术语共享处理器电路涵盖执行来自多个模块的一些或全部代码的单个处理器电路。术语分组处理器电路涵盖组合附加的处理器电路执行来自一个或多个模块的一些或全部代码的处理器电路。对多个处理器电路的引用涵盖分立芯片上的多个处理器电路、单个芯片上的多个处理器电路、单个处理器电路的多个核心、单个处理器电路的多个线程、或者以上内容的组合。术语共享存储器电路涵盖存储来自多个模块的一些或全部代码的单个存储器电路。术语分组处理器电路涵盖组合附加的存储器存储来自一个或多个模块的一些或全部代码的存储器电路。
术语存储器电路是术语计算机可读介质的子集。如在此所使用的,术语计算机可读介质不涵盖传播通过介质(诸如在载波上)的暂态电或者电磁信号;术语计算机可读介质可以因此被认为是有形并且非暂态的。非暂态有形计算机可读介质的非限制性示例是非易失性存储器电路(诸如闪存电路、可擦可编程只读存储器电路或者掩模只读存储器电路)、易失性存储器电路(诸如静态随机存取存储器电路或者动态随机存取存储器电路)、磁性存储介质(诸如模拟或者数字磁带或者硬盘驱动器)和光存储介质(诸如CD、DVD或者蓝光光盘)。
在本申请中,被描述为具有特定属性或者执行特定操作的装置元件特别地被配置为具有那些特定属性并且执行那些特定操作。特别地,执行动作的元件的描述意味着元件被配置为执行动作。元件的配置可以包括元件的编程,诸如通过将指令编码在与元件相关联的非暂态有形计算机可读介质上。
本申请中所描述的装置和方法可以由通过将通用计算机配置为执行计算机程序中实现的一个或多个特定函数创建的专用计算机部分地或完全地实现。上文所描述的功能块、流程图部件和其他元件用作软件规格,其可以通过技术人员或者程序员的日常工作被转换为计算机程序。
计算机程序包括被存储在至少一个非暂态有形计算机可读介质上的处理器可执行指令。计算机程序还可以包括或者依赖于存储的数据。计算机程序可以涵盖:基本输入/输出系统(BIOS),其与专用计算机的硬件交互;设备驱动程序,其与专用计算机的特定设备交互、一个或多个操作系统、用户应用、后台服务、后台应用,等等。
计算机程序可以包括:(i)待解析的描述文本,诸如JavaScript对象注释(JSON)、超文本标记语言(HTML)或可扩展标记语言(XML),(ii)汇编代码,(iii)通过编译器根据源代码生成的目标代码,(iv)用于由解译器执行的源代码,(v)用于由即时编译器编译和执行的源代码等。仅作为示例,源代码可以使用来自语言的语法编写,包括C、C++、C#、ObjectiveC、Haskell、Go、SQL、R、Lisp、Fortran、Perl、Pascal、Curl、OCaml、/>HTML5、Ada、ASP(动态服务器页面)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Visual/>Lua和/>
除非元件使用短语“用于…的装置”明确记载或者在使用短语“用于…的操作”或者“用于…的步骤”的方法权利要求的情况下,否则权利要求中记载的没有一个元件旨在是35 U.S.C.§112(f)的意义内的功能模块装置元件。

Claims (17)

1.一种计算设备,包括:
处理器;
存储器;以及
节流应用,其被存储在所述存储器中,所述节流应用由所述处理器执行并且被配置为响应于来自第一应用的服务器请求:
确定执行所述服务器请求是否超过进行中的请求的预定数目;
如果执行所述服务器请求没有超过进行中的请求的预定数目,则估计用于所述服务器请求的完成时间;
将所述服务器请求和所述完成时间插入在请求队列中;以及
向服务器发送所述服务器请求和生存时间字段,其中所述生存时间字段等于所述完成时间减去所述服务器请求被发送到所述服务器的当前时间;以及
其中当估计所述服务器请求的所述完成时间时,所述节流应用被配置为:
如果最后完成请求的先前完成时间在过去,则将所述先前完成时间更新到当前时间;
将用于所述服务器请求的完成时间添加到所述先前完成时间;以及
如果所述先前完成时间在将来,则将用于所述服务器请求的完成时间添加到所述先前完成时间。
2.根据权利要求1所述的计算设备,其中当确定执行所述服务器请求是否超过进行中的请求的预定数目时,所述节流应用被配置为以下至少一项:
确定进行中的请求的总数目是否小于第一预定限制;以及
确定进行中的服务器请求的数目是否小于第二预定限制。
3.根据权利要求1所述的计算设备,其中所述服务器请求由所述第一应用发送到所述计算设备,所述第一应用被安装在远程于所述计算设备的第二计算设备上。
4.根据权利要求1所述的计算设备,还包括第一应用,其中所述第一应用由所述存储器存储、由所述处理器执行并且被配置为生成所述服务器请求。
5.根据权利要求4所述的计算设备,其中所述节流应用位于所述计算设备的操作系统的内核部分中。
6.根据权利要求1所述的计算设备,其中当所述服务器请求准备好从所述请求队列被发送时,所述节流应用被配置为:
向所述服务器发送包括偏移字段、长度字段和所述生存时间字段的报头分组;以及
不向所述服务器发送对应于所述报头分组的写数据有效载荷。
7.根据权利要求6所述的计算设备,其中当所述服务器请求是服务器写请求时,所述计算设备的所述存储器由所述服务器基于所述报头分组直接读取。
8.根据权利要求6所述的计算设备,其中当所述服务器请求是服务器读请求时,所述计算设备的所述存储器由所述服务器基于所述报头分组直接写入。
9.根据权利要求1所述的计算设备,其中估计用于所述服务器请求的所述完成时间基于在响应于所述服务器请求时所涉及的数据和每单位时间数据节流限制而被确定。
10.根据权利要求9所述的计算设备,其中所述每单位时间数据节流限制包括恒定数据限制和预定突发时段期间的突发数据限制中的至少一项。
11.根据权利要求1所述的计算设备,其中所述节流应用还被配置为:
接收来自所述服务器的对所述服务器请求的响应;以及
当用于所述服务器请求的所述完成时间在将来时,等待直到所述完成时间是现在并且然后向所述第一应用指示请求完成。
12.一种用于节流来自完成侧的服务器请求的方法,包括:
响应于来自第一应用的服务器请求:
确定执行所述服务器请求是否超过进行中的请求的预定数目;
如果执行所述服务器请求没有超过进行中的请求的预定数目,则估计用于所述服务器请求的完成时间;
将所述服务器请求和所述完成时间插入在请求队列中;以及
向服务器发送所述服务器请求和生存时间字段,其中所述生存时间字段等于所述完成时间减去所述服务器请求被发送到所述服务器的当前时间;
其中当估计所述服务器请求的所述完成时间时,所述方法包括以下各项中的一项:
如果最后完成请求的先前完成时间在过去,则将所述先前完成时间更新到当前时间,以及将用于所述服务器请求的完成时间添加到所述先前完成时间;或者
如果所述先前完成时间在将来,则将用于所述服务器请求的完成时间添加到所述先前完成时间。
13.根据权利要求12所述的方法,其中确定执行所述服务器请求是否超过进行中的请求的预定数目包括以下至少一项:
确定进行中的请求的总数目是否小于第一预定限制;以及
确定进行中的服务器请求的数目是否小于第二预定限制。
14.根据权利要求12所述的方法,其中当所述服务器请求准备好从所述请求队列被发送时,所述方法还包括:
向所述服务器发送包括偏移字段、长度字段和所述生存时间字段的报头分组;以及
不向所述服务器发送对应于所述报头分组的写数据有效载荷。
15.根据权利要求12所述的方法,其中估计用于所述服务器请求的所述完成时间基于在响应于所述服务器请求时所涉及的数据和每单位时间数据节流限制而被确定。
16.一种计算设备,包括:
处理器;
存储器;
主机操作系统,其包括用户部分和内核部分;
位于所述主机操作系统的所述用户部分的虚拟机,其包括第一应用;
由所述处理器执行的节流应用,其位于所述主机操作系统的所述内核部分并且被配置为响应于来自第一应用的服务器请求:
确定执行所述服务器请求是否超过进行中的请求的预定数目;
如果执行所述服务器请求没有超过进行中的请求的预定数目,则估计用于所述服务器请求的完成时间;
将所述服务器请求和所述完成时间插入在请求队列中;以及
向服务器发送所述服务器请求和生存时间字段,其中所述生存时间字段等于所述完成时间减去所述服务器请求被发送到所述服务器的当前时间;以及
其中当估计所述服务器请求的所述完成时间时,所述节流应用被配置为:
如果最后完成请求的先前完成时间在过去,则将所述先前完成时间更新到当前时间;
将用于所述服务器请求的完成时间添加到所述先前完成时间;以及
如果所述先前完成时间在将来,则将用于所述服务器请求的完成时间添加到所述先前完成时间。
17.根据权利要求16所述的计算设备,还包括:
硬盘驱动系统,
其中所述服务器包括被存储在所述存储器中的服务器应用,所述服务器应用由所述处理器执行并且被配置为以下至少一项:基于所述服务器请求,从所述硬盘驱动系统读取数据,以及将数据写入到所述硬盘驱动系统。
CN201880009855.7A 2017-02-03 2018-01-30 完成侧客户端节流 Active CN110235106B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311235638.9A CN117290096A (zh) 2017-02-03 2018-01-30 完成侧客户端节流

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/423,959 US10250517B2 (en) 2017-02-03 2017-02-03 Completion-side client throttling
US15/423,959 2017-02-03
PCT/US2018/015810 WO2018144404A1 (en) 2017-02-03 2018-01-30 Completion-side client throttling

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311235638.9A Division CN117290096A (zh) 2017-02-03 2018-01-30 完成侧客户端节流

Publications (2)

Publication Number Publication Date
CN110235106A CN110235106A (zh) 2019-09-13
CN110235106B true CN110235106B (zh) 2023-09-15

Family

ID=61224545

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880009855.7A Active CN110235106B (zh) 2017-02-03 2018-01-30 完成侧客户端节流
CN202311235638.9A Pending CN117290096A (zh) 2017-02-03 2018-01-30 完成侧客户端节流

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311235638.9A Pending CN117290096A (zh) 2017-02-03 2018-01-30 完成侧客户端节流

Country Status (4)

Country Link
US (2) US10250517B2 (zh)
EP (1) EP3577559A1 (zh)
CN (2) CN110235106B (zh)
WO (1) WO2018144404A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10250517B2 (en) * 2017-02-03 2019-04-02 Microsoft Technology Licensing, Llc Completion-side client throttling
US10659376B2 (en) * 2017-05-18 2020-05-19 International Business Machines Corporation Throttling backbone computing regarding completion operations
US11681466B2 (en) * 2020-06-30 2023-06-20 Western Digital Technologies, Inc. Proactive storage operation management
US11915047B2 (en) 2020-06-30 2024-02-27 Western Digital Technologies, Inc. Managing storage device compute operations

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101421702A (zh) * 2006-04-26 2009-04-29 日本电信电话株式会社 负荷控制装置及其方法
CN105577772A (zh) * 2015-12-17 2016-05-11 腾讯科技(北京)有限公司 素材接收方法、素材上传方法及装置
CN105847377A (zh) * 2016-04-12 2016-08-10 乐视控股(北京)有限公司 集群网络的请求拥塞过载处理方法及系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154769A (en) 1998-03-27 2000-11-28 Hewlett-Packard Company Scheduling server requests to decrease response time and increase server throughput
US7388834B2 (en) * 2000-08-24 2008-06-17 Hewlett-Packard Development Company, L.P. System and method for controlling network traffic flow in a multi-processor network
US7379884B2 (en) 2003-09-11 2008-05-27 International Business Machines Corporation Power on demand tiered response time pricing
US7590775B2 (en) * 2004-08-06 2009-09-15 Andrew Joseph Alexander Gildfind Method for empirically determining a qualified bandwidth of file storage for a shared filed system
US20060075067A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access with striping over an unreliable datagram transport
US20070118653A1 (en) * 2005-11-22 2007-05-24 Sabre Inc. System, method, and computer program product for throttling client traffic
KR20080057483A (ko) 2006-12-20 2008-06-25 삼성전자주식회사 서버, 클라이언트, 로드 밸런싱 시스템 및 그의 로드밸런싱 방법
US8402464B2 (en) 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US20110102157A1 (en) * 2009-11-05 2011-05-05 Nokia Corporation Wake-Up For Wireless Devices Based On Requested Data
US8412827B2 (en) 2009-12-10 2013-04-02 At&T Intellectual Property I, L.P. Apparatus and method for providing computing resources
US9386021B1 (en) 2011-05-25 2016-07-05 Bromium, Inc. Restricting network access to untrusted virtual machines
US8271692B1 (en) 2010-10-01 2012-09-18 Western Digital Technologies, Inc. Throttled command completion time
US8543868B2 (en) * 2010-12-21 2013-09-24 Guest Tek Interactive Entertainment Ltd. Distributed computing system that monitors client device request time and server servicing time in order to detect performance problems and automatically issue alerts
EP2733888A4 (en) * 2011-07-12 2015-01-21 Lg Electronics Inc METHOD FOR DISCOVERING DEVICES AND METHOD FOR DOWNLOADING CONTENT
CN102404398B (zh) 2011-11-17 2015-03-25 曙光信息产业(北京)有限公司 一种支持多客户端的rdma消息发送方法
US8656482B1 (en) 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US9473413B1 (en) * 2013-12-04 2016-10-18 Amazon Technologies, Inc. Dynamic throttle of network traffic
US10212194B2 (en) 2014-01-20 2019-02-19 Google Llc Server controlled throttling of client to server requests
US9692701B1 (en) * 2014-04-10 2017-06-27 Google Inc. Throttling client initiated traffic
US9652631B2 (en) 2014-05-05 2017-05-16 Microsoft Technology Licensing, Llc Secure transport of encrypted virtual machines with continuous owner access
EP3057290A1 (en) * 2015-02-10 2016-08-17 Telefonica Digital España, S.L.U. Method, system and device for managing congestion in network services
US10250517B2 (en) * 2017-02-03 2019-04-02 Microsoft Technology Licensing, Llc Completion-side client throttling

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101421702A (zh) * 2006-04-26 2009-04-29 日本电信电话株式会社 负荷控制装置及其方法
CN105577772A (zh) * 2015-12-17 2016-05-11 腾讯科技(北京)有限公司 素材接收方法、素材上传方法及装置
CN105847377A (zh) * 2016-04-12 2016-08-10 乐视控股(北京)有限公司 集群网络的请求拥塞过载处理方法及系统

Also Published As

Publication number Publication date
CN117290096A (zh) 2023-12-26
US10721177B2 (en) 2020-07-21
US20190190842A1 (en) 2019-06-20
US10250517B2 (en) 2019-04-02
CN110235106A (zh) 2019-09-13
WO2018144404A1 (en) 2018-08-09
US20180227238A1 (en) 2018-08-09
EP3577559A1 (en) 2019-12-11

Similar Documents

Publication Publication Date Title
US10318467B2 (en) Preventing input/output (I/O) traffic overloading of an interconnect channel in a distributed data storage system
CN110235106B (zh) 完成侧客户端节流
US8959249B1 (en) Cooperative cloud I/O scheduler
US11093352B2 (en) Fault management in NVMe systems
CN110235105B (zh) 用于在受信任客户端组件中的服务器处理之后的客户端侧节流的系统和方法
US20170220385A1 (en) Cross-platform workload processing
US11936568B2 (en) Stream allocation using stream credits
US8510739B2 (en) Shared request grouping in a computing system
KR102261263B1 (ko) 클라우드 자원 간 간섭 및 병목 현상 해소를 위한 클라우드 자원의 적응적 관리 방법 및 장치
CN109857545B (zh) 一种数据传输方法及装置
KR20150117258A (ko) 분산형 컴퓨팅 아키텍쳐
US20150254102A1 (en) Computer-readable recording medium, task assignment device, task execution device, and task assignment method
US11005776B2 (en) Resource allocation using restore credits
CN115525400A (zh) 基于批次来管理多个计算任务的方法、设备和程序产品
EP3539278B1 (en) Method and system for affinity load balancing
US9626226B2 (en) Cross-platform workload processing
US11693799B2 (en) Bandwidth control for input/output channels
JP6392556B2 (ja) アクセスリクエスト発行装置、アクセスリクエスト発行システム、アクセスリクエスト発行方法、及び、アクセスリクエスト発行プログラム
CN118159956A (zh) 数据中心存储中用于安全、高性能地执行用户代码的存储服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant