专利名称:用于动态包排队的装置与方法
技术领域:
本发明一般地涉及数据处理与通信,更具体地说,本发明涉及用于以包队列(packet train)动态传输数据包的方法与装置。
背景技术:
计算机系统通过计算机网络彼此通信。这些网络包括可能在大范围内分布并且由通信链路连接的多个节点,所述多个节点典型地是计算机。计算机网络中的节点通过使用在通信链路上发送的数据包而彼此通信。数据包是信息传送的基本单元。数据包包含由各种节点提供的控制与路由信息所包围的数据。
包的发送、接收和处理具有开销或相关联的成本。即,节点处的中央处理单元(CPU)需要花费时间来接收包,检查包的控制信息,以及确定下一动作。减少包开销的一种途径是被称为包排队(packet training)的方法。包排队将个体的包合并成组(被称为队列),从而节点可以一次处理整个队列的包。术语“队列”是参考一列有轨机车。包被形成为一组有序的包,就像一列有轨机车或火车。与分别处理每个包相比,处理包队列具有更少的开销,因而具有更优的性能。
在典型的排队方法中,节点将聚集包,直到队列达到固定的目标长度。然后,节点将一次处理或重传整个包队列。由于包到达节点的速率不可预见,所以为了确保聚集的包最终被处理,当节点接收队列的第一个包时该方法将启动计时器。当计时器期满时,节点将结束队列并且对其进行处理,即使队列还未达到其目标长度。该排队方法在大量的包流量时工作良好,因为计时器从不期满。但是在少量的包流量时,节点聚集的包具有较差性能,同时徒劳等待其它包到达,并且最终的计时器期满引入了额外的处理开销。
在另一现有技术的包排队方法(该方法在David Glen Carlson的美国专利No.5,859,853中描述,并且在此将其并入作为参考)中,系统动态调整在队列中从节点发送的包的数目,以反映到达网络中的节点的包速率。包控制器确定最优的队列长度,其是在队列中将发送的最优包数目。节点还具有计时器间隔,其是发送下一队列之前的最大等待时间。包控制器对包到达速率取样,并且计算接收队列中的包数目所需的用时。该用时被称为采样间隔。当该采样间隔与历史采样间隔相比发生明显变化时,包控制器校准最优队列长度。该方法提供了包的动态排队,但是没有高效处理消息等待时间,尤其是对于低CPU使用环境中的突发模式通信流量来说。
包排队在大量通信工作负荷环境中能够节约大量的CPU负载。然而,包排队在通过网络发送的消息的等待时间方面具有不利影响。当利用包排队发送消息时,在包队列正在被聚集时消息会被延迟。因此,当使用包排队时在CPU负载和通信等待时间之间存在折衷。包排队减少了CPU上的负载,但是会增加消息通过网络被发送的时间,该增加的时间是由构建包队列时的延迟造成的。在没有用于优化CPU负载和网络等待时间之间的这种折衷的途径的情况下,计算机工业将继续承受包数据网络的亚最优性能。
发明内容
根据优选实施例,计算机数据系统包括包控制机制,该包控制机制根据处理器上的使用负载动态调整包排队。包排队的动态调整可以是使能和禁止包排队,或者调整包队列中的包数目。在优选实施例中,计算机数据系统包括指示处理器上的负载的处理器使用机制。当包控制机制确定处理器上的负载高于阈值极限时,包控制机制通过将包处理到包队列中来减少处理器负载。当处理器负载低于阈值时,包的排队被停止或减少,以便增加网络接口上的数据吞吐量。
通过如附图所示的本发明的优选实施例在下文中更为具体的说明,本发明的前述以及其它特征和优点将变得明显。
下文将结合附图来描述本发明的优选实施例,附图中类似的标记指代类似的单元,并且图1是根据优选实施例的计算机系统的框图;图2是图1中的计算机系统的更详细的框图;图3描述了根据现有技术的示例包的数据结构;图4描述了根据现有技术的示例包队列的数据结构;图5图示了根据优选实施例的方法;以及图6图示了根据另一优选实施例的方法。
具体实施例方式
本发明涉及在数据包网络中根据CPU的负载进行动态包排队。下面的综述部分意在为需要本领域的额外背景知识的个人提供包排队操作的介绍性说明以及历史。本领域技术人员可能希望跳过这一部分并且开始详细说明部分。
综述计算机网络典型地具有通过通信链路例如电话网络连接的多个节点。每个节点典型地包括处理数据的处理单元以及控制网络中跨通信链路的数据传输和接收的通信控制单元。处理单元可以包括一个或多个处理器和存储器。
节点通过使用包彼此通信,包是信息传送的基本单元。包包含由网络中的各种节点提供的控制与路由信息所包围的数据。从一个节点到另一节点的消息可以经由单个包发送,或者节点可以将消息分拆成若干较小的包,其中每个包包含消息的一部分。节点处的通信控制单元从通信链路接收包,并且将包发送到节点的处理单元进行处理。类似地,节点的处理单元将包发送到节点的通信控制单元,节点的通信控制单元跨网络传输包。
参考图3,描述了典型的包300的数据结构,其包括头部部分302和数据部分304。头部部分302包含封装数据304的控制信息。例如,头部部分302可以包含用于在网络170(图1)上路由包300的协议、会话、源或目的地信息。数据部分304可以包含电子邮件、文件、文档或想要在网络170上传输的任何其它信息。数据部分304还可以包含另一个完整的包,该包包括头部和数据部分。
包的处理具有与之相关联的开销或成本。即,需要花费时间在节点处接收包,检查包的控制信息,以及确定下一步对包做什么。降低包开销的一种途径是使用被称为包排队的方法。包排队将个体的包合并成组(被称为队列),与单独处理相同数目的包相比,这降低了开销,因为节点可以一次处理整个队列的包。
参考图4,包队列400的数据结构示例代表现有技术以及优选实施例使用的包队列结构两者。包队列400包含控制信息402、包数目404、多个长度406(长度406a、长度406b等,一直到长度406c),以及多个包408(包408a、包408b等,一直到包408c)。控制信息402可以指定其后跟随的信息是包队列的一部分。包数目604指示队列中有多少个包。在该示例中,队列中有“n”个包。长度1至长度n分别是包1至包n的长度。每个包408a至408c均可以包含头部和数据,如图3所示。包队列400作为一个单元在节点之间传送。
详细说明优选实施例图示出一种计算机数据系统,该计算机数据系统根据处理器负载动态调整用于网络节点上的网络通信流量的包排队。网络可以让计算机系统作为其节点,或者网络可以让多处理器系统中的处理器作为其节点,或者网络可以是处理器与计算机系统的组合。在优选实施例中,节点具有动态使能和禁止包排队的包控制器。适合的计算机系统在下文中描述。
参考图1,根据本发明的优选实施例示出了计算机系统100。计算机系统100是IBM eServer iSeries计算机系统。然而,本领域技术人员将意识到,本发明的机制和装置可以同样地应用于任何计算机系统,而不管计算机系统是复杂的多用户计算装置、单用户工作站还是嵌入式控制系统。如图1所示,计算机系统100包括处理器(中央处理单元或CPU)110、主存储器120、海量存储设备接口130、显示器接口140和网络接口150。这些系统组件通过使用系统总线160而被互连。海量存储设备接口130被用来将海量存储设备(例如直接存取存储设备155)连接到计算机系统100。一种特定类型的直接存取存储设备155是可读写CD RW驱动器,其可以将数据存储到CD RW 195并从CD RW 195读出数据。
处理器110可以由一个或多个微处理器和/或集成电路构成。处理器110执行主存储器120中存储的程序指令。主存储器120存储处理器110可以访问的程序和数据。当计算机系统100启动时,处理器110首先执行构成操作系统122的程序指令。操作系统122是管理计算机系统100的资源的复杂程序。这些资源中的一些是处理器110、主存储器120、海量存储设备接口130、显示器接口140、网络接口150和系统总线160。
尽管示出的计算机系统100仅包含单个处理器和单条系统总线,但是本领域技术人员将意识到,本发明可以使用具有多个处理器和/或多条总线的计算机系统来实施。此外,优选实施例中使用的接口中的每个包括单独的经完全编程的微处理器,该微处理器被用来从处理器110卸载计算密集型处理。然而,本领域技术人员将意识到,本发明可以同样地应用于简单使用I/O适配器来执行类似功能的计算机系统。
显示器接口140被用来将一个或多个显示器165直接连接到计算机系统100。这些显示器165可以是非智能(即,哑)终端或完全可编程工作站,被用来允许系统管理员和用户与计算机系统100通信。然而,需要注意,尽管提供了显示器接口140以支持与一个或多个显示器165的通信,但是计算机系统100不是必然地需要显示器165,因为与用户和其它进程的所有需要的交互可以通过网络接口150发生。
网络接口150被用来将其它计算机系统和/或工作站(例如,图1中的175)跨网络170连接到计算机系统100。无论计算机系统100会以何种方式连接到其它计算机系统和/或工作站,本发明都可以被同样地应用,而不管网络连接170是使用当今的模拟和/或数字技术还是利用未来的某些连网机制所形成的。此外,许多不同的网络协议可以被用来实现网络。这些协议是专用的计算机程序,其允许计算机跨网络170通信。TCP/IP(传输控制协议/因特网协议)是适合的网络协议的示例。
根据优选实施例的主存储器120包含数据121、操作系统122、应用123和包控制器124。数据121代表用作计算机系统100中的任何程序的输入或输出的任何数据。操作系统122是行业中被称为OS/400的多任务操作系统;然而,本领域技术人员将意识到,本发明的精神和范围不限于任何一种操作系统。应用123是处理数据121的系统中运行的任何应用软件程序。包控制器124与网络接口150中的通信控制器152结合运行,以便如下所进一步描述的那样动态调整包压缩。包控制器124包括用于与处理器的使用级别相比较的一个或多个阈值125以及用于设置包队列中的最大包数目的一个或多个最大队列尺寸126。阈值125和最大队列尺寸126在下文进一步描述。
计算机系统100使用公知的虚拟寻址机制,虚拟寻址机制允许计算机系统100的程序的行为就像它们仅仅访问单个大存储实体,而不是访问多个小存储实体(例如主存储器120和DASD设备155)。因此,尽管示出的数据121、操作系统122、应用123和包控制器124驻留在主存储器120中,但是本领域技术人员将意识到,这些项目不是必须同时全部完全地包含在主存储器120中。还应当注意,这里使用的术语“存储器”一般地指计算机系统100的整个虚拟存储器,并且可以包括耦合到计算机系统100的其它计算机系统的虚拟存储器。因此,尽管在图1中示出的应用123和包控制器124都驻留在计算机系统100的主存储器120中,但是在实际的实现中,这些软件组件可以驻留在单独的机器中并且在网络170上传输。
在这点上,重要的是要注意,尽管本发明已经在并将继续在完全功能性计算机系统的上下文中进行描述,但是本领域技术人员将意识到,本发明能够作为程序产品以多种形式发布,并且本发明可以被同样地应用,而不管被用来实际执行该发布的计算机可读的含信号媒体的具体类型。适合的计算机可读的含信号媒体的示例包括可读型媒体例如软盘和CD RW(例如,图1的195),以及传输型媒体例如数字和模拟通信链路。
网络170可以包括多个网络,例如多个局域网,每个局域网包括多个个体计算机(例如上述的计算机100)。此外,可以使用任何适合的计算机(例如作为位于纽约Annonk的IBM公司的产品的PS/2计算机、AS/400计算机或RISC System/6000计算机)来实现上述计算机。“PS/2”、“AS/400”和“RISC System/6000”是IBM公司的商标。耦合到处理器的多个智能工作站(IWS)(未示出)也可以被使用在这样的网络中。网络170还可以包括大型计算机,大型计算机可以通过适合的通信链路耦合到网络170。大型计算机可以通过使用可从IBM公司购买到的ESA/370计算机、ESA/390计算机或AS/400计算机来实现。“ESA/370”、“ESA/390”和“AS/400”是IBM公司的商标。
参考图2,示出了计算机系统100的更为详细的示意表示,该计算机系统100根据优选实施例可以用于对包排队。计算机系统100能够以如上所述的网络170上的任何计算机或者以网关服务器或大型计算机来实现。计算机系统100可以包含实现这里描述的包控制特征的硬件和软件。
计算机系统100包含经由系统总线160连接到处理器110和主存储器120的通信控制器152。计算机系统100包括能够确定处理器使用级别的处理器使用机制112。处理器使用机制112能够以硬件或软件来实现。在优选实施例中,处理器使用机制112被实现为对操作系统的API调用,其中操作系统由处理器中的硬件来支持,API调用确定运行周期与总周期数之比。所述使用机制能够使用任何方式的处理器度量来确定处理器使用或处理器负载,例如由总周期划分的等待状态任务,或使用其它适合的度量。
主存储器120包含包控制器124,包控制器124包含能够被处理器110执行的指令。在替代方案中,通过使用逻辑门、可编程逻辑器件或其它硬件组件来代替基于处理器的系统,包控制器124可以由控制电路来实现。包控制器124执行下文描述的包排队方法。包控制器124包括用于与处理器的使用级别相比较的一个或多个阈值125。阈值优选地可由用户或系统程序员利用合适的接口来选择,并且被存储在包控制器124的存储区。例如,阈值可以被设为利用对操作系统122(图1)的合适请求来改变TCP属性的进程的一部分。
在优选实施例中,包控制器124还包括一个或多个最大队列尺寸126,用于设置包队列中的包的最大数目。下面的表1示出了阈值和相关联的最大队列尺寸126的说明性示例,该最大队列尺寸126规定了包队列中的最大包数目。对于30%使用的阈值,最大队列尺寸0被设置,指示包排队被禁止。对于50%使用的阈值,最大队列尺寸50被设置(中等尺寸的包队列)。对于90%使用的阈值,最大队列尺寸100被设置(大尺寸包队列或最大尺寸的包队列)。最大队列尺寸是在发送包队列之前聚集的包数目。最大队列尺寸和这里的发明还可以和现有技术中在选定时间量之后发出包队列的计时器方法相结合。列出的阈值和关联的包队列尺寸仅仅是用于说明的目的。任何适当数量的阈值都可和关联的包队列尺寸一起使用,以获得期望的性能折衷。
表1
再次参考图2,通信控制器152包含通信前端204、通信包控制器206、包存储设备208和DMA(直接存储器存取)控制器214,所有这些组件通过通信总线212连接。DMA控制器214连接到DMA处理器210。通信前端204连接到网络170,包含用于跨网络170收发包的电路,并且被用来与耦合到网络170的其它节点通信。
当通信前端204从网络170上接收包时,该包被通信包控制器206检查,并且在被发送到DMA处理器210之前被存储在包存储设备208。DMA处理器210控制DMA控制器214。DMA控制器214从通信总线212接收包,并且通过系统总线160将包发送到处理器110。包随后被包控制器124处理并且被存储在主存储器120中。当主处理器110希望发送包到网络170时,它通过使用DMA控制器214和DMA处理器210将包从主存储器120传输到包存储设备208。通信包控制器206随后使用通信前端204将包从包存储设备208经过通信链路212传输到网络170。
尽管图2中示出了具体的硬件配置,但是本发明的优选实施例可以应用于允许包排队的任何硬件配置,而不管该硬件配置是复杂的多用户计算装置、单用户工作站还是自身不具有非易失性存储设备的网络仪器。
图5示出了根据优选实施例调整包压缩或包排队的方法500。方法500周期性地开始检查处理器使用(步骤510)。该方法可以由计时器中断或某些其它适合的工具启动,以确保该方法以适合的周期运行。如果处理器使用大于所设置的阈值(步骤540=是),则包排队被使能(步骤530)。如果处理器使用小于或等于所设置的阈值(步骤520=否),则包排队被禁止(步骤540)。阈值使用百分比可以是存储在存储器中的参数,其可以被接口到包控制机制124(图1)的适当软件所调整。
图6示出了根据优选实施例调整包压缩或包排队的另一方法600。方法600周期性地开始检查处理器使用(步骤610)。该方法可以如上所述被启动。如果处理器使用小于第一设置阈值(步骤620=是),则包排队被禁止(步骤630)。如果处理器使用大于或等于第一设置阈值(步骤620=否),则方法继续到步骤640。如果处理器使用小于第二设置阈值(步骤640=是),则最大包排队被设置为第一级别(步骤650)。如果处理器使用大于或等于第一设置阈值(步骤640=否),则最大包排队被设置为第二级别(步骤660)。阈值使用可以是在存储器中存储的参数,其可以由被接口到包控制机制124(图1)的适当软件所调整。类似地,其它实施例可以包括额外的阈值和对应的最大级别的包排队。
如上所述,当使用包排队时,存在CPU负载和通信等待时间之间的折衷。包排队减少了CPU上的负载,但是会增加将在网络上发送的消息的延迟,这是由构建包队列时的延迟造成的。本发明为计算机行业提供了一种优化CPU负载和网络等待时间之间的折衷进而改进包数据网络中的整体性能的改进途径。
本领域技术人员将意识到,在本发明的范围内可以有许多变化形式。因此,尽管本发明已参考其优选实施例被具体示出并且进行了描述,但是本领域技术人员将理解,在不背离本发明精神和范围的情况下,可以对其中的形式和细节做出这样或那样的改变。
权利要求
1.一种计算机系统,包括处理器;处理器使用机制,所述处理器使用机制指示所述处理器上的负载;网络接口,所述网络接口通过在网络上发送包队列中的多个数据包,允许所述计算机系统与网络上耦合到所述网络接口的其它节点通信;以及包控制机制,所述包控制机制根据由所述处理器使用机制指示的所述处理器上的负载,动态调整所述网络接口中的包排队。
2.如权利要求1所述的计算机系统,其中所述包控制机制根据所述处理器上的负载使能和禁止包排队。
3.如权利要求1所述的计算机系统,其中所述包控制机制根据所述处理器上的负载调整包队列的尺寸。
4.如权利要求3所述的计算机系统,其中所述包控制机制将所述处理器上的负载与多个预定阈值相比较,并且根据相应的预定阈值设置包队列的最大尺寸。
5.如权利要求4所述的计算机系统,其中所述预定阈值是由计算机数据系统的用户所设置的。
6.如权利要求1所述的计算机系统,其中所述处理器上的负载是使用API调用来确定的。
7.一种计算机实现的用于包排队的方法,包括下述步骤确定处理器上的负载;通过网络发送包队列中的多个数据包;以及根据所述处理器上的负载动态调整网络上的包排队。
8.如权利要求7所述的方法,还包括根据所述处理器上的负载使能和禁止包排队的步骤。
9.如权利要求7所述的方法,还包括根据所述处理器上的负载调整所述包队列的尺寸的步骤。
10.如权利要求9所述的方法,包括将所述处理器上的负载与多个预定阈值相比较并且根据相应的预定阈值设置包队列的最大尺寸的步骤。
11.如权利要求10所述的方法,其中所述预定阈值是由计算机数据系统的用户所设置的。
12.如权利要求7所述的方法,其中所述处理器上的负载是使用API调用来确定的。
13.一种程序产品,包括处理器使用机制,所述处理器使用机制指示处理器上的负载;包控制机制,所述包控制机制根据所述处理器上的负载动态调整包排队;以及计算机可读的含信号媒体,所述计算机可读的含信号媒体含有所述处理器使用机制和所述包控制机制。
14.如权利要求13所述的程序产品,其中所述计算机可读的含信号媒体包括可记录媒体。
15.如权利要求13所述的程序产品,其中所述计算机可读的含信号媒体包括传输媒体。
16.如权利要求13所述的程序产品,其中所述包控制机制根据所述处理器上的负载使能和禁止包排队。
17.如权利要求13所述的程序产品,其中所述包控制机制根据所述处理器上的负载调整包队列的尺寸。
18.如权利要求17所述的程序产品,其中所述包控制机制将所述处理器上的负载与多个预定阈值相比较,并且根据相应的预定阈值设置包队列的最大尺寸。
19.如权利要求18所述的程序产品,其中所述预定阈值是由计算机数据系统的用户所设置的。
20.如权利要求13所述的程序产品,其中所述处理器上的负载是使用API调用来确定的。
全文摘要
一种用于计算机数据系统的包控制机制,该包控制机制根据处理器上的使用负载动态调整包排队。包排队的动态调整可以是使能和禁止包排队,或者调整包队列中的包数目。在优选实施例中,计算机数据系统包括指示处理器上的负载的处理器使用机制。当包控制机制确定处理器上的负载高于阈值极限时,包控制机制通过将包压缩到包队列中来减少处理器负载。当处理器负载低于阈值时,包的压缩被停止或减少,以便增加网络接口上的数据吞吐量。
文档编号H04L29/06GK1848813SQ20061006705
公开日2006年10月18日 申请日期2006年3月31日 优先权日2005年4月14日
发明者M·R·芬克, C·W·格德克, T·W·哈斯克 申请人:国际商业机器公司