改进多处理器计算机系统的性能的制作方法

文档序号:6375671阅读:212来源:国知局
专利名称:改进多处理器计算机系统的性能的制作方法
改进多处理器计算机系统的性能
背景技术
一些计算机系统采用多个处理器。这些处理器例如可以被用来处理通过网络接收自远程计算机的信息。通常来说,在计算机处由一个或更多网络接口控制器(NIC)接收到信息,所述网络接口控制器接收根据规定的网络通信协议(例如TCP或传输控制协议)发送的信息。所接收到的信息例如可以包括针对施行与联网有关的操作的请求,所述与联网有关的操作可以被分配在多个处理器上来执行。通过允许多个处理器同时施行与联网有关的操作可以改进计算机的性能。采用多个处理器来施行与联网有关的操作的一种已知的体系结构是“对称多处理器”(SMP)系统体系结构。
在SMP系统上处理通过网络接收到的信息的一种传统技术中,计算机上的NIC接收数据分组并且将其与分组描述符一起存储在存储器中,所述分组描述符包括标识出所述数据在存储器中的位置的指针信息。如果当前没有在处理某一先前分组,则生成去到其中一个处理器的中断并且中断服务例程(ISR)执行,从而暂停来自NIC的另外的中断,同时请求延迟规程调用(DPC)运行在被选择来应对所述分组的处理器上。在DPC执行时,从存储器获取一个或更多数据分组和描述符以建立阵列,并且所述处理器随后发起对分组的处理。在DPC完成之后,重新允许来自NIC的另外的中断,从而可以将附加的分组分配到一个或更多其他处理器。在一些传统的多处理器体系结构中,一个或更多处理器可以具有相关联的存储器。举例来说,在非均匀存储器存取(NUMA)系统中,一个或更多处理器可以包括NUMA节点,所述NUMA节点具有由该NUMA节点内的处理器最为高效地存取的相关联的存储器地址集合。在这方面,系统上的特定NUMA节点可以被视为“最接近”与该节点相关联的存储器地址集合,并且“远离”分别与系统上的其他NUMA节点相关联的其他存储器地址集合。在启用了 NUMA的系统中,第一 NUMA节点对与第二 NUMA节点相关联的存储器地址的存取慢于第二 NUMA节点所将进行的存取。

发明内容
本发明的一些实施例提供了用于改进多处理器计算机系统的性能和/或可扩展性的方法和设备,比如采用NUMA和/或其他系统体系结构的多处理器计算机系统。举例来说,本发明的一些实施例提供了用于配置系统的工具和/或技术,从而可以把与通过网络接收到的信息(例如分组和/或其他通信量)相关联的处理任务分配在系统上的多个处理器当中,从而可以高效地施行所述任务。举例来说,在本发明的一些实施例中,可以将多个配置选项(其例如被实施为“简档”集合)呈现给用户(例如系统管理员)以供选择,其中每一个配置选项与处理通过网络接收到的信息的一种特定模式相关联。在这方面,本发明的发明人认识到,可能不存在单一的一种配置方案对于每一种类型的系统都是适当且最优的。因此,本发明的一些实施例提供了多个配置选项,从而用户可以选择利用特定系统的特性和/或能力的一个或更多配置选项。在这里所描述的一个示例性配置选项中,可以将特定处理器与系统上的特定NIC联合,从而使得与特定NIC联合的(多个)处理器施行与该NIC通过网络接收到的信息相关联的与联网有关的操作。可以通过许多方式将处理器与NIC联合。举例来说,在下面描述的一种技术中,可以通过把由NIC生成的ISR和DPC的执行指派给处理器来将处理器与NIC联合。当然,任何适当的标准都可以定义处理器与NIC的联合,因为本发明的实施例不限于任何具体的实现方式。一个示例性配置选项可以允许用户指明处理器与NIC的初始联合是否使得一个或更多处理器由于与联网有关的任务数量不成比例而负荷过重并且同时其他处理器的利用率不足,可以将各项任务动态地重新分配到系统上的其他处理器以便实现总体处理负荷的更加均匀的分配。其结果是,系统可以更加高效地施行与联网有关的任务。 在本发明的一些实施例中,对于多处理器系统的配置可以考虑到所述系统所采用的体系结构的特性。举例来说,与NUMA系统一起使用的本发明的实施例可以使得将处理任务分配在系统上的各个NUMA节点当中。如果希望对处理任务进行后续的重新分配,则在施行重新分配时可以使得被指派给一个NUMA节点的处理器不会尝试存取与另一个NUMA节点相关联的存储器地址,因为这样会显著降低系统性能。本发明的一些实施例可以提供被设计成有益于NUMA系统的其他特征。举例来说,本发明的一些实施例可以允许执行在NUMA系统上的应用决定在其上施行对应于所述应用的与联网有关的处理的NUMA节点,从而所述应用可以在所述相同的NUMA节点上执行。其结果是,可以防止尝试存取与另一个NUMA节点相关联的存储器地址。前述内容是本发明的非限制性概要,其由所附权利要求书限定。


附图不意图是按比例绘制的。在附图中,在各图中示出的每一个完全相同或接近完全相同的组件由相同的附图标记表示。为了清楚起见,在每一幅图中可能没有标记出每一个组件。在附图中
图I是描绘出可以在其中实施本发明的实施例的系统的一些示例性组件的方框 图2是描绘出根据本发明的一些实施例的用于将一个或更多处理器与一个或更多网络接口控制器(NIC)联合的示例性处理的流程 图3是描绘出根据本发明的一些实施例的用于将处理器与NIC联合的示例性技术的方框 图4是描绘出根据本发明的一些实施例的用于将处理器与NIC联合的示例性技术的方框 图5是描绘出根据本发明的一些实施例的用于将一个或更多NUMA节点内的处理器与NIC联合的示例性技术的方框 图6是描绘出根据本发明的一些实施例的用于重新分配与通过网络接收到的信息相关联的处理任务的示例性处理的流程 图7是描绘出根据本发明的一些实施例的用于定位将要为之重新分配处理任务的处理器的示例性处理的流程 图8是描绘出根据本发明的一些实施例的NIC可以借以获取新处理器以便应对处理任务的示例性处理的流程图;图9是描绘出根据本发明的一些实施例的用于确定代表将从一个处理器重新分配到另一个的处理任务的一个或更多分区的示例性处理的流程 图10是描绘出根据本发明的一些实施例的用于向应用标识出应对连接的节点的示例性处理的流程 图11是适于为用户给出 各种配置选项以供选择的示例性用户接口的图示;以及 图12是描绘出可以被用来实施本发明的实施例的各个方面的示例性计算机的方框图。
具体实施例方式本发明的一些实施例可以改进多处理器计算机系统在处理通过网络接收到的信息时的性能。举例来说,本发明的一些实施例可以允许对系统进行配置,从而可以把通过网络接收到的信息分配在多个处理器当中以进行高效的处理。用户(例如系统管理员)可以从多个配置选项当中进行选择,其中每一个配置选项可以总体上被视为“策略”或简档,其定义一种处理通过网络接收到的信息的模式。通过选择一个或更多配置选项,用户可以指明如何处理通过网络接收到的信息,以便利用系统的特性。举例来说,在一些实施例中,多处理器系统可以被配置成使得系统上的特定处理器与特定NIC联合,从而与NIC联合的每一个处理器施行与由该NIC接收到的信息相关联的与联网有关的操作。举例来说,在一些实施例中,与NIC联合的处理器可以处理由该NIC生成的ISR和DPC(或者任何其他适当的(多个)操作类型),而不处理由系统上的任何其他NIC生成的操作。在本发明的一些实施例中,如果处理器与NIC的初始联合使得一个或更多处理器变得负荷过重并且同时其他处理器的利用率不足,则可以动态地重新分配处理任务,以便获得总体处理负荷在系统上的各个处理器之间的更加均匀的分配。其结果是,系统可以高效地利用可由其支配的处理资源来施行与联网有关的操作。本发明的一些实施例对于采用NUMA体系结构的系统提供了特别的好处。举例来说,一些实施例可以允许把与联网有关的任务分配在各个处理器上,从而利用多个NUMA节点。如果随后施行对于处理任务的重新分配,则在施行重新分配时可以使得被指派给一个NUMA节点的处理器不会尝试存取与另一个NUMA节点相关联的存储器地址,正如下面将描述的那样。图I中在概念上描绘出可以在其上实施本发明的实施例的示例性多处理器系统200。系统200包括处理器205a — 205m、操作系统210以及NIC 215、220和225。在系统200中,每一个NIC 215、220和225从网络230接收信息,并且与操作系统210进行通信以便把对于所述信息的处理分配到特定的处理器205a - 205m。在图2中示出了可以被施行来对系统200进行配置以便施行与联网有关的任务的示例性处理100。在高级别下,处理100涉及将系统200中的一个或更多处理器205a —205m与一个或更多NIC 215,220和225联合,从而使得由相关联的(多个)处理器对由特定NIC接收到的信息施行处理,并且随后在一个或更多处理器变得负荷过重并且同时其他处理器的利用率不足的情况下重新分配(例如基于运行时间的条件动态地重新分配)处理任务。作为一个例子,可以在系统200的用户(例如管理员)提供输入以便选择(比如从操作系统210所呈现的一个集合当中进行选择)针对系统200的一个或更多配置选项时施行处理100。例如可以通过用户接口为用户呈现配置选项,但是本发明的实施例不限于这样的实现方式。举例来说,用户可以执行一个或更多已编程例程来施行处理100,或者可以采用任何其他适当的技术。在处理100开始时,在步骤105中将一个或更多处理器与系统中的一个或更多NIC联合。图3提供了特定处理器205a - 205m与特定NIC 215,220和225的联合的概念性表示。例如可以在操作系统210所施行的启动处理期间随着NIC 215,220和225变为对其可见并可用而施行联合。操作系统210例如可以确定每一个NIC 215、220和225是否处于已连接状态,如果是的话则把特定处理器205a — 205m与特定NIC 215、220和225联合。在图3所示的例子中,步骤105的结果是将总共13个处理器当中的6个(即处理器205a — 205f)与NIC 215联合,并且将剩余的7个处理器(即处理器205g — 205m)与NIC 220联合。当然,图3中描绘的联合方式仅仅是说明性而非限制性的。举例来说,可以将任何适当数目和设置的处理器与特定NIC联合,因为本发明的实施例在这方面不受限制。在一些实施例中,作为将处理器与特定NIC联合的结果,所述处理器执行由该NIC生成的ISR和DPC,而不执行由系统上的任何其他NIC生成的ISR和DPC。因此,当有多个处理器与之联合的NIC接收 到分组并且生成ISR或DPC时,其选择与该NIC相联合的其中一个处理器来处理对应于所述分组的ISR或DPC。在本发明的一些实施例中,不同的配置选项可以指明用于将处理器与NIC联合的不同标准。举例来说,在一些实施例中,与具有较小带宽的其他NIC相比,可以将具有更大带宽的NIC与成比例地更多数目的处理器联合,以便允许系统利用高速连接。在这方面,除了分别具有一千兆字节带宽的NIC 215和220之外,图4还描绘出具有十千兆字节带宽的NIC 225。在图4所示的说明性实例中,当NIC 215、220和225在启动期间变为对操作系统210可用并且被确定为处于已连接状态时,分别将总共13个处理器当中的4个与NIC 215和220当中的每一个联合(即处理器205a — 205d与NIC 215联合,处理器205e — 205h与NIC 220联合),同时将5个处理器与NIC 225联合(即处理器205i — 205m)。当然,图4中所示出的分配仅仅是一种示例性分配,因为可以按照任何适当的比例和设置将各个处理器与特定NIC联合。本发明的实施例不限于任何具体实现方式。举例来说,在一种替换分配中,可以将8个(或另一个数目的)处理器与NIC 225联合,并且将剩余的5个(或另一个数目的)处理器分配在NIC 215和220之间。可以采用任何适当的分配。一些实施例可以限制与特定NIC联合的处理器的数目,以便将该NIC的能力适应于应对预定数量的处理器。举例来说,如果NIC 225只能够支持4个处理器,则只能将4个(或更少)处理器与NIC 225联合,并且可以将剩余的9个处理器分配在NIC 215和220之间。可以采用将处理器与NIC联合的任何适当方式(认识到任何适当的(多项)约束),因为本发明的实施例在这方面不受限制。某些实现方式可以包括被分组到各个NUMA节点中的处理器。因此,本发明的一些实施例提供了允许将处理器与NIC联合的配置选项,从而对于与联网有关的任务完全利用系统上的可用NUMA节点。举例来说,一些实施例可以允许将系统上的每一个NUMA节点中的各个处理器与特定的启用了 NUMA的NIC联合,从而允许将通信量分配在系统上的各个NUMA节点当中。在图5中描绘出一个例子,其中NIC 215、220是启用了 NUMA的NIC,而NIC 225则未启用NUMA。处理器205a — 205i被分组到3个NUMA节点中,其中处理器205a — 205c包括NUMA节点505,处理器205d — 205f包括NUMA节点510,并且处理器205g — 205 包括NUMA节点515。在所示实例中,当NIC 215、220和225变为对于操作系统210可用时,来自每一个NUMA节点505、510和515的处理器被指派给NIC 215和220当中的每一个。因此,来自NUMA节点505的处理器205a、来自NUMA节点510的处理器205d和来自NUMA节点515的处理器205g与NIC 215联合,并且来自NUMA节点505的处理器205b、来自NUMA节点510的处理器205e和来自NUMA节点515的处理器205h与NIC 220联合。在一些实施例中,处理器在被指派给未启用NUMA的NIC之前被指派给启用了 NUMA的NIC,以便使得每一个启用了 NUMA的NIC与来自每一个NUMA节点的至少一个处理器联合的概率最大化,从而允许将通信量分配在系统上的各个NUMA节点当中。举例来说,可以将处理器指派给启用了 NUMA的NIC,直到为每一个NIC指派了其所能支持的最大数目的处理器为止。在这些实施例中,随后可以将处理器指派给未启用NUMA的NIC。因此,在图5所示的实例中,每一个启用了 NUMA的NIC 215和220具有支持两个处理器的能力。在将处理器205a、205d指派给NIC 215并且将处理器205b、205e指派给NIC 220之后,随后将处理 器205j — 205m指派给NIC 225。当然,本发明的实施例不限于这样的实现方式,因为可以按照任何适当的顺序和/或方式将处理器指派给具有各种特性的NIC。作为图5中所示的示例性配置的结果,可以把来自NIC 215和220的通信量分配在系统上的可用NUMA节点505、510和515当中。当然应当认识到,图5中描绘的示例性分配仅仅是说明性的。举例来说,从图5中可以看出,某些NUMA节点中的处理器(即处理器205c、205f和205i)没有被使用,并不需要是这种情况。此外,不需要将通信量分配到所有NUMA节点或者如图所示地均匀分配在各个NUMA节点当中。可以采用任何适当的实现方式,因为本发明的实施例在这方面不受限制。再次参照图2,在步骤105中将处理器与NIC联合之后,处理100继续到步骤110,其中将处理任务动态地从一个或更多处理器重新分配到一个或更多其他处理器。作为一个例子,可以在满足一条或更多条标准时施行处理任务的重新分配。在下面描述的一种示例性实现方式中,在确定系统上的一个或更多处理器超出预定的阈值利用率水平时施行重新分配。但是应当认识到,可以在满足任何一条或更多条标准时施行重新分配,其中包括与处理器利用率无关的标准,因为本发明的实施例在这方面不受限制。在图6中描绘出用于在确定一个或更多处理器负荷过重时重新分配处理任务的示例性处理600。处理600例如可以由系统200上的每一个单独的处理器以周期性的预定义间隔(例如每两秒钟)施行。但是应当认识到,用于确定一个或更多处理器是否负荷过重以及/或者重新分配处理任务的处理可以由任何适当的系统组件响应于任何适当的事件和/或在满足任何适当的标准时施行,因为本发明的实施例不限于任何具体实现方式。在处理600开始时,在步骤605中对于特定处理器计算加权平均利用率。举例来说,步骤605可以包括由处理器基于繁忙和空闲的周期计数利用本领域内已知的用于测量处理器负载的技术计算加权平均利用率。可以采用任何适当的技术来计算加权平均利用率,因为本发明的实施例在这方面不受限制。处理600随后继续到步骤610,其中对于特定处理器计算加权活动水平。这也可以按照任何适当方式来施行。举例来说,在一些实施例中,所述加权活动水平是基于由处理器在给定区间期间应对的互联网协议(IP)数据报的数目,其中包括对应于目的地为本地的节段的IP数据报以及目的地为远程设备的数据报。当然,本发明的实施例不限于此,因为可以利用(多种)任何适当的技术来计算加权平均活动水平。在步骤610完成之后,处理600继续到步骤615,其中确定所述处理器是否是“待解放处理器”。在这方面,可以出于各种原因将处理器标示为将解放其处理责任的处理器。举例来说,出于功率节省的原因,可以将处理器标示为将解放其责任的处理器,从而不会消耗功率来令其保持运行。如果在步骤615中确定所述特定处理器不是待解放处理器,则处理600继续到步骤620,其中确定该处理器是否繁忙。所述确定例如可以是基于对在步骤605和/或610中收集的信息以及/或者其他信息进行分析。可以按照任何适当的方式施行分析,比如通过确定在步骤605和/或610中收集的信息是否表明所述处理器的加权平均利用率和/或加权活动水平超出一个或更多预定阈值。举例来说,在一些实施例中,在处 理器的加权平均利用率超出90%之后可以将其视为“繁忙”,直到其加权平均利用率低于70%为止。当然,可以使用(多项)任何适当的测量来确定处理器是否繁忙。在示例性处理600中,如果在步骤620中确定处理器不繁忙,则处理600完成。其结果是,执行示例性处理600的处理器不被标识为应当从中转移处理任务的处理器。但是如果在步骤620中确定处理器繁忙,则示例性处理600继续到步骤625,其中确定所述处理器当前是否正在应对多于一个活跃分区。分区例如可以代表在处理器处借以接收信息的一个或更多连接。如果确定处理器当前没有正在应对多于一个活跃分区,则处理600完成。但是如果确定处理器正在应对多于一个活跃分区,或者在步骤615中确定所述处理器是待解放处理器,则处理600继续到步骤630,其中确定是否存在可以向其转移当前由所述处理器应对的任务的符合条件的“目标”处理器。在图7中描绘出用于确定是否存在任何符合条件的目标处理器的示例性处理700。处理700例如可以涉及由施行处理600 (图6)的处理器检查系统上的一个或更多其他处理器的特性,但是本发明的实施例不限于这样的实现方式。在示例性处理700开始时,在步骤705中确定所检查的处理器是否被指派给与执行示例性处理700的处理器相同的适配器,其表明所检查的处理器和执行示例性处理700的处理器与相同的NIC联合。如果不是的话,则确定所检查的处理器不符合作为向其转移与联网有关的任务的目标处理器的条件,并且示例性处理700完成。但是如果所检查的处理器被指派给相同的适配器,则处理700继续到步骤710,其中确定用户是否调用了 NUMA简档。已被调用的NUMA简档可以表明系统采用了 NUMA体系结构,从而可以把特定处理器分组到一个或更多NUMA节点中。如果确定用户调用了 NUMA简档,则示例性处理700继续到步骤715,其中确定所检查的处理器是否驻留在与施行示例性处理700的处理器相同的NUMA节点中。在这方面,本发明的发明人已经认识到不希望将处理任务从一个NUMA节点中的处理器转移到另一个NUMA节点中的处理器,因为这样做可能导致向其转移任务的处理器存取其他NUMA节点的存储器以完成与联网有关的任务,这可能会降低系统性能。其结果是,本发明的一些实施例防止处理任务从一个NUMA节点中的处理器转移到另一个NUMA节点中的处理器。在这方面,如果在步骤715中确定所检查的处理器不驻留在与施行示例性处理700的处理器相同的NUMA节点中,则将所检查的处理器确定为不符合作为目标处理器的条件,并且示例性处理700完成。
如果在步骤715中确定所检查的处理器处于相同的NUMA节点中,或者如果在步骤710中确定用户还没有调用NUMA简档,则示例性处理700继续到步骤720,其中确定所检查的处理器是否繁忙。该确定例如可以是基于分析针对所检查的处理器收集的信息,其类似于在步骤605和610 (图6)中收集的信息。当然,关于处理器是否繁忙的确定可以是基于任何适当标准,因为本发明的实施例在这方面不受限制。如果确定所检查的处理器繁忙,则将所述处理器确定为不符合条件,并且示例性处理700完成。如果确定所述处理器不繁忙,则将其确定为符合条件的处理器。在一些实施例中,可以将所述处理器添加到能够向其转移与联网有关的任务的目标处理器的列表或其他总集中。示例性处理700随后完成。回到示例性处理600 (图6),如果在步骤630中确定不存在符合条件的目标处理器,则示例性处理600继续到步骤635,其中确定是否可以获取新的处理器以供使用。在图8中示出了用于做出该确定的示例性处理800。示例性处理800例如可以涉及由处理器检查系统上的一个或更多其他处理器的特性,其中包括与执行示例性处理600的处理器联合 的NIC联合的那些处理器,以及与系统上的其他NIC联合的那些处理器。在处理800开始时,在步骤805中确定所检查的NIC是否当前与其最大数目的处理器联合。举例来说,系统上的每一个NIC可以具有其所能支持的最大数目的处理器,并且/或者配置选项或策略可以指明特定NIC仅与特定数目的处理器联合。可以按照任何适当的方式指明最大处理器数目。如果在步骤805中确定所检查的NIC当前与最大数目的处理器联合,则处理800继续到步骤810,其中确定是否调用了 NUMA简档,其表明系统采用了 NUMA体系结构。NUMA简档例如可以由用户或其他实体调用。如果确定还没有调用NUMA简档,则示例性处理800完成,其结论是没有将要获取的向其转移与联网有关的任务的处理器。但是如果在步骤810中确定调用了 NUMA简档,则处理800继续到步骤815,其中确定在不同于NIC当前与之联合的被指派了多于一个处理器的NUMA节点上是否存在空闲处理器。在一些实施例中,空闲处理器可以是其加权平均利用率低于20%的一个处理器,但是也可以采用处理器利用率和/或活动的任何适当测量。如果确定在NUMA节点上存在空闲处理器,则示例性处理800完成,其结论是没有将要获取的处理器。但是如果在步骤815中确定在另一个NUMA节点上存在至少一个空闲处理器,则处理800继续到步骤820,其中释放所述另一个NUMA节点上的最不活跃的处理器以供使用。可以利用任何适当的技术来确定“最不活跃的”处理器,因为本发明的实施例在这方面不受限制。举例来说,对于所述另一个NUMA节点上的每一个处理器,可以利用类似于在步骤605和610中收集的信息来识别出最不活跃的处理器。在步骤820完成后,示例性处理800继续到步骤830,其中确定在NIC当前与之联合的相同NUMA节点上是否存在空闲处理器。如果不存在,则确定没有将要获取的处理器,并且示例性处理800完成。如果在步骤830中确定在所述相同的NUMA节点上存在至少一个空闲处理器,则示例性处理800继续到步骤835,其中获取所述相同的NUMA节点上的最不活跃的处理器以供使用,并且处理800随后完成。正如在前面关于步骤815所提到的那样,可以利用任何适当的标准和/或技术识别出最不活跃的处理器,因为本发明的实施例在这方面不受限制。
回到步骤805,如果确定NIC当前没有使用其最大处理器计数,则处理800继续到步骤825,其中确定用户是否调用了 NUMA简档。如果是的话,则示例性处理800继续到步骤830,并且按照前面所描述的那样继续。如果没有,则处理800继续到步骤840,其中确定是否有空闲处理器可用。如果确定有空闲处理器可用,则获取(利用任何适当技术识别出的)最不活跃的处理器,并且处理800随后完成。如果在步骤840中确定没有空闲处理器可用,则不获取处理器,并且示例性处理800完成。再次回到步骤635 (图6),如果确定没有所能获取的新处理器,则处理600完成。但是如果在步骤635中确定可以获取新处理器,则示例性处理600继续到步骤645,其中将所述新处理器标示为目标。类似地,如果在步骤630中确定存在符合条件的目标处理器,则在步骤640中识别出最不活跃的符合条件的处理器并且将其标示为目标处理器。在步骤640或645完成之后,处理600继续到步骤650,其中对于系统上的所有处理器确定最高平均活动水平。这例如可以反映出认识到将处理任务从一个处理器转移到另一个处理器的做法是不合期望的,这样只会使得接收处理器成为系统上的最繁忙的处理 器。因此,在本发明的一些实施例中,首先识别出系统上的利用率最高的处理器,并且只有在接收处理器上的活动水平将不会超出最繁忙处理器的情况下才转移处理任务。处理600随后继续到步骤655,其中确定被指派给所检查的处理器的任何分区是否可移动。在图9中示出了用于做出该确定的示例性处理900。示例性处理900例如可以涉及检查当前被指派给特定处理器的各个分区的特性,以便确定对将任何分区移动到另一个处理器以供执行的期望。在示例性处理900开始时,在步骤905中确定对应于特定分区的自然处理器是否属于所述处理器被指派到的相同适配器。在这方面,分区的自然处理器例如可以应对所述分区的定时器处理。如果在步骤905中确定所述分区的自然处理器属于当前适配器,则示例性处理900继续到步骤910,其中在步骤910中确定所述分区是否可以移动到自然处理器。该确定可以涉及评估任何适当的标准,其中包括(例如)自然处理器上的当前活动水平。如果在步骤910中确定所述分区可以被移动到自然处理器,则示例性处理900继续到步骤915,其中确定自然处理器是否是待解放处理器(正如前面关于图6的步骤615所描述的那样)。如果确定自然处理器不是待解放处理器,则为所述分区指派由2元组代表的权重,所述2元组包括5和对应于所述分区的活动水平。在一些实施例中,代表权重的2元组的第一分量表明期望移动分区的程度,其中更高的数字代表期望程度更高,并且所述2元组的第二分量被用来从被指派了相同第一分量的各个分区当中进行选择。举例来说,如果两个分区都被指派了第一分量为5的权重2元组,则可以把具有最大相关联活动数量的分区识别为两个分区当中的最期望移动的分区。当然,可以按照许多方式确定期望程度,因为本发明的实施例在这方面不受限制。示例性处理900随后完成。如果在步骤915中确定所述自然处理器是待解放处理器,则为所述分区指派由2元组代表的权重,所述2元组包括4和该分区的活动水平。如果在步骤910中确定所述分区无法移动到自然处理器,或者在步骤905中确定所述分区的自然处理器没有被指派给当前适配器,则示例性处理900继续到步骤920,其中确定当前处理器是否是待解放处理器。如果在步骤920中确定当前处理器是待解放处理器,则示例性处理900继续到步骤930,其中确定所述分区是否可以移动到并非待解放处理器的最不活跃的分区。如果是的话,则为所述分区指派由2元组代表的权重,所述2元组包括数字3和该分区的活动水平,并且示例性处理900完成。如果在步骤930中确定所述分区无法移动到并非待解放处理器的最不活跃分区所被指派的处理器,则示例性处理900继续到步骤935,其中确定所述分区是否可以移动到最不活跃的处理器。如果是的话,则为所述分区指派由2元组代表的权重,所述2元组包括数字2和该分区的活动水平。如果不是的话,则确定当前分区无法移动,并且示例性处理900完成。如果在步骤920中确定当前处理器不是待解放处理器,则示例性处理900继续到步骤925,其中确定所检查的分区是否当前适配器上的最当前分区。如果不是的话,则示例性处理900继续到步骤930,并且按照前面所描述的那样继续。如果确定所检查的分区是当前适配器上的最活跃分区,则确定当前分区无法被移动,并且示例性处理900完成。再次参照图6中的处理600,如果在步骤655中确定存在至少一个可移动分区,则 示例性处理600继续到步骤660,其中将最佳匹配移动到不同的处理器。如前所述,最佳匹配例如可以是其权重包括最高数值的分区。如果多个分区的权重包括相同数值,则可以把具有最高相关联活动水平的分区选为最佳匹配。当然,并非本发明的所有实施例都被限制到这样的实现方式,因为可以利用任何适当的标准和/或技术来选择将要移动的最佳分区。在步骤660完成之后,或者如果在步骤655中确定不存在可移动分区,则示例性处理600完成。另一个配置选项可以允许NUMA系统上的应用识别出正在其上施行与联网有关的任务的(多个)NUMA节点,从而可以在(多个)相同节点上施行与应用有关的处理。在这方面,正如前面所提到的那样,运行在一个NUMA节点上的尝试存取另一个NUMA节点的存储器的处理(以便例如完成与联网有关的任务、施行应用处理等等)可能会显著降低总体系统性能。因此,本发明的一些实施例允许应用识别出当前服务于借以接收所述应用正在处理的信息的连接的NUMA节点和处理器,从而所述应用自身可以在相同的节点上执行,从而避免了尝试存取与另一个NUMA节点相关联的存储器地址。当然应当认识到,本发明的实施例不限于允许应用识别出哪一个NUMA节点应对连接。举例来说,一些实施例可以允许应用指明所述应用在其上执行(或者先前在其上执行)的NUMA节点,从而可以把与联网有关的任务移动到该NUMA节点以进行处理。本发明的实施例可以按照许多方式来实施。在图10中示出了用于识别出正在应对特定连接的节点的示例性处理1000。在处理1000开始时,在步骤1005中接收到针对识别出正在应对特定连接的节点的请求。举例来说,本发明的实施例可以提供应用编程接口(API ),其可以从应用接收到针对识别出正在应对特定连接的NUMA节点的查询。但是应当认识到,本发明的实施例不限于采用可以由应用使用来提交查询的API,因为可以替换地采用任何适当的设施。在步骤1005完成之后,在步骤1010向应用提供所述节点的标识。应用可以使用该信息来例如在相同的节点上“苏醒”,以便防止尝试存取一个或更多其他NUMA节点的存储器。示例性处理1000随后完成。图11描绘出用户可以采用来调用一个或更多配置选项的示例性用户接口(UI)1100。示例性Π 1100例如可以由操作系统210 (图I - 5)呈现,以便允许用户(例如系统管理员)定义在多处理器计算机系统上的各个处理器当中分配与联网有关的任务的模式。举例来说,用户(例如系统管理员)可以从Π 1100给出的多个配置选项当中进行选择,其中每一个配置选项(例如以策略的形式)定义由系统上的各个处理器处理与联网有关的任务的模式。如图所示,示例性Π 1100允许用户通过向各个复选框提供输入从各个配置选项当中进行选择。举例来说,用户可以通过向复选框1105提供输入来调用配置选项,其中按照前面所描述的那样将特定处理器与特定NIC联合,并且可以通过向复选框1110提供输入来调用配置选项,其中按照前面所描述的那样在各个处理器之间动态地重新分配与联网有关的任务。用户可以通过向复选框1115提供输入而实现将各个处理器分组到各个NUMA节点中,其可以使得复选框1120、1125和1130可用于选择。具体来说,用户可以通过向复选框1120提供输入而实现把与联网有关的任务分配在各个NUMA节点当中,通过向复选框1125提供输入而实现在各个NUMA节点内动态地重新分配任务,以及通过向复选框1130提供输入而允许应用确定哪一个NUMA节点应对特定连接。当然,示例性UI 1100仅仅代表可以被用来为用户呈现配置选项以供选择的接口的一个例子。可以采用任何适当的替换呈现方式,因为本发明的实施例不限于任何具体的实现方式。 图12示出了可以在其上实施本发明的适当的计算系统环境1200的一个例子。计算系统环境1200仅仅是适当的计算环境的一个例子,而不意图暗示关于本发明的使用或功能的范围的任何限制。计算环境1200也不应当被解释为关于在示例性操作环境1200中示出的任何一个组件或组件组合具有任何依赖性或要求。本发明适用于许多其他通用或专用计算系统环境或配置。可能适用于本发明的公知的计算系统、环境和/或配置的例子包括(但不限于)个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机、大型计算机、包括任何前述系统或设备的分布式计算环境等等。所述计算环境可以执行计算机可执行指令,比如程序模块。一般来说,程序模块包括施行特定任务或者实施特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明还可以被实践在分布式计算环境中,其中各项任务由通过通信网络链接的远程处理设备施行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。参照图12,用于实施本发明的示例性系统包括采取计算机1210的形式的通用计算设备。计算机1210的组件可以包括(但不限于)处理单元1220、系统存储器1230以及把包括系统存储器在内的各个系统组件稱合到处理单兀1220的系统总线1221。系统总线1221可以是几种类型的总线结构当中的任一种,其中包括利用多种总线体系结构当中任一种的存储器总线或存储器控制器、外围总线以及局域总线等等。作为举例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA (EISA)总线、视频电子标准协会(VESA)局域总线以及也被称作夹层总线的外围组件互连(PCI)总线。计算机1210通常包括多种计算机可读介质。计算机可读介质可以是能够由计算机1210访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。作为举例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括按照任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,其用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息。计算机存储介质包括(但不限于)RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储装置、磁卡、磁带、磁盘存储装置或其他磁性存储设备或者可以被用来存储所期望的信息并且可以由计算机1210访问的任何其他介质。通信介质通常把计算机可读指令、数据结构、程序模块或其他数据具体实现在已调数据信号中,比如载波或其他传输机制,并且包括任何信息递送介质。术语“已调数据信号”指的是其一项或更多项特性被设定或改变的信号,所述特性被设定或改变的方式使得将信息编码在所述信号中。作为举例而非限制,通信介质包括诸如有线网络或直接布线连接之类的有线介质,以及诸如声学、RF、红外和其他无线介质之类的无线介质。前述任意各项的各种组合也应当被包括在计算机可读介质的范围内。系统存储器1230包括采用易失性和/或非易失性存储器的形式的计算机存储介质,比如只读存储器(ROM) 1231和随机存取存储器(RAM) 1232。基本输入 /输出系统1233(BIOS)通常被存储在ROM 1231中,其包含比如在开机期间帮助在计算机1210内的各个元件之间传送信息的基本例程。RAM 1232通常包含可以由处理单元1220立即存取以及/或者当前正由处理单元1220操作的数据和/或程序模块。作为举例而非限制,图12示出了操作系统1234、应用程序1235、其他数据模块1236以及程序数据1237。计算机1210还可以包括其他可移除/不可移除、易失性/非易失性计算机存储介质。仅仅作为举例,图12示出了对不可移除、非易失性磁性介质进行读或写的硬盘驱动器1240,对可移除、非易失性磁盘1252进行读或写的磁盘驱动器1251,以及对诸如⑶ROM或其他光学介质之类的可移除、非易失性光盘1256进行读或写的光盘驱动器1255。可以用在所述示例性操作环境中的其他可移除/不可移除、易失性/非易失性计算机存储介质包括(但不限于)磁带卡盒、闪存卡、数字通用盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器1241通常通过不可移除存储器接口(比如接口 1240)连接到系统总线1221,并且磁盘驱动器1251和光盘驱动器1255通常通过可移除存储器接口(比如接口 1250)连接到系统总线1221。在图12中示出了前面讨论的驱动器及其相关联的计算机存储介质,其为计算机1210提供计算机可读指令、数据结构、程序模块以及其他数据的存储。在图12中,例如硬盘驱动器1241被显示为存储操作系统1244、应用程序1245、其他程序模块1246以及程序数据1247。应当提到的是,这些组件可以与操作系统1234、应用程序1235、其他程序模块1236以及程序数据1237相同或不同。操作系统1244、应用程序1245、其他程序模块1246以及程序数据1247在这里被给出不同的附图标记是为了说明其至少是不同的拷贝。用户可以通过键盘1262和指示设备1261之类的输入设备向计算机1210输入命令和信息,所述指示设备1261在这里通常被称作鼠标、轨迹球或触摸板。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、碟形卫星信号收发天线、扫描仪等等。这些和其他输入设备常常通过耦合到系统总线的用户输入接口 1260连接到处理单元1220,但是也可以通过其他接口和总线结构连接,比如并行端口、游戏端口或通用串行总线(USB)。监视器1291或其他类型的显示设备也通过接口连接到系统总线1221,比如视频接口 1290。除了监视器之外,计算机还可以包括诸如扬声器1297和打印机1296之类的其他外围输出设备,其可以通过输出外围接口 1295连接。
计算机1210可以利用去到一个或更多远程计算机(比如远程计算机1280)的逻辑连接操作在联网环境中。远程计算机1280可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括前面关于计算机1210所描述的许多或全部元件,但是在图12中仅仅示出了存储器存储设备1281。图12中描绘的逻辑连接包括局域网(LAN) 1271和广域网(WAN) 1273,但是也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中非常普遍。当使用在LAN联网环境中时,计算机1210通过网络接口或适配器1270连接到LAN1271。当使用在WAN联网环境中时,计算机1210通常包括调制解调器1272或者用于通过WAN 1273 (比如因特网)建立通信的其他装置。调制解调器1272可以是内部的或外部的,其可以通过用户输入接口 1260或者其他适当机制连接到系统总线1221。在已联网环境中,
关于计算机1210描述的程序模块或其一些部分可以被存储在远程存储器存储设备中。作为举例而非限制,图12示出了驻留在存储器设备1281上的远程应用程序1285。应当认识至IJ,所示出的网络连接是示例性的,并且可以使用建立各个计算机之间的通信链接的其他
>j-U ρ α装直。在如此描述了本发明的至少一个实施例的几个方面之后应当认识到,本领域技术人员将很容易想到多种改动、修改和改进。这样的改动、修改和改进意图是本公开内容的一部分,并且意图落在本发明的精神和范围内。相应地,前面的描述和附图仅仅是示例性的。可以通过许多方式当中的任一种来实施前面描述的本发明的实施例。举例来说,可以利用硬件、软件或其组合来实施所述实施例。当用软件实施时,软件代码可以被执行在任何适当的处理器或处理器总集上,不管其被提供在单个计算机中还是分配在多个计算机当中。这样的处理器可以被实施为集成电路,其中一个或更多处理器处于集成电路组件中。但是也可以利用具有任何适当形式的电路来实施处理器。此外还应当认识到,可以按照许多形式来具体实现计算机,比如机架安装的计算机、台式计算机、膝上型计算机或平板计算机。此外,计算机可以被嵌入在通常不被视为计算机但是具有适当处理能力的设备中,其中包括个人数字助理(PDA)、智能电话或者任何其他适当的便携式或固定电子设备。此外,计算机可以具有一个或更多输入和输出设备。这些设备特别可以被用来呈现用户接口。可以被用来提供用户接口的输出设备的例子包括用于输出的视觉呈现的打印机或显示屏,以及用于输出的可听呈现的扬声器或其他发声设备。可以被用于用户接口的输入设备的例子包括键盘和指示设备,比如鼠标、触摸板和数位板。作为另一个例子,计算机可以通过话音识别或者通过其他可听格式来接收输入信息。这样的计算机可以通过具有任何适当形式的一个或更多网络互连,其中包括局域网或广域网,比如企业网络或因特网。这样的网络可以是基于任何适当的技术,并且可以根据任何适当的协议运营,并且可以包括无线网络、有线网络或光纤网络。此外,在这里概述的各种方法和处理可以被编码成软件,其能够在采用多种操作系统或平台当中的任一种的一个或更多处理器上执行。此外,这样的软件可以用许多适当的编程语言和/或编程或脚本化工具当中的任一种来编写,并且还可以被编辑成可执行机器语言代码或者在框架或虚拟机上执行的中间代码。在这方面,本发明可以被具体实现为利用一个或更多程序编码的计算机可读存储介质(或多个计算机可读介质)(例如计算机存储器、一个或更多软盘、紧致盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列中的电路配置或其他半导体器件、或者其他有形计算机存储介质和/或存储设备),当在一个或更多计算机或处理器上执行时,所述程序施行实施前面所讨论的本发明的各个实施例的方法。从前面的例子中可以明显看出,计算机可读存储介质可以在足够的时间内保留信息,从而被视为非瞬时性存储介质。这样的一个或多个计算机可读存储介质可以是能够传输的,从而可以把存储在其中的一个或更多程序加载到一个或更多不同的计算机或其他处理器上,以便按照前面所讨论的那样实施本发明的各个方面。这里所使用的术语“计算机可读存储介质”仅仅涵盖可以被视为制造品(例如便携式存储设备)或机器的计算机可读介质。替换地或附加地,本发明可以被具体实现为除了计算机可读存储介质之外的其他计算机可读介质,比如传播信号。这里在一般意义下使用的术语“程序”或“软件”指代可以被采用来对计算机或其他处理器进行编程的任何类型的计算机代码或计算机可执行指令集合,以便实施如前所讨论的本发明的各个方面。此外还应当认识到,根据该实施例的一个方面,在被执行时施行本发明的方法的一个或更多计算机程序不需要驻留在单个计算机或处理器上,而是可以按照模块化方式分配在多个不同的计算机或处理器当中,以便实施本发明的各个方面。 计算机可执行指令可以具有许多形式,比如由一个或更多计算机或其他设备执行的程序模块。一般来说,程序模块包括施行特定任务或者实施特定抽象数据类型的例程、程序、对象、组件、数据结构等等。在各个实施例中通常可以按照希望组合或分配各个程序模块的功能。可以按照任何适当的形式将数据结构存储在计算机可读介质中。为了说明简单起见,数据结构可以被显示为具有通过所述数据结构中的位置而相关的字段。通过为字段存储指派计算机可读介质中的位置同样可以获得这样的关系,其中所述位置传达了各个字段之间的关系。但是也可以使用任何适当的机制来建立数据结构的各个字段中的信息之间的关系,其中包括通过使用指针、标签或者建立数据元素之间的关系的其他机制。本发明的各个方面可以被单独使用、组合使用或者被使用在前面描述的实施例中没有明确讨论的各种设置中,因此其应用不限于在前面的描述中所阐述或者在附图中所示出的细节和组件设置。举例来说,一个实施例的各个方面可以按照任何方式与其他实施例的各个方面相组合。此外,本发明可以被具体实现为一种方法,参照附图描述了所述方法的一个例子。作为所述方法的一部分施行的各个步骤可以按照任何适当的方式来排序。相应地,可以构造其中以不同于所示出的顺序施行各个步骤的实施例,其中可以包括同时施行一些步骤,尽管其在说明性实施例中被显示为顺序的步骤。在权利要求书中使用诸如“第一”、“第二”、“第三”等序数项目来修改权利要求元素本身并不意味着任何优先级、优先顺序、一个权利要求元素对于另一个的顺序或者施行方法的各个步骤的时间顺序,而是仅仅被用作把具有特定名称的一个权利要求元素与具有相同名称(但是为了使用所述序数项目)的另一个元素进行区分的标记,以便区分各个权利要求元素。此外,这里使用的措辞和术语是为了进行描述而不应被视为进行限制。使用“包括”、“包含”、或“具有”、“涉及”等词是意图涵盖随后列出的项目及其等效物以及附加的项目。
权利要求
1.一种用在耦合到至少一个网络(1271,1273)的计算机(1210)的方法,所述计算机(1210)通过至少一个网络接口控制器(NIC) (1270)耦合到至少一个网络(1271,1273)并且包括多个处理器(1220),所述方法包括以下步骤 (A)接收从多个配置选项(1105,1110,1115)当中进行选择的用户输入,其中每一个配置选项指明一种处理模式,其中所述多个处理器当中的一个处理器集合与所述至少一个NIC的相应的其中之一联合,并且对通过所述相应的一个NIC接收到的信息施行与联网有关的任务。
2.权利要求I的方法,其中,所述多个处理器当中的至少一些包括非均匀存储器存取(NUMA)节点,并且至少其中一个所述配置选项指明其中所述多个NIC的至少其中之一与多个NUMA节点中的处理器联合的一种处理模式。
3.权利要求I的方法,其中,至少其中一个所述配置选项还指明把与联网有关的任务从至少一个第一处理器重新分配到至少一个第二处理器。
4.一种用在耦合到至少一个网络(1271,1273)的计算机(1210)的方法,所述计算机包括分组到多个非均匀存储器存取(NUMA)节点(505,510,515)中的第一多个处理器(205a —205i),所述计算机包括适于通过所述至少一个网络接收信息分组的启用了 NUMA的网络接口控制器(NIC) (215),其中每一个分组与分区相关联,所述方法包括 (A)把在NIC(215)处接收的分组提供到所述多个NUMA节点(505,510,515)当中的每一个中的至少一个处理器(205),其中被提供到所述多个NUMA节点当中的每一个的各个分组与不同的分区相关联。
5.权利要求4的方法,其中,所述计算机还包括未被分组到任何NUMA节点中的第二多个处理器以及未启用NUMA的NIC,并且其中所述方法还包括 (B)把在未启用NUMA的NIC处接收到的分组分配到所述第二多个处理器,其中被发送到所述第二多个处理器当中的每一个的各个分组与不同的分区相关联。
6.权利要求5的方法,其中,所述启用了NUMA的NIC支持最大数目的处理器,并且(A)包括把在所述NIC处接收到的分组提供到所述最大数目的处理器。
7.一种耦合到至少一个网络的计算机,其包括 包括多个NUMA节点(505,510,515)的多个处理器(1220); 适于通过至少一个网络连接接收经由所述至少一个网络发送的信息分组的至少一个网络接口控制器(NIC) (1270),其中每一个分组与特定的网络连接相关联,并且所述至少一个网络接口控制器(NIC) (1270)还适于把与每一个网络连接相关联的分组提供到所述多个NUMA节点当中的特定一个;以及 存储第一编程指令的至少一个存储设施(1230),所述第一编程指令定义可用来识别由所述至少一个NIC为之提供与特定网络连接相关联的分组的NUMA节点的查询设施。
8.权利要求7的计算机,其中,所述至少一个存储设施还存储定义用于在所述多个处理器当中的一个或更多个之上执行的至少一个应用的第二编程指令,并且其中第一编程指令定义第一应用编程接口,其允许所述至少一个应用识别出为之提供与特定网络连接相关联的分组的NUMA节点。
9.权利要求8的计算机,其中,所述第二编程指令允许所述应用在所识别出的NUMA节点中苏醒。
10.权利要求7的计算机,其中,所述至少一个网络连接当中的每一个与分区相关联,并且其中第一编程指令定义用于识别出为之提供与特定分区相关联的分组的NUMA节点的设施。
11.其上存储有指令的至少一个计算机可读存储介质(1230),当由通过至少一个网络接口控制器(NIC) (1270)耦合到至少一个网络(1271,1273)的包括多个处理器(1220)的计算机(1210)执行时,所述指令施行权利要求1-6中任一项所述的方法。
全文摘要
本发明的实施例可以改进多处理器系统在处理通过网络接收到的信息时的性能。举例来说,一些实施例可以允许对系统进行配置,从而可以把通过网络接收到的信息分配在多个处理器当中以进行高效的处理。用户(例如系统管理员)可以从多个配置选项当中进行选择,其中每一个配置选项与处理通过网络接收到的信息的一种特定模式相关联。通过选择配置选项,用户可以指明如何处理通过网络接收到的信息,以便利用系统的特性,比如通过把系统上的各个处理器与特定NIC联合。这样,与NIC联合的(多个)处理器可以施行与由该NIC接收到的信息相关联的与联网有关的任务。如果初始联合使得一个或更多处理器变得负荷过重,则可以把处理任务动态地重新分配给其他处理器,以便获得总体处理负荷在系统上的更加均匀的分配。
文档编号G06F15/177GK102855216SQ20121030723
公开日2013年1月2日 申请日期2012年8月27日 优先权日2011年8月26日
发明者A.达巴格, M.斯里哈兰, J.尼维尔特, G.斯里尼瓦桑, M.J.沙希德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1