存储和使非TCP业务到期的制作方法

文档序号:17120744发布日期:2019-03-15 23:46阅读:159来源:国知局
存储和使非TCP业务到期的制作方法

近年来,“基于云”的服务、高性能计算(hpc)、计算服务器和采用数据中心等的其他活动的实现已经被广泛采用。在典型的数据中心安装下,安装在服务器机箱和服务器机架中的大量服务器使用网络链路(例如,以太网)和各种交换机制进行通信互连。数据中心系统通常依赖于“拉取”范例,其中资源可以存储在服务器站点处并且可以允许客户端通过向服务器发出一个或多个请求来从服务器拉取资源。例如,对于诸如web浏览器等客户端应用,客户端应用可以使用在传输控制协议(tcp)之上构建的应用级协议(例如,超文本传输协议(http))与服务器通信。但是,并非所有因特网应用都使用tcp。非tcp应用不断增长并且在服务器处生成非tcp业务,并且可以包括诸如因特网音频播放器、因特网协议(ip)电话、视频会议和实时应用等应用。

在某些情况下,网络的性能可能受到任何数目的因子的影响,包括带宽拥塞和低效的存储器利用率。解决潜在问题可能是流类型区别的。特别地,因为tcp业务(例如,与使用tcp的数据分组交换相关和/或包括使用tcp的数据分组交换的信息)是“面向连接”的业务,并且非tcp业务(例如,与不使用tcp的数据分组交换相关和/或包括不使用tcp的数据分组交换的信息)是“无连接业务”,所以服务器可以解决根据正在处理的业务的类型而出现的一个或多个不同的问题。例如,在遇到拥塞时,所有竞争的tcp流都降低其数据速率以试图解除拥塞,而非tcp流甚至在遇到带宽拥塞之后继续以其原始速率发送,从而导致潜在的分组丢失。存储与非tcp业务有关的状态和信息对于网络防火墙操作和分组授权也很重要。

传统系统无法在存储器利用方面解决非tcp业务的不同特性。然而,确定如何存储以及何时从存储器使与tcp和非tcp业务相关的信息到期(例如,删除)对于有效的存储器利用和改进网络性能可能是关键的。例如,如果多个处理器或线程试图同时访问相同资源,则将与非tcp业务相关的信息存储在单个数据结构(例如,表)中可能导致资源竞争。相反,跨大量非tcp业务数据结构来存储与非tcp业务相关的信息可能消耗更高的存储器、更高的中央处理单元(cpu)利用率,并且导致业务信息的频繁创建和插入。特别地,消耗存储器、cpu或其他系统资源对于内核模式服务、应用和驱动程序是关键性的和至关重要的。在内核模式环境中,低效的服务可能导致差的系统性能、故障和崩溃。



技术实现要素:

在一些示例中,提供了一种方法、装置和计算机可读介质,其解决了上述动态地确定如何在网络环境中存储和使非tcp业务到期的问题。在一些示例中,本公开可以实现由服务器操作以用于管理非tcp业务的状态机。特别地,在一些示例中,非tcp业务可以与多个存储器分区和支持非tcp业务的动态缩放的到期算法的使用相结合,同时实现更快的连接速度、更高的系统性能和更低的时间复杂度。

在一些示例中,本公开提供了一种采用多个分区和散列表的系统,该散列表可以根据活动处理器或线程的数目而可缩放。在一些方面,可以利用最佳散列函数来确保跨多个分区的非tcp业务的均匀分发。附加地或替代地,由服务器实现的状态机可以通过依赖于与系统中存储的业务的数目成比例的清除间隔来管理非tcp业务的寿命,或者基于存储器事件触发,这些存储器事件触发可以基于存储器可用性从存储器清除到期的非tcp业务。

根据本公开的一个示例,公开了一种管理非tcp分组的方法。该方法可以包括在服务器处监测服务器的存储器中的非tcp端点参数。在一些方面,该方法还可以包括确定非tcp端点参数是否在由下限阈值和上限阈值定义的范围之外。在一些示例中,下限阈值和上限阈值可以是存储在存储器中的非tcp端点的相应数目,或者是与存储在存储器中的非tcp端点相对应的相应存储器利用率值。该方法还可以包括响应于非tcp端点参数在由下限阈值和上限阈值定义的范围之外,调节与维持存储在存储器中的非tcp端点相关联的端点寿命值和清除间隔值。附加地或替代地,该方法可以包括响应于调节后的端点寿命值和调节后的清除间隔值中的至少一个,从服务器的存储器移除非tcp端点中的一个或多个非tcp端点。

根据本公开的另一示例,公开了一种用于管理非tcp分组的计算机设备。计算机设备可以包括处理器和耦合到处理器的存储器。在一些示例中,存储器可以包括由处理器可执行以在服务器处监测服务器的存储器中的非tcp端点参数的指令。在一些方面,这些指令还可以包括确定非tcp端点参数是否在由下限阈值和上限阈值定义的范围之外。下限阈值和上限阈值可以是存储在存储器中的非tcp端点的相应数目,或者是与存储在存储器中的非tcp端点相对应的相应存储器利用率值。这些指令还可以由处理器可执行以响应于非tcp端点参数在由下限阈值和上限阈值定义的范围之外,调节与维持存储在存储器中的非tcp端点相关联的端点寿命值和清除间隔值。附加地或替代地,这些指令可以包括响应于调节后的端点寿命值和调节后的清除间隔值中的至少一个,从服务器的存储器移除非tcp端点中的一个或多个非tcp端点。

根据又一示例,公开了一种用于管理非tcp分组的计算机可读介质。该计算机可读介质可以包括用于在服务器处监测服务器的存储器中的非tcp端点参数的指令。在一些方面,这些指令还可以包括确定非tcp端点参数是否在由下限阈值和上限阈值定义的范围之外。下限阈值和上限阈值可以是存储在存储器中的非tcp端点的相应数目,或者是与存储在存储器中的非tcp端点相对应的相应存储器利用率值。这些指令还可以包括响应于非tcp端点参数在由下限阈值和上限阈值定义的范围之外,调节与维持存储在存储器中的非tcp端点相关联的端点寿命值和清除间隔值。附加地或替代地,这些指令可以包括响应于调节后的端点寿命值和调节后的清除间隔值中的至少一个,从服务器的存储器移除非tcp端点中的一个或多个非tcp端点。

前面已经相当广泛地概述了根据本公开的示例的特征和技术优点,以便可以更好地理解随后的详细描述。在下文中将描述其他特征和优点。所公开的概念和具体示例可以容易地用作修改或设计用于实现本公开的相同目的的其他结构的基础。这种等同结构没有脱离所附权利要求的范围。当结合附图考虑时,从以下描述将能更好地理解本文中公开的概念的特征(它们的组织和操作方法)以及相关的优点。提供每个附图仅用于说明和描述的目的,而不是作为权利要求的范围的定义。

附图说明

图1是示出本方面可以在其中操作的网络架构的示例的图。

图2是示出根据本公开的各个方面的在计算机设备(例如,服务器)中实现的存储器管理系统的示例的图。

图3是根据本公开的各方面的概述从目标分区存储、查找或删除端点所需要的步骤的方法的流程图。

图4a是示出由计算机设备(例如,服务器)实现的用于基于存储器中存储的业务的数目来管理端点寿命和延迟过程调用(dpc)清除间隔的状态机的示例的图。

图4b是示出由计算机设备(例如,服务器)实现的用于基于存储器利用率因子来管理端点寿命和延迟过程调用(dpc)清除间隔的状态机的另一示例的图。

图5a-5c是示出根据本公开的各方面的基于各种触发的存储器清除过程的时序图。

图6是由计算机设备实现的用于基于存储器可用性触发来选择一个或多个清除过程的方法的流程图。

图7是根据本公开的各个方面的在计算机设备上实现的方法的流程图。

图8是示出根据本公开的各个方面的计算机设备的硬件实现的示例的图。

具体实施方式

以下结合附图阐述的详细描述旨在作为各种配置的描述,而非旨在表示可以实践本文中描述的概念的配置。详细描述包括具体细节以用于提供对各种概念的透彻理解的目的。然而,对于本领域技术人员很清楚的是,可以在没有这些具体细节的情况下实践这些概念。在一些实例中,公知的结构和组件以框图形式示出,以便避免模糊这些概念。

在一些示例中,本公开可以解决在传统系统中标识的问题,其中分区通常是固定的或预定的,而与系统中的活动处理器的数目或需要存储的端点量无关。因此,传统系统遭受存储器和cpu利用的影响,因为如果有多个处理器或多个线程同时访问相同资源,则将与非tcp业务相关的信息(本文中称为“非tcp端点信息”或“非tcp端点”)存储在单个数据结构中可能导致资源竞争。相反,基于预定条件跨大量存储器分区来存储非tcp业务端点信息可能消耗更高的存储器和cpu功率,这通常是由于业务的创建和到大分区中的插入而导致的。此外,这样的系统可能遭受较慢的查找操作和网络速度,因为系统必须跨大量分区查找表中的端点条目。出于本公开的目的,术语“端点”可以是指由本地端点和远程端点定义的非tcp连接。通过扩展,术语“端点寿命”可以指定非tcp端点必须不活动以便在存储器中被分类为空闲的时间长度。

因此,在一些示例中,本公开采用状态机来存储非tcp业务的信息,该信息与多个存储器分区和以支持非tcp业务的动态缩放的到期算法的使用相结合,同时实现更快的连接速度、更高的系统性能和更低的时间复杂度。例如,状态机操作以基于存储在系统的存储器中的端点的数目来动态地调节非tcp端点的到期速率,例如,以考虑新端点的传入速率(例如,创建速率)或存储器利用率因子的变化。在一个实施例中,该系统和方法可以以内核模式(与用户模式应用相反)实现,其中应用可以访问系统存储器。因此,在这种情况下,如果内核模式无法正确管理存储器使用,则故障可能导致系统崩溃。换言之,状态机基于传入速率来动态地调节到期速率以避免存储器变满,这将导致分组丢失。在一些实现中,计算机设备可以基于处理器的数目来动态地调节存储器分区的数目(例如,当处理器/核被热添加或移除时)。附加地或替代地,本文中公开的计算机设备以均匀方式跨多个存储器分区分发非tcp业务的信息。例如,一些实现可以利用实现跨多个分区的非tcp业务的均匀分发的最佳散列函数(例如,teoplitz散列)。因此,当一个或多个分区未充分利用时,没有一个分区可能被过度利用。在其他方面,本公开中讨论的计算机设备可以采用(包括)管理端点寿命的状态机(参见图4a和4b),并且存储器清除操作(例如,延迟过程调用(dpc))可以利用清除间隔以允许当在存储器中的空闲的非tpc端点的数目增加时充分和定期地移除空闲的非tpc端点。术语“空闲”可以指定与特定非tcp端点有关的存储信息尚未被访问的时间段(例如,“端点寿命值”)。因此,在一些方面,计算机设备可以标识存储在存储器的一个或多个分区中的在特定时间段(例如,60秒)内未被访问的非tcp端点的数目。

因此,在一些示例中,状态机有效地管理存储器以通过将端点移除速率动态地调节为等于或大于端点创建速率(即,正在进入存储器中的端点的数目)来移除空闲的非tcp端点。这样,本方面可以实现系统的改进性能。如果没有本文中描述的技术,在没有充分移除的情况下添加越来越多的非tcp端点将导致不可持续的系统。而且,这样的系统将是无响应的,提供较慢的连接速度,并且从散列表中查找或检索,从而不利地影响服务质量。

首先转到图1,网络系统100包括通过网络110与一个或多个客户端应用115(例如,客户端应用115-a、客户端应用115-b和客户端应用115-c)通信的计算机设备105(例如,服务器)。在一些示例中,网络110可以是有线或无线网络。计算机设备105还可以与数据存储库120通信,数据存储库120可以包括由一个或多个客户端应用115请求的数据(例如,tcp或非tcp业务/数据分组)。

在一些示例中,一个或多个客户端应用115可以被配置为与计算机设备105建立tcp连接或非tcp连接。例如,关于诸如web浏览器等客户端应用115,客户端应用115可以使用在tcp之上构建的应用级协议http与计算机设备105(例如,服务器)通信。但是,并非所有因特网应用都使用tcp。如上所述,非tcp业务应用不断增长,并且可以包括客户端应用115,诸如因特网音频播放器、因特网协议(ip)电话、视频会议、实时应用等。

网络和因特网连接可能需要非tcp业务,包括用户数据报协议(udp)和因特网控制消息协议(icmp)。决定如何存储以及何时使非tcp业务到期可能对连接速度、安全性和整体系统性能至关重要。另外,基于tcp分组和非tcp分组的特性,解决潜在问题可以是流类型区别的。特别地,因为tcp业务是“面向连接”的业务并且非tcp业务是“无连接业务”,所以计算机设备105可以解决根据正在处理的业务的类型而出现的一个或多个不同的问题。

在一些示例中,计算机设备可以动态地确定如何在网络环境中存储和使非tcp业务到期。在一些示例中,本公开的各方面可以实现由计算机设备105操作以用于管理非tcp业务的状态机。此外,非tcp业务可以与多个存储器分区和支持非tcp业务的动态缩放的到期算法的使用相结合,同时实现更快的连接速度、更高的系统性能和更低的时间复杂度。下面参考图2-8详细描述由本公开提供的各种技术的进一步细节。

图2是示出根据本公开的各个方面的在计算机设备105中实现的存储器管理系统200的示例的图。在一些示例中,存储器管理系统200可以包括与存储器230通信以管理与非tcp业务相关的信息(例如,非tcp端点)的存储和到期的存储器管理器220。在一些方面,存储器管理系统200可以是如参考图1描述的计算机设备105的一部分。作为参考,图2中的接口“a”可以是用于端点插入、查找和删除的接口。相反,如根据本公开的各方面描述的,接口“b”可以是用于端点到期的接口。

在一些示例中,存储器230可以包括一个或多个(例如,多达任何数目n个)存储器分区205(具体地,分区205-a、分区205-b、分区205-c和分区205-n)。此外,每个存储器分区205可以包括用于存储与相应非tcp端点相关的信息的存储器位置,例如,在该示例中的散列表215。在一个方面,数目n可以基于计算机设备105中的活动处理器(参见图8)或线程的数目来确定。因此,在该示例中,计算机设备105可以被配置为根据活动处理器的数目来动态地调节分区205-a到205-n和与一个或多个分区205相关联的散列表215-a到215-n的数目。在一些方面,每个非tcp端点可以被均匀地存储到多个散列表215中的一个中,使得与在存储器230中创建的其他分区205相比,没有过度利用一个分区205。在一些方面,如果存在热添加或移除事件(例如,指示已经从系统添加或移除了核而没有重新启动机器硬件的事件),则可以调节分区205的数目。

存储器管理系统200还可以包括一个或多个(例如,多达任何数目n个)读写器锁210,使得每个锁与不同的分区205相关联,从而避免多个处理器对单个锁的竞争。在一些示例中,可以从数据存储库120检索一个或多个非tcp分组,如参考图1所描述的。计算机设备105可以利用均匀分发机制,诸如但不限于散列函数225(例如,toeplitz散列函数),使得每个非tcp端点或数据分组可以被散列到多个分区205中的一个中。散列函数225可以确保针对存储在每个分区205中的多个端点的均匀分发。参考图3(下文)更详细地描述散列函数225的特征。

在一些方面,存储器管理器220可以被配置为实现一个或多个分区205的dpc清除间隔。具体地,本公开的计算机设备可以基于系统中的端点的数目来使用多个状态(参见图4a和4b的状态机)用于描述端点寿命和清除间隔。例如,在一个示例中,如果端点的数目超过指定的端点阈值(例如,n>2,000个端点),则可以随后缩短端点寿命(例如,从60秒到30秒),使得能够从存储器230中移除足够数目的端点以便改进用于端点查找和检索的操作(例如,提高用于端点查找和检索的操作的速度)。

在另一示例中,存储器管理器220可以被配置为基于存储器利用率因子来执行清除操作(参见图4b)。例如,当存储器的利用率(即,占用或使用的存储器量)增加时,存储器管理器220可以采用更积极的技术(例如,经由缩短端点寿命和清除间隔)来有效地管理服务器的整体存储器。附加地或替代地,存储器管理器220可以实现当可用系统存储器下降到低于预定阈值时被执行的存储器可用性触发。因此,在这种情况下,为了释放可用存储器,计算机设备105可以增加要连续触发的dpc过程的频率(参见图5b),直到可用存储器超过预定阈值为止。

图3是根据本公开的各方面的方法300的流程图,该方法300概述了与一个示例实现相关联的用于从目标分区存储、查找或删除端点的动作。在一些方面,计算机设备105可以操作存储器管理系统200以执行在方法300中标识的动作。

在框305处,方法300可以包括在计算机设备105处接收入站或出站请求。在一些示例中,请求可以由一个或多个客户端应用115或由计算机设备105(例如,服务器)本身发起。在框310处,方法300可以包括提取分组元组。在一个或多个示例中,可以使用散列函数225(包括但不限于teoplitz散列)在存储器230的多个分区205之间均匀地分发非tcp端点。teoplitz散列函数可以提供针对跨所有分区205的多个端点的近似均匀的分发。在一些示例中,可以从udp分组的3元组(远程ip地址、远程端口、本地端口)计算teoplitz散列函数,并且在icmp分组的情况下,可以使用其他元组(icmpid、icmp类型、icmp代码)。在udp和icmp中,散列函数225可以包括秘密密钥。在一些方面,秘密密钥可以用于防止黑客例如获取散列密钥。采用这样的过程可以防止恶意方发出可能对计算机设备105的服务质量产生负面影响的拒绝服务(dos)攻击。因此,在框315处,方法300可以包括使用teoplitz散列来生成32位散列密钥。尽管关于teoplitz散列的非限制性示例描述所示出的方法,但是本领域普通技术人员应当理解,可以使用可以适用于本文中描述的状态机的基础功能的任何替代散列函数。

在框320处,方法300还可以包括掩蔽前m个最低有效位以将相应的非tcp端点索引到多个分区205中的一个中。在一些示例中,“m”可以是整数。其中将存储、查找或删除非tcp端点的分区205可以通过使用散列密钥的一部分索引到目标分区205中来选择。来自对分区205的数目的散列密钥枚举的最低有效位的数目m用于将每个端点索引到分区205中的一个中。因此,在框325处,该方法可以包括基于本文中描述的技术从一个或多个分区205存储、查找或删除端点。

图4a是示出由操作存储器管理系统200的计算机设备105(例如,服务器)实现的用于基于存储在存储器中的非tcp端点的数目来管理端点寿命和dpc清除间隔或存储器触发的状态机400的示例的图。在一些示例中,状态机400和与状态机400相关联的技术可以由存储器管理器220(参见图2)独立地或与处理器805(参见图8)协作来管理和执行。根据各个方面,端点(例如,非tcp端点)的寿命可以由计算机设备105的处理器805(参见图8)执行的状态机来维持。在一个或多个示例中,处理器805和存储器管理器220可以联合或独立地负责根据本文中描述的状态机400来管理计算机设备105的存储器230。

如前所述,术语“端点”可以是指由本地端点和远程端点以及与其相关联的信息和/或与在其间交换的数据分组相关联的信息定义的非tcp连接。在一些方面,端点还可以是指从一个或多个客户端应用115接收和/或向一个或多个客户端应用115传输或被排队以用于向一个或多个客户端应用115传输的非tcp分组。状态机400的可配置数目的状态(例如,第一状态405、第二状态410、第三状态415和第四状态420)中的每个可以具有下限阈值和上限阈值。下限阈值和上限阈值可以是存储在存储器中的非tcp端点的相应数目,或者是与存储在存储器中的非tcp端点相对应的相应存储器利用率值。

在一个示例中,下限阈值和上限阈值可以定义触发到另一状态的切换(例如,在第一状态405与第二状态410、第二状态410与第三状态415之间等)的端点的数目。在计算机设备确定非tcp端点参数是否在由相对于端点的数目的下限阈值和上限阈值而定义的范围之外的情况下,下限阈值和上限阈值可以被描述为下限端点阈值和上限端点阈值。在一些示例中,术语“非tcp端点参数”可以是指与存储在存储器中的非tcp端点的相应数目相对应的值、或者与基于存储在存储器中的非tcp端点的存储器利用率相关联的值。

在所示的非限制性示例中,第一状态405、上限端点阈值可以是n=2000个端点。因为第一状态405是初始状态,所以可以将下限端点阈值设置为n=0个端点。相反,对于第二状态410,上限端点阈值可以是例如n=3,000个端点,而下限端点阈值可以是n=2,000个端点。因此,如下面将描述的,计算机设备可以响应于非tcp端点参数在由下限阈值和上限阈值定义的范围之外而调节端点寿命值和清除间隔值。应当注意,尽管仅参考状态机400描述四个状态,但是普通技术人员将理解,可以采用大于或小于四个状态的任何数目来实现本公开的目标,例如,这取决于例如管理存储器230中所需要的粒度级别。

因此,如上所述,在第一状态405,上限阈值可以是设置为例如2,000个端点的第一上限端点阈值425。在第一状态405期间,下限阈值可以是设置为例如0个端点的第一下限端点阈值425。本领域普通技术人员应当理解,阈值水平的任何值可以由计算机设备105建立,或者由系统的操作者设置,并且分别如图4a所示的所示示例值:用于第一上限和下限端点阈值的值2,000和0、用于第二上限端点阈值430的值3,000、用于第二下限端点阈值437的值2,000、以及用于第三上限端点阈值435的值15,000不应当以任何方式解释为限制。

在一些方面,每个状态可以对应于端点寿命值440和清除间隔值(例如,dpc间隔445)。在一些示例中,对于第一状态405,端点寿命值可以设置为第一端点默认值(例如,60秒),并且清除间隔值可以设置为第一间隔默认值(例如,60秒)。在一些示例中,术语“默认值”可以是指由计算机设备105设置的初始值或者表示从初始第一值到调节后的第二值的变化的调节后的值。计算机设备105可以根据系统中的端点数目n在不同状态之间转换。例如,计算机设备105可以标识存储在存储器230中的非tcp端点的数目。在一些示例中,计算机设备105可以标识存储在存储器230的一个或多个分区205中的非tcp端点或分组的数目。

如果具有处于特定状态的状态机400的计算机设备105确定非tcp端点的数目不在由下限阈值和上限阈值限定的范围之外,则计算机设备105将基于为特定状态定义的端点寿命值和清除间隔值以指定间隔(参见图5a)触发空闲的非tcp端点的dpc清除。在一些方面,确定空闲的非tcp端点的数目可以包括确定自非tcp端点被访问以来的时间段是否已经超过空闲阈值(由端点寿命值定义)。如稍后将参考图5a所述,dpc可以是内核模式过程,并且因此运行预定的最大时间段(例如,100ms)。因此,在第一状态405期间操作的该示例中,可以每60秒触发dpc,其中对于每个触发,dpc过程可以每个执行100ms。

然而,在以第一状态405开始并且考虑端点数目增加的情况下,如果在任何点处非tcp端点的数目在由下限阈值和上限阈值限定的范围之外(例如,如果非tcp端点的数目超过n=2,000的第一上限端点阈值),则状态机400可以转换到第二状态410,其中端点寿命值440可以缩短(例如,从60s到30s)并且dpc间隔445也可以减小(例如,从60s到40s)以便允许系统在端点的传入数目增加时修剪(例如,从存储器230的一个或多个分区205中移除)更多数目的端点。这种动态调节实现了系统的改进性能,因为允许端点数目增加而不以等于或高于端点创建速率的适当速率修剪它们可能最终导致不可持续的系统,其中存储器230可能需要在系统中携带大量端点。这导致无响应的系统、较慢的连接速度、从分区205以及在一个示例中从散列表215查找或检索。

继续所示示例,如果在第二状态410,计算机设备105确定非tcp端点的数目进一步在第二上限端点阈值430之外(例如,n>3,000),则状态机400可以转换到第三状态415,其中可以进一步缩短端点寿命值440(例如,30s到15s)并且还可以另外减少dpc间隔445(例如,40s到15s)以便允许系统以增加的速率从存储器230的一个或多个分区205中移除空闲端点。类似地,如果在第三状态415,计算机设备105仍然确定非tcp端点的数目超过第三上限端点阈值435(例如,15,000),则可以进一步减小端点寿命值和dpc间隔(例如,分别为15s到6s、15s到5s)。这种情况可能会在传入请求的数目超过传出的非tcp分组的数目时出现。

相反,考虑到端点数目的减小,如果在任何状态(例如,诸如以下示例中的第二状态410),计算机设备105确定非tcp端点的数目在由下限阈值和上限阈值定义的范围之外(例如,当端点的数目低于与特定状态相关联的第二下限端点阈值427时),计算机设备105可以操作状态机400以通过在需要存储器清除之前增加端点寿命和dpc间隔来改变状态并且将端点寿命值440和dpc间隔445调节到较早状态(例如,在一个示例中,从第二状态410返回到第一状态405)。

图4b是示出由计算机设备(例如,服务器)实现的用于基于存储器利用率因子“u”来管理端点寿命和dpc清除间隔的状态机450的另一示例的图,其中“u”∈[0,1](即,0-1之间的任何值,表示当前使用或占用的存储器级别)。在一些方面,存储器利用率因子可以表示为占用或使用中的总存储器的百分比。当存储器的利用率增加时,计算机设备105可以采用更积极的技术(例如,减小的端点寿命和频繁的清除间隔)来有效地管理服务器的整体存储器。

与图4a中的状态机一样,状态机450可以包括多个可配置数目的状态(例如,第一状态405、第二状态410、第三状态415和第四状态420),其可以类似于状态机400。多个状态机中的每个可以具有定义存储器利用率因子“u”的上限阈值(例如,上限存储器阈值)和下限阈值(例如,下限存储器阈值),当存储器利用率在由上限存储器阈值和下限存储器阈值限定的范围之外时,存储器利用率因子“u”触发到另一状态(例如,在第一状态405与第二状态410之间)的切换。

在一些示例中,上限阈值可以是被设置为例如u=0.25的第一上限存储器阈值455(即,可以占用总存储器的25%);在第二状态410与第三状态415之间,上限阈值可以是被设置为例如u=.50的第二上限存储器阈值460(即,可以占用总存储器的50%);在第三状态415与第四状态420之间,上限阈值可以是被设置为例如u=0.75的第三上限存储器阈值465(即,可以使用总存储器的75%),等等。类似地,在第一状态,下限阈值可以被设置为例如u=0;在第二状态410与第三状态415之间,下限阈值可以是被设置为例如u=.25的第二下限存储器阈值462(即,可以占用总存储器的25%),等等。同样,尽管仅参考状态机450描述四个状态,但是应当理解,可以采用大于或小于四个状态的任何数目来实现本公开的目标,例如,这取决于例如管理存储器230中所需要的粒度级别。

在一些方面,计算机设备105可以根据系统中的存储器利用率因子u在不同状态之间转换。例如,计算机设备105可以标识存储器利用率u是否在第一上限存储器阈值(例如,u=0.25)与第一下限存储器阈值的范围之外以从第一状态405转换到第二状态410。类似地,如果因为例如传入业务量超过计算机设备105可以有效地从系统清除的传出的非tcp分组,第二状态410处的清除操作未能将存储器利用率保持在第二存储器阈值(例如,u=0.50)以下,则计算机设备105可以转换到采用更积极的清除参数的第三状态415。

类似于图4a中描述的状态机400,这里相对于与特定状态相关联的存储器阈值在任何状态(例如,诸如以下示例中的第二状态410)处的存储器利用率的降低可能导致计算机设备105改变状态,并且通过在存储器利用率低于下限存储器阈值时在需要存储器清除之前增加端点寿命和dpc间隔,将端点寿命值440和dpc间隔445调节到较早状态(例如,在一个示例中,从第二状态410返回到第一状态405)。

图5a-5c是示出操作存储器管理系统200的计算机设备105(例如,服务器)的根据本公开的各方面的基于各种触发的存储器清除过程的时序图。根据本公开的各种方面,可以预期两种类型的到期事件:基于间隔的触发(图5a)和/或基于存储器可用性的触发(图5b)。在一些方面,可以顺序地执行两种类型的触发(参见例如图5c)。

首先转到图5a,示出了与存储器管理系统200的基于间隔的清除过程相关联的基于间隔的触发系统时序图500。在一些示例中,基于间隔的触发系统可以由参考图8描述的存储器清除组件835实现。根据基于间隔的触发,当足够量的存储器230可用(例如,服务器的存储器230超过存储器可用阈值)时,操作存储器管理系统200的计算机设备105以由清除间隔参数(例如,dpc间隔445)定义的间隔执行定期dpc清除。出于本公开的目的,术语“清除间隔参数”和“清除间隔值”可以可互换地使用。在一些方面,触发dpc的间隔可以由计算机设备105的状态机400(参见图4)通过调节清除间隔参数(例如,dpc间隔445)来指示。

在本公开的一些方面,当存储器管理系统200处于第一状态405时,端点寿命可以被设置为寿命默认值(例如,60秒)并且dpc清除间隔也可以是间隔默认值(例如,60秒)。在一些方面,dpc可以是内核模式过程,并且因此运行预定的最大时间段(例如,100ms)。因此,在所示的示图500中,dpc可以每60秒被触发,其中在每个触发(时间=0、60、120、180秒),dpc过程可以每次执行100ms。因此,在一些情况下,过程的100ms持续时间的限制可以进一步限制计算机设备105可以在每个触发点处从存储器230中移除的非tcp端点的数目。在本公开的一些方面,可以跨所有分区205以循环方式以指定间隔触发定期dpc,并且每个dpc可以在任何一个时间清除单个分区。

接下来转向图5b,示出了与存储器管理系统200的基于存储器可用性的过程相关联的基于存储器可用性的触发时序图505。基于存储器可用性的触发可以紧跟存储器压力事件(例如,计算机设备105的存储器230小于存储器可用阈值)而被触发。在这种情况下,当存储器230为低时,计算机设备105可以执行“连续dpc”过程,直到存储器低状态得到缓和。具体地,在确定计算机设备105的存储器230小于存储器可用阈值时,计算机设备105可以触发两个或更多个连续的dpc过程以从存储器230清除到期的非tcp分组,直到存储器230的可用量超过存储器可用阈值。

如上所述,dpc可以是内核模式过程,并且因此运行预定的最大时间段(例如,100ms)。因此,在基于存储器可用性的触发系统中,计算机设备105可以在连续分段中执行dpc,每个100ms。因此,如图505所示,计算机设备105可以连续地(例如,总共800ms)执行dpc过程,直到可用存储器返回到可接受的水平。

本公开的各方面提供了确定计算机设备105的存储器230是否满足存储器可用阈值的多种方法。在一个示例中,可以采用低存储器标志(例如,“lownonpagedpoolcondition(低非分页池条件)”标志),使得当空闲存储器量低于系统定义的存储器可用阈值时设置标志。在这种情况下,dpc可以连续地运行,例如,相继地运行,直到存储器条件得到缓和,如图5b所示。

相反,当设置高存储器标志(例如,“highnonpagedpoolcondition(高非分页池条件)”标志)时,计算机设备105可以识别出计算机设备105的存储器230超过存储器可用阈值,并且因此可以调度基于间隔的dpc清除(参见图5a)。因此,一个或多个标志可以作为触发信号进行操作以确定要执行两个清除过程中的哪个。

最后,图5c示出了与存储器管理系统200的组合清除过程相关联的时序图515,其中可以基于由计算机设备105观察到的一个或多个存储器条件顺序地执行两个dpc过程(基于间隔和基于存储器可用性)。因此,时序图515示出了当存储器230开始变满时(例如,在时间=0秒)并且当满存储器条件得到缓和时(例如,在时间=0.8秒)的系统行为和dpc执行。因此,只要系统存储器小于存储器可用阈值,dpc就可以连续地执行并且继续到到期端点,直到低存储器条件得到缓和。当可用存储器超过存储器可用阈值时,dpc可以基于由计算机设备105指定的清除间隔值/参数以定期间隔恢复执行。

图6是由操作存储器管理系统200的计算机设备105实现的用于基于存储器可用性触发来选择一个或多个清除过程的方法600的流程图。在一些示例中,方法600可以由与计算机设备105相关联的存储器管理器220和/或处理器805(参见图8)执行。在一些示例中,存储器管理器220可以是参考图2描述的存储器管理器220的示例。

在一些示例中,除了实现存储器的基于间隔的清除之外,当可用存储器为(或接近)满时,存储器管理器220可以触发立即dpc以从存储器中清除到期的非tcp。因此,在框605处,存储器管理器220可以确定存储器230(即,存储器230的一个或多个分区205)是否具有小于存储器可用阈值的空闲存储器空间量。存储器可用阈值可以是预定的,或者基于由计算机设备105正在处理的请求的数目来动态调节。

如果在框605处,存储器管理器220确定计算机设备105的存储器230中的可用存储空间量小于存储器可用阈值,则存储器管理器220可以触发连续dpc过程610(参见图5b)以从存储器清除到期的非tcp分组,直到存储器230中的空闲存储器空间量超过存储器可用阈值。相反,如果在框605处,存储器管理器220确定存储器230中的空闲存储器空间量超过存储器可用阈值,则存储器管理器220可以触发dpc间隔过程615(参见图5a)。在一些方面,存储器管理器220可以循环地继续方法600,因为它连续地分析和监测存储器230的利用率。

图7是用于基于存储在存储器中的非tcp业务的数目或存储器利用率因子来管理端点寿命和延迟过程调用(dpc)清除间隔的状态机的示例方法700的流程图。方法700可以由操作存储器管理系统200的计算机设备105(例如,服务器)执行,如参考图1-6所述。尽管下面关于计算机设备105的元件描述方法700,但是可以使用其他组件来实现本文中描述的一个或多个步骤。

在框705处,方法700可以包括在服务器处监测存储在服务器的存储器中的非tcp端点的数目。在一些方面,计算机设备105可以包括被配置为监测存储在存储器的一个或多个分区中的非tcp端点的数目的非tcp端点标识符组件825(参见图8)。

在框710处,方法700可以包括确定存储在存储器中的非tcp端点的数目是否在由下限阈值和上限阈值定义的范围之外。在一些示例中,计算机设备105可以操作非tcp端点标识符组件825(参见图8)以确定非tcp端点的数目是否在上限端点阈值和下限端点阈值的范围之外。

附加地或替代地,非tcp端点标识符组件825可以进一步监测与服务器的存储器相关联的存储器利用率因子,并且确定非tcp端点参数(例如,当非tcp端点参数表示存储器利用率因子时)是否在下限存储器利用率阈值和上限存储器利用率阈值的范围之外。如上所述,本公开的各方面允许系统根据可以存储在系统中(例如,在存储器的一个或多个分区中)的端点的数目n和存储器利用率水平u在多个状态之间转换。如果非tcp端点的数目超过上限端点阈值(例如,第一阈值的2,000个端点),则计算机设备105可以转换到下一状态,其中可以缩短端点寿命并且增加清除间隔频率以便允许服务器在存储器中的端点数目增加时修剪更多端点。类似地,如果存储器利用率超过上限存储器阈值(例如,总存储器的0.25或25%),则计算机设备105可以转换到下一状态,其中可以缩短端点寿命并且增加清除间隔频率以便允许服务器在存储器中的端点数目增加时修剪更多端点。

在一些方面,在下一状态(例如,图4a和4b中的状态410),非tcp端点标识符组件825可以再次监测与服务器的存储器相关联的存储器利用率因子,并且确定非tcp端点参数(例如,当非tcp端点参数表示存储器利用率因子时)是否在下限存储器利用率阈值(例如,u=0.25)和上限存储器利用率阈值(例如,u=0.50)的范围之外。如果非tcp端点参数超过上限存储器利用率阈值,则非tcp端点标识符组件825可以被配置为进一步转换到下一状态(例如,图4a和4b中的状态415),其中清除过程可以更积极(例如,经由减少的终点寿命值和清除间隔)。相反,如果非tcp端点参数小于下限阈值(例如,u=0.25),则非tcp端点标识符组件825可以返回到先前状态(例如,图4a和4b中的状态405)。更进一步,如果非tcp端点参数不在下限存储器利用率阈值和上限存储器利用率阈值的范围之外,则非tcp端点标识符组件825可以将计算机设备维持在其当前状态(例如,图4a和4b中的状态410)。

在框715处,方法700可以包括响应于非tcp端点的数目在由下限阈值和上限阈值定义的范围之外而调节端点寿命值和清除间隔值。例如,在一方面,计算机设备105可以操作存储器参数调节组件830(参见图8)以基于确定非tcp端点的数目和/或存储器利用率超出下限阈值和上限阈值的范围而调节端点寿命值和清除间隔值。如上所述,可能需要调节端点寿命值和清除间隔值以便在系统中维持最佳的可用存储器级别,同时在cpu利用率和存储器消耗方面提高整体连接速度、防火墙速度、安全性和系统性能。在一些示例中,存储器参数调节组件830可以通过当非tcp端点的数目和/或存储器利用率超过阈值时从默认值减小端点寿命值和清除间隔值来调节端点寿命值和清除间隔值。在一些方面,对于端点寿命值参数和清除间隔值参数中的每个,默认值可以是不同的。例如,与端点寿命值相关联的第一默认值可以设置为60秒,而与清除间隔值相关联的第二默认值可以设置为50秒。在其他示例中,端点寿命和清除间隔的默认值可以相同。

因此,如果非tcp端点的数目和/或存储器利用率超过上限阈值(例如,对于第一阈值,n=2,000个端点或u=0.25),则执行存储器参数调节组件830的计算机设备105可以将下一状态的端点寿命值从60秒缩短到30秒。同时,计算机设备105还可以将下一状态的清除间隔值从60秒缩短到例如40秒。因此,在一些方面,存储器参数调节组件830可以通过减小指定非tcp端点必须不活动以在存储器230中被分类为空闲的时间长度的空闲阈值来减小端点寿命值。类似地,存储器参数调节组件830可以通过减少计算机设备105在触发dpc从存储器230清除到期端点之前等待的时间间隔来减小清除间隔值。

如果在后续状态处,非tcp端点的数目和/或存储器利用率小于下限阈值(例如,n=2,000个端点或u=0.25),则执行存储器参数调节组件830的计算机设备105可以从默认值(或先前调节的值)增加端点寿命值和清除间隔值。因此,在一些示例中,存储器参数调节组件830可以通过增加指定非tcp端点必须不活动以在存储器230中被分类为空闲的时间长度的空闲阈值来增加端点寿命值,并且可以通过增加计算机设备105在触发延迟过程调用(dpc)以从存储器230清除到期端点之前等待的时间间隔来增加清除间隔值。类似地,如果在给定状态(例如,图4a和4b中的状态410),非tcp端点的数目和/或存储器利用率超过上限阈值(例如,n=3,000个端点或u=0.50),则执行存储器参数调节组件830的计算机设备105可以进一步从默认值(或先前调节的值)减小端点寿命值和清除间隔值。在这些方面,计算机设备105在调节(或维持)端点寿命值和清除间隔值之前动态地监测非tcp端点参数是否在下限阈值和上限阈值的范围之外。

在框720处,方法700可以包括响应于调节后的端点寿命值和调节后的清除间隔值中的至少一个而从服务器的存储器中移除一个或多个非tcp端点。在一些示例中,从存储器中移除一个或多个非tcp端点包括从存储器中移除一个或多个空闲的非tcp端点。例如,在一个方面,计算机设备105可以操作存储器清除组件835(参见图8)以基于端点寿命值和清除间隔值从存储器230中移除多个空闲的非tcp端点。在一些示例中,从存储器中移除多个非tcp端点可以包括存储器清除组件835启动dpc过程以从存储器中的一个或多个分区清除非tcp端点。在一些方面,存储器清除组件835可以跨存储器230中的所有分区205均匀地移除空闲的非tcp端点。

现在参考图8,示出了根据一个方面的示例计算机设备105,其包括与图1相比的附加组件细节。在一些示例中,计算机设备105可以是参考图1和2描述的服务器的示例。在一个方面,计算机设备105可以包括用于执行与本文中描述的组件和功能(例如,方法300、600、700和状态机400)中的一个或多个相关联的处理功能的处理器805。处理器805可以包括单组或多组处理器或多核处理器。此外,处理器805可以实现为集成处理系统和/或分布式处理系统。在一个或多个示例中,状态机400可以由处理器805实现或执行。

计算机设备105还可以包括诸如用于存储由处理器805执行的应用的本地版本的存储器230。在一些示例中,存储器810的操作可以由参考图2和图6描述的处理器805或存储器管理器220来管理。存储器230可以包括由计算机可用的一种存储器,诸如随机存取存储器(ram)、只读存储器(rom)、磁带、磁盘、光盘、易失性存储器、非易失性存储器、以及其任何组合。另外,处理器805和存储器230可以包括和执行操作系统(未示出)。

此外,计算机设备105可以包括通信组件815,通信组件815提供用于利用如本文所述的硬件、软件和服务来与一方或多方建立和维持通信。通信组件815可以携带计算机设备105上的组件之间的通信以及计算机设备105和外部设备(诸如位于通信网络上的设备和/或串行或本地连接到计算机设备105的设备)之间的通信。例如,通信组件815可以包括一个或多个总线,并且还可以包括发射链组件和接收链组件,发射链组件和接收链组件分别与可操作以与外部设备对接的发射器和接收器相关联。

计算机设备105还可以包括用户接口组件820,用户接口组件820可操作以从计算机设备105的用户接收输入并且还可操作以生成输出以呈现给用户。用户接口组件820可以包括一个或多个输入设备,包括但不限于键盘、数字小键盘、鼠标、触敏显示器、导航键、功能键、麦克风、语音识别组件、能够接收来自用户的输入的任何其他机构、或其任何组合。此外,用户接口组件820可以包括一个或多个输出设备,包括但不限于显示器、扬声器、触觉反馈机构、打印机、能够向用户呈现输出的任何其他机构、或其任何组合。

计算机设备105可以另外包括存储器管理系统200,存储器管理系统200操作定义存储器管理器220和状态机400的一个或多个组件。例如,存储器管理系统200包括非tcp端点标识符组件825,非tcp端点标识符组件825可操作以标识在服务器的存储器中可能空闲的非tcp端点的数目并且确定非tcp端点的数目是否超过端点阈值。另外,存储器管理系统200可以包括存储器参数调节组件830,存储器参数调节组件830可操作以调节与非tcp端点相关联的一个或多个参数。例如,存储器参数调节组件830可以被配置为调节与端点阈值相关联的端点寿命值和清除间隔值。

附加地或替代地,存储器管理系统200可以包括存储器清除组件835,存储器清除组件835可操作以基于来自处理器805或存储器管理器220(参见图2)的触发来启动存储器清除。在一些方面,存储器清除组件835可以基于由存储器参数调节组件830分配的端点寿命值和清除间隔值来从计算机设备105的存储器的一个或多个分区中移除多个非tcp端点。

如在本申请中使用的,术语“组件”、“系统”等旨在包括计算机相关实体,诸如但不限于硬件、固件、硬件和软件的组合、软件、或执行软件。例如,组件可以是但不限于是在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在计算设备上运行的应用和计算设备都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。另外,这些组件可以从其上存储有各种数据结构的各种计算机可读介质来执行。这些组件可以通过本地和/或远程过程进行通信,诸如根据具有一个或多个数据分组的信号,诸如来自与本地系统、分布式系统中的另一组件交互和/或跨诸如因特网等网络通过信号的方式与其他系统交互的一个组件的数据。

此外,本文中结合设备(例如,计算机设备105)描述了各个方面,该设备可以是有线设备或无线设备。无线设备可以是蜂窝电话、卫星电话、无绳电话、会话发起协议(sip)电话、无线本地环路(wll)站、个人数字助理(pda)、具有无线连接能力的手持设备、计算设备、或连接到无线调制解调器的其他处理设备。作为对比,有线设备可以包括在数据中心(例如,云计算)中可操作的服务器。

应当理解,所公开的过程/流程图中的框的特定顺序或层级是示例性方法的说明。可以理解,基于设计偏好,可以重新排列过程/流程图中的框的特定顺序或层级。此外,可以组合或省略一些框。所附方法权利要求以样本顺序呈现各种框的元素,并不表示限于所呈现的特定顺序或层级。

提供先前的描述是为了使得所属领域的技术人员能够实践本文中描述的各种方面。对于本领域技术人员来说,对这些方面的各种修改是很清楚的,并且本文中定义的一般原理可以应用于其他方面。因此,权利要求不旨在限于本文所示的方面,而是符合与语言权利要求相一致的全部范围,其中除非特别如此陈述,否则对单数元素的引用并不旨在表示“一个并且仅一个”,而是表示“一个或多个”。词语“示例性”在本文中用于表示“用作示例、实例或说明”。本文中描述为“示例性”的任何方面不一定被解释为比其他方面优选或有利。除非另外特别说明,否则术语“一些”是指一个或多个。诸如“a、b或c中的至少一个”、“a、b和c中的至少一个”和“a、b、c或其任何组合”等组合包括a、b和/或c的任何组合,并且可以包括多个a、多个b或多个c。具体地,诸如“a、b或c中的至少一个”、“a、b和c中的至少一个”和“a、b、c或其任何组合”等组合可以是仅a、仅b、仅c、a和b、a和c、b和c、或a和b和c,其中任何这样的组合可以包含a、b或c中的一个或多个成员。本领域普通技术人员已知或稍后已知的在整个本公开中描述的各个方面的元素的所有结构和功能等同物旨在被包括在权利要求中。此外,无论在权利要求中是否明确地叙述了这样的公开内容,本文中公开的内容都不旨在致力于公众。除非使用短语“用于……的装置(meansfor)”明确叙述权利要求元素,否则不应当将权利要求元素解释为装置加功能。

普通技术人员应当理解,在可以包括多个设备、组件、模块等的系统方面来呈现各个方面或特征。应当理解和了解,各种系统可以包括附加的设备、组件、模块等,和/或可以并非包括结合附图所讨论的所有设备、组件、模块等。

结合本文中公开的实施例而描述的方法的各种说明性逻辑、逻辑块和动作可以使用被设计为执行本文中描述的功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑器件、离散门或晶体管逻辑、分立硬件组件或其任何组合中的特别编程的一者来实施或执行。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp核、或任何其他这样的配置。另外,至少一个处理器可以包括可操作以执行上述步骤和/或动作中的一个或多个的一个或多个组件。

此外,结合本文中公开的各方面而描述的方法或算法的步骤和/或动作可以直接用硬件、由处理器执行的软件模块或两者的组合来实施。软件模块可以驻留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom或本领域已知的任何其他形式的存储介质中。示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替代方案中,存储介质可以是处理器的组成部分。此外,在一些方面,处理器和存储介质可以驻留在asic中。另外,asic可以驻留在用户终端中。在替代方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。另外,在一些方面,方法或算法的步骤和/或动作可以作为一个或任何组合或一组代码和/或指令驻留在可以并入计算机程序产品中的机器可读介质和/或计算机可读介质上。

在一个或多个方面,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件实现,则这些功能可以作为一个或多个指令或代码在计算机可读介质上存储或传输。计算机可读介质包括计算机存储介质和通信介质,包括支持将计算机程序从一个地方传送到另一地方的任何介质。存储介质可以是可以由计算机访问的任何可用介质。作为示例而非限制,这种计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储装置、磁盘存储装置或其他磁存储设备、或者可以用于以指令或数据结构的形式携带或存储所需要的程序代码并且可以由计算机访问的任何其他介质。而且,任何连接都可以称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或者诸如红外线、无线电和微波等无线技术从网站、服务器或其他远程源传输软件,则同轴电缆、光纤电缆、双绞线、dsl或者诸如红外线、无线电和微波等无线技术可以被包括在介质的定义中。本文中使用的磁盘和光盘包括光盘(cd)、激光光盘、光学盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘通常用激光光学地再现数据。上述的组合也应当被包括在计算机可读介质的范围内。

虽然已经结合其示例描述了本公开的各方面,但是本领域技术人员将理解,可以在不脱离本发明的范围的情况下对上述方面进行变化和修改。通过考虑说明书或根据本文中公开的各方面的实践,其他方面对于本领域技术人员而言是很清楚的。

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