多处理器系统中的线程分配系统和分配方法

文档序号:6378185阅读:208来源:国知局
专利名称:多处理器系统中的线程分配系统和分配方法
技术领域
本发明涉及在多个进程(或程序)中分配线程的系统和分配方法。
背景技术
通常,在Web服务器应用中,多处理器系统已经成功地被用作多线程程序的执行环境。在这种情况下,系统执行的进程是例如代理服务器和防火墙的服务器程序。当执行分布式处理时,一个服务器程序不时地被一个系统执行。
Web服务器的多线程程序响应多个客户机的异步请求重复产生和撤销任务。另一方面,在使用例如CPU(中央处理单元)服务器或CPU阵列的服务器时,执行多个具有不同性质的程序,例如计算和计算机辅助设计(CAD)。
当执行包含多线程程序的一个进程时,通过将进程中的所有线程分配到可分配的处理器中,进程的执行速度被大大提高。另一方面,当存在多个进程时,有必要通过优化系统吞吐率的方法分配线程。
当多处理器系统中的8个处理器独立执行8个进程时,吞吐率明显低于8个单独处理器执行一个进程时的吞吐率。这种效率退化的原因是用户空间的共享所产生的竞争。
在多线程程序中,线程切换的速度高于程序切换的速度。此外,由于在不同线程中间共享相同的用户空间,可以通过指针传递的形式在线程中间传递数据。线程中间数据传递的速度高于程序中间需要复制操作的数据传递。由于当在使用不同处理器执行程序的过程中以指针传递的形式执行线程中间的数据传递时,不必在硬件层次进行复制操作,所以当使用多处理器系统执行多线程程序时,多处理器系统最好具有高速缓存相关共享存储器。
作为多线程程序执行的优化结果,硬件层次的高速缓存相关性支持被加入多处理器系统。在硬件层次维护高速缓存相关性适用于经常出现的线程中间的数据传递,并且尤其适用于线程中间的通信。
如果使用高速缓存相关性协议的数据访问始终被用于准备在线程中间具有低频次通信的独立程序之间传递的数据,则从速度的角度看,这会增加不必要的处理。如果在CC-NUMA(高速缓存相关非均匀存储器访问)类型的多处理器系统中存在L2(二级)高速缓存命中失误,则会访问属于归属节点(管理数据所属的存储器)的标记存储器,并且会自动检查保存最新数据的属主节点。此外,如果使用窥探高速缓存,则始终需要向所有高速缓存广播地址,因此在只有一套地址总线的情况下不能同时产生需要进行窥探的多个存储器访问。标记存储器被设计成控制临时存储数据的状态。窥探高速缓存被用来自动管理与硬件的相关性。L2高速缓存命中失误意味着在第二级和第一级出现高速缓存命中失误,其中高速缓冲存储器具有两级结构。
因此,在多线程程序中最好并有效地在硬件上支持高速缓存相关性,但是在执行多个程序时不需要这种支持。
本发明的目的是提供控制系统的吞吐率优化的程序和分配方法。

发明内容
根据本发明的用于在包含多个处理器的多处理器系统所执行的进程中分配线程的系统包括当向多个处理器中的每个处理器分配进程中的线程时确定进程的处理效率的装置,和根据确定装置的结果选择一个处理器或多个处理器执行该进程的装置。
根据本发明的用于在包含多个处理器的多处理器系统所执行的进程中分配线程的方法包括步骤当向多个处理器中的每个处理器分配进程中的线程时确定进程的处理效率,和选择一个处理器或多个处理器执行该进程。
根据本发明,由于进程的优化分配,可以在多处理器系统不存在任何吞吐率退化的情况下执行所有进程。


图1示出了本发明的系统结构和分配状态。
图2示出了进程中线程的执行状态。
图3示出了维护高速缓存相关性的页表的例子。
图4示出了多处理器系统的例子。
具体实施例方式
下面参照附图描述本发明的系统和分配方法的优选实施例。在本说明书的图1、2和4中,代码38统指38a、38b、P1、P2和P3。
如图1所示,本发明的系统分配线程。换言之,本发明涉及多处理器系统中操作系统的调度程序。现在详细描述用于优化系统吞吐率的方法。
图2示出了操作系统32和进程38。T0到T4是进程38中的线程,各个位置的线程T0、T1、T2、T3和T4指示各个执行点。在图2中,线程T0是在用户空间36中可与线程T1、T2、T3和T4并行执行的线程。通过系统调用执行T1,并且接着执行T2、T3和T4。
如果只有图2示出的T0、T2和T3被分配到本说明书中的不同处理器,则即使在进程38最多可以并行执行3个线程的情况下,一个处理器(单处理器)的分配也涉及进入单处理器执行状态。
通常,由于共享数据,需要高速缓存相关性协议以便使用不同处理器并行执行线程T0、T2和T3。使用单处理器执行T0到T4则不需要高速缓存相关性协议。用户空间36中的数据在对应的页表中标明不需要相关性。另外,页表被用来管理每个页面的存储器的存储区,其中存储了虚拟地址和物理地址之间的对应关系。通过使用这个表格,可以进行高速缓存控制和高速缓存相关性控制。页面是指通过等长度地分割程序所得到的各个部分。
例如在图3示出的页表42中,当不需要高速缓存相关性时,在WIM(存储器/高速缓存控制位)位字段中标明此情况。由于多处理器系统40中包含的MMU(存储器管理单元)的功能,硬件30没有为用户空间36的数据访问产生高速缓存相关性协议。
然而由于在传递数据时被其它处理器执行过的程序操作,可以无法保持高速缓存相关性。例如,如果线程T5引用具有进程(其中在图2示出的T5在图4示出的处理器uP2上的执行期间不需要高速缓存相关性)的用户空间36a,则不会保持高速缓存相关性。
在上述情况下,通过改变对处理器的分配并且增加允许单处理器执行状态的T5,保持高速缓存相关性。MMU被用来帮助产生用于改变分配的事件。在页表42中,只有处于执行状态的一个处理器可以读/写数据,而其它处理器不能在用户空间36中读/写数据。在引用数据之前发生中断以打破相对T5的高速缓存相关性,并且接着将T5分配到一个处理器,该处理器与T0、T1、T2、T3和T4被分配到的处理器相同。
在图3的页表42的例子中,有关页面的读/写属性允许通过分配PP(页面保护位)位字段来省略高速缓存相关性协议。
不同处理器会看到页表42中记录的不同读/写属性内容,这是一种当在DSM(分布式共享存储器)中安装软件高速缓存时也会使用的技术。虽然在本发明中通过传送其中在DSM的软件高速缓存的节点之间已经发生页面故障的页面来得到高速缓存效应,然而在节点之间传送的是已经出现页面故障的线程。此外,页面故障是当访问存储器中不存在的页面时发生的中断。
如果单处理器执行整个进程38,则多处理器系统40会失去其存在价值。因此,本发明的系统具有以下结构,并且选择进程38进入单处理器执行状态。
图1示出的本发明的系统10包括用于当各个进程38a和38b被分配到多处理器系统40中的多个处理器(多处理器)28时,确定进程38a和38b的处理效率的确定装置12;和根据确定装置12的结果选择单处理器26或多处理器28以执行进程38a和38b的选择装置14。
确定装置12包括观察进程38a和38b的执行状态的观察部件16;和确定进程38a和38b的处理效率的确定部件18。观察部件16包括将进程38a和38b的执行时间分割成处理器26和28执行的处理时间,以及I/O(输入-输出)延迟的装置(未示出);和将处理时间与I/O延迟相比较的装置(未示出)。确定部件18根据比较装置的比较结果确定进程38a和38b的处理效率。
选择装置14包括存储器管理部件20和任务分配器22。存储器管理部件20针对存储器24中的进程38a和38b确定是否保持高速缓存相关性。任务分配器22选择多处理器或单处理器执行进程。
在本发明中,当使用确定装置12和选择装置14从其它处理器访问单处理器26执行的进程38a所处理的数据时,访问被终止并且改变到上述单处理器26。更具体地,从其它处理器的访问发生中断,以便将访问改变到单处理器26。
在本发明中,单处理器26读写将被由单处理器26执行的进程38a操作的数据,以禁止其它处理器读写数据。
下面详细描述使用上述系统10的分配方法。系统10确定当进程38a和38b中的线程被分配到各个多处理器28时的处理效率,并且选择单处理器执行或多处理器执行。
(1)即使在CPU确定处理效率时所消耗的短时间内并行执行进程,在存在输入-输出限制的情况下进行处理时其效果仍然受到限制。于是,进程38a和38b的执行时间被分成由处理器28执行的处理时间和输入-输出延迟,以便将处理时间与输入-输出延迟目比较。根据比较结果,当输入-输出延迟较长时,使用单处理器。单处理器执行图1中的进程38a。术语″输入-输出限制″表示当处理数据,即产生交换文件时,使用硬盘上的虚拟存储区。
(2)如果在包含系统10的操作系统32上工作的应用系统是单线程程序,则也可以由单处理器执行程序。在这种情况下,当操作系统32是多线程程序时,应用程序的功能类似于多线程程序。当多个线程由于期待施加输入-输出限制而没有在应用程序中并行执行时,操作系统32可以被单处理器执行。更具体地,在本发明的程序中,选择装置14选择单处理器执行。
(3)即使适于使用多处理器的进程38被单独执行,在执行多个进程38时处理效率仍然可能不佳。可以使用单处理器执行这种处理。更具体地,在本发明的系统10中,确定装置12确定单处理器执行相应进程38a和38b的处理效率,而选择装置14根据确定结果选择将单处理器用于执行进程。例如,即使多处理器适于执行图1中的进程38a,选择装置14仍会选择使用单处理器执行进程。
在包含本发明的系统10的多处理器系统40中,具有适于多处理器执行的多线程程序的进程38使用可以在硬件层次保持高速缓存相关性的多处理器28执行并行处理。
由图4中的2个处理器uP3和uP4处理进程P3。在处理器uP3和uP4中针对数据访问产生高速缓存相关性协议。
最好不被多处理器执行的进程38被单处理器执行。另一方面,软件控制方法利用MMU的支持只保持其它处理器上的高速缓存相关性。当针对用户空间36a和36b(其中处理器uP1和uP2执行图4中的各个进程P1和P2)访问数据时,不产生高速缓存相关性协议。结果,高速缓存相关性协议的带宽被压缩,使得多处理器系统40的吞吐率得到改进。
为了防止产生高速缓存相关性协议,当从处理器uP2访问进程P1时,上述中断装置导致出现访问中断。在出现中断之后,线程被从要访问的处理器uP2分配到处理器uP1。
另外,MMU控制多处理器系统40,使得处理器可以读/写由进程38执行的数据,从而禁止其它处理器读写数据。
如上所述,已经描述了本发明的实施例,但是本发明不局限于这些实施例。上述说明是根据以下假定而提供的,即高速缓存是L1(一级)高速缓存,并且单处理器执行状态表示单处理器的执行线程。相同的思路可以被应用于L2高速缓存。在这种情况下,单处理器节点进入执行状态。″单处理器节点执行状态″是这样的状态,其中属于相同节点的多个处理器执行属于一个进程的多个任务。
假定其中省略高速缓存相关性协议的空间是易于安装并且具有有利效果的用户空间,但是高速缓存相关性协议可以被应用于一部分系统空间。也就是说,在系统空间中对使用进行分类,并且高速缓存相关性协议被应用于可以省略高速缓存相关性协议的部分。
本领域的技术人员可以想到的任何修改、变化或等同方案均应被视作落在本发明的范围内。
前面已经示出和描述了多处理器系统中满足其寻求的所有目的和优点的新颖系统和分配方法。然而在本说明书和附图(其中公开了本发明的优选实施例)的基础上,本领域的技术人员可以理解本发明的许多改变、修改、变化、组合和其它用途与应用。所有这种不偏离本发明宗旨和范围的改变、修改、变化和其它用途和应用均视作被本发明所覆盖,并且仅由后面的权利要求所限定。
权利要求
1.一种用于分配由包含多个处理器的多处理器系统执行的进程中的线程的系统,包括当向多个处理器中的各个处理器分配进程中的线程时确定进程的处理效率的装置;和根据确定装置的结果选择一个处理器或多个处理器执行该进程的装置。
2.如权利要求1所述的系统,其中所述确定装置包括将所述进程的执行时间分割成由处理器执行的处理时间和输入-输出延迟的装置;和将处理时间与输入-输出延迟相比较的装置。
3.如权利要求1或2所述的系统,还包括在一个处理器执行的进程所处理的数据被其它处理器访问的情况下,从多个处理器的访问改变成所述一个处理器的所述访问的装置。
4.如权利要求3所述的系统,还包括允许所述一个处理器读/写被一个处理器执行的所述进程所处理的数据,并且禁止其它处理器读/写该数据的装置。
5.一种用于分配包含多个处理器的多处理器系统所执行的进程中的线程的方法,包括的步骤有确定当向多个处理器中的各个处理器分配进程中的线程时进程的处理效率;以及选择一个处理器或多个处理器执行进程。
6.如权利要求5所述的方法,其中所述确定步骤包含将所述进程的执行时间分割成由处理器执行的处理时间和输入-输出延迟,并且将处理时间与输入-输出延迟相比较。
7.如权利要求6所述的方法,其中在所述比较步骤中输入-输出延迟长于处理时间,并且在所述选择步骤中选择一个处理器来执行。
8.如权利要求5所述的方法,其中所述多处理器系统的操作系统包含多线程程序,多处理器系统执行的应用程序包含单线程程序,其中所述选择步骤选择一个处理器来执行。
9.如权利要求5所述的方法,其中所述确定步骤确定在多个进程中最好由多个处理器执行各个进程,并且所述选择步骤在执行多个进程时选择由一个处理器来执行。
10.如权利要求5到9任何一个所述的方法,还包含在一个处理器执行的所述进程所处理的数据被其它处理器访问的情况下,将访问改变到一个处理器的步骤。
11.如权利要求10所述的方法,还包含读/写一个处理器执行的所述进程所处理的数据,并且禁止其它处理器读/写该数据的步骤。
全文摘要
为了提供控制要优化的系统的吞吐率的系统和分配方法,本发明的用于向多处理器系统40中多个处理器28分配进程38中的线程的系统包括确定进程的处理效率的确定装置12,和根据确定装置的结果选择一个处理器或多个处理器执行进程的选择装置14。
文档编号G06F12/08GK1489062SQ0315634
公开日2004年4月14日 申请日期2003年9月4日 优先权日2002年10月11日
发明者上田真 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1