CN101051302A - 用于在计算系统上加载程序的方法和系统 - Google Patents
用于在计算系统上加载程序的方法和系统 Download PDFInfo
- Publication number
- CN101051302A CN101051302A CN200710087854.8A CN200710087854A CN101051302A CN 101051302 A CN101051302 A CN 101051302A CN 200710087854 A CN200710087854 A CN 200710087854A CN 101051302 A CN101051302 A CN 101051302A
- Authority
- CN
- China
- Prior art keywords
- page table
- program
- node
- computing
- computing node
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 22
- 230000008569 process Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 230000000717 retained effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000012846 protein folding Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5033—Allocation 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 data affinity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的实施例提供了一种用于减少高度并行或分布式计算机中的程序加械时间的方法。在一个实施例中,这通过有选择地重新使用在高度并行或分布式计算机系统的特定节点处程序的先前调用期间生成的页表中的条目来实现。
Description
技术领域
本发明通常涉及计算机系统和开发。更具体地说,本发明涉及用于减少在分布式或高度并行的计算机系统中加载程序以便执行所需的时间的处理过程。
背景技术
超级计算机系统继续被开发来解决日益复杂的计算问题。已经证明了这些系统对于包括生命科学、财务建模、流体力学、量子化学、分子动力学、天文学、气象建模和预报、以及地质建模的大量应用来说是特别有用的。超级计算机的开发人员关注大规模并行计算机体系结构,以便提供不断增加的计算能力来应用到这些应用和其他应用。
依照所谓的深蓝(blue gene)技术,由国际商业机器公司(IBM)开发(并继续开发)了一系列大规模并行系统。深蓝/L系统是可扩展的(scalable),其可以被配置有最大65,536(216)个计算节点。每一个深蓝/L节点均包括具有存储器和2个CPU的单个专用集成电路(ASIC)。深蓝体系结构已经极其成功,并且在2005年10月27日,IBM宣布深蓝/L系统已经达到了280.6teraflops的运算速度(每秒可完成280.6万亿次浮点运算),从而使其成为目前世界上最快的计算机。另外,自从2005年6月以来,在世界范围内的各个地点的深蓝/L安装占世界上最强大的前十台计算机中的5台。
IBM目前正在开发深蓝/L系统的后继产品,称之为深蓝/P。期望深蓝/P是第一个以稳定的1petaflops(每秒完成1千万亿次浮点运算)进行操作的计算机系统。与深蓝/L系统相似,深蓝/P系统是设计具有最大73,728个计算节点的可扩展系统。每一个深蓝/P节点均包括具有存储器和4个CPU的单个专用集成电路(ASIC)。整个深蓝/P系统容纳在72个机架或机柜中,每个系统具有32个节点板(每个板具有32个节点)。
除了由IBM开发的深蓝体系结构外,其他分布式计算机系统可以具有与大规模并行计算机系统类似的整体体系结构。其他分布式系统的例子包括集群系统和基于网格的系统。例如,Beowulf集群是一组计算机系统,每个计算机系统运行类似Unix的操作系统,诸如Linux或BSD操作系统。该集合中的计算机系统经由高速网络连接到小型的TCP/IP LAN中,并且安装有允许在节点间共享处理的库和程序。
在执行上述许多应用的过程中,超级计算机系统用来解决大量通常涉及为不同数据集执行基本上相同的计算的问题。这类应用的例子包括对分子相互作用进行建模,诸如,对单个蛋白质的折叠进行仿真。对于这些类型的应用而言,在任何给定节点上执行的程序使用相对少量的数据。然后,该程序进行涉及该数据的许多计算。当完成计算时,返回计算的结果。因为上千个节点正在执行相同的计算(对于不同的数据集),所以在相对短的时间段中,可以处理极其大的数据集。
在给定高度并行的超级计算机、诸如深蓝系统或者其他分布式系统中的节点的数量的情况下,要求任何单一节点的极其少量开销的操作通常总体上转换成用于该系统的大量时间。例如,由各个计算节点加载程序所需的总时间可能是相当大的。因此,总起来说,简单地将程序传送到计算节点,可能会花费相当大量的时间。在分布式系统中,出现了相同的现象,在所述分布式系统中数据集、程序等必须被传送到作为分布式系统的一部分的处理节点。因此,现有技术中需要有可以减少高度并行或分布式计算机中的程序加载时间的技术。
发明内容
本发明总体上提供了一种用于减少在高度并行或分布式计算机系统中加载程序所需的时间的方法。本发明的一个实施例提供了一种在包括多个处理节点的计算系统上加载程序的方法。该方法总体上包括:如果处理节点可用的话,则识别先前执行该程序的多个处理节点,其中,该程序与提交用于由计算系统执行的计算作业有关。该方法总体上进一步包括:向每一个识别的处理节点传送用于保留与该程序的先前执行有关的页表的消息,以及将该计算作业分派到多个处理节点。
本发明的另一个实施例包括包含有程序的计算机可读介质,当所述程序被执行时,执行用于在包括多个处理节点的计算系统上加载程序的操作。所述操作总体上包括:如果处理节点可用,则识别先前执行该程序的多个处理节点,其中,该程序与提交用于由计算系统执行的计算作业有关。所述操作总体上进一步包括:向每一个识别的处理节点传送用于保留与该程序的先前执行有关的页表的消息,以及将该计算作业分派到多个处理节点。
本发明的又一个实施例包括一种并行计算系统。该系统总体上包括多个计算节点和一控制系统,该控制系统被配置成通过执行一组操作,在多个计算节点中的至少一些计算节点上执行计算作业。所述操作总体上可以包括:如果处理节点可用,则识别先前执行程序的多个处理节点,其中,该计算作业标识将要在该并行计算系统上执行的程序。所述操作总体上可以进一步包括:向计算节点集中的至少一些计算节点传送用于保留与该程序的先前执行有关的页表的消息,以及将该计算作业分派到包括在该计算节点集中的至少一些计算节点。
附图说明
通过参考在附图中示出的本发明的实施例,可以获得实现和详细地理解本发明的上述特征、优点和目的的方式,以及对以上简要概括的本发明的更加具体的描述。
然而,应注意到,附图仅仅示例说明了本发明的典型实施例,因此,不应将视为对本发明范围的限制,对本发明来说,可以允许其他等效的实施例。
图1是示例说明根据本发明的一个实施例的大规模并行计算机系统的框图。
图2是进一步示例说明根据本发明的一个实施例的大规模并行计算机系统的框图。
图3是进一步示例说明根据本发明的一个实施例的大规模并行计算机系统的方面的框图。
图4是根据本发明的一个实施例由服务节点维护的计算节点状态表的框图。
图5是示例说明根据本发明的一个实施例用于准备计算节点集以便在高度并行或分布式计算机系统上执行计算作业的方法的流程图。
图6是根据本发明的一个实施例示例说明了高度并行或分布式计算机系统的计算节点执行计算作业的方法的流程图。
图7A-7B示例说明根据本发明的一个实施例由高度并行或分布式计算机系统的计算节点维护的页表。
具体实施方式
本发明的实施例提供了一种用于减少高度并行或分布式计算机中的程序加载时间的方法。这通过下述操作来实现:只要可能的话,就重新使用由高度并行或分布式计算机系统的特定计算节点处的程序的先前调用所加载的信息。由于当分派作业以便执行时传送到计算节点的一些数据段是存储器中不可变的程序的二进制指令,所以根据相同程序的先前调用,能够节省存储页。因此,本发明的实施例避免了否则每次控制系统将作业分派到特定计算节点时将会出现的页错误。同时,当指示开始执行特定作业时,给定的计算节点不必等待将二进制指令分页(page)到存储器中。
在此参考由IBM开发的深蓝体系结构来描述本发明的实施例。在此所述的实施例对于包括上千个处理节点的大规模并行计算机系统、诸如深蓝系统而言特别有利。然而,本发明的实施例可以适用于采用被配置成经由网络通信的多个CPU的各种并行计算机系统中。例如,实施例可以很容易地适用在诸如集群或网格之类的分布式体系结构中,在这种体系结构中,每个处理节点可能是经由本地、地区或全球网络彼此通信的计算机系统。
在下文中,描述本发明的实施例,然而,应当理解,本发明不局限于具体描述的实施例。事实上,下述特征和元素的任意组合,不管是否与不同实施例有关,预期都可以实现和实施本发明。此外,在不同实施例中,本发明提供了很多优于现有技术的优点。然而,尽管本发明的实施例可以实现优于其他可能的解决方案和/或现有技术的优点,但是,是否由给定的实施例实现特定的优点,不会对本发明构成限制。因此,下述方面、特征、实施例和优点仅仅是示例性的,并且不应视为附加权利要求的要素或限制,除非在一个或多个权利要求中明确地记载了。同样地,对“本发明”的描述不应当被视为对在此公开的任何发明主题的概括,并且也不应当被视为附加权利要求的要素或限制,除非在一个或多个权利要求中明确地描述了。
本发明的一个实施例被实现为用于与计算机系统、诸如例如图1所示和以下所述的计算环境100一起使用的程序产品。程序产品中的程序(一个或多个)定义了实施例(包括在此所述的方法)中的功能,并且能够被包含在多种信号承载介质上。示例性的信号承载介质包括但不局限于:(i)在不可写的存储介质(例如,计算机内的只读存储器设备,诸如CD-R0M驱动器可读的CD-ROM盘)上永久存储的信息;(ii)在可写的存储介质(例如,盘驱动器或硬盘驱动器内的软盘)上存储的可变信息;以及(iii)通过通信介质、诸如通过计算机或电话网络(包括无线通信)传送到计算机的信息。后一种实施例特别包括了从互联网或其他网络下载的信息。这种信号承载介质在携带有指示本发明的功能的计算机可读指令时,表示本发明的实施例。
通常,为实现本发明的实施例而执行的例程可以是操作系统或特定应用的一部分、组件、程序、模块、对象或指令序列。本发明的计算机程序通常由将由本机转换成机器可读格式并由此转换为可执行指令的大量指令组成。此外,程序包括对于程序而言本地驻留的或者在存储器中或存储设备上找到的变量和数据结构。另外,可以基于在本发明的具体实施例中实现程序的应用,标识下文所述的各种程序。然而,应当意识到,下文的任何特定术语仅仅是为了方便而使用的,由此本发明不应当被限制为仅仅用在由这种术语标识和/或暗示的任何特定应用中。
图1是根据本发明的一个实施例示例说明了高度并行的计算机系统100的框图。特别地,计算机系统100示例说明了深蓝系统的高级框图。如图所示,计算机系统100包括计算节点集110和输入/输出(I/O)节点集112。计算节点110提供了计算机系统100的计算能力。在一个实施例中,每一计算节点110均包括一个或多个CPU。另外,每一计算节点110都可以包括用来存储程序指令和对其执行指令的数据集的存储器。
在一个实施例中,计算节点110可以被配置成对于同一程序的多次调用重新使用与在计算节点110上执行的程序有关的页表。众所周知,页表提供了页面的索引以及它们的物理和逻辑地址。下面更详细地描述程序页表的重新使用。
I/O节点112可以经由功能网络160提供计算节点110和文件服务器130间的物理接口。在一个实施例中,计算节点110和I/O节点112经由控制网络150和/或功能网络160与服务器130、前端节点120和服务节点140进行通信。在深蓝系统中,I/O节点112和计算节点110的彼此不同之处仅在于:通过谁来启用网络接口,以及系统100如何使用该节点。I/O节点112也可以被配置成执行便于计算系统100的控制、引导、作业运行和调试的进程。这有助于简化在每一计算节点110上运行的操作系统内核,因为每一计算节点110仅需要与几个I/O节点112进行通信。前端节点120存储由与系统100进行交互的用户使用的编译器和其他应用。典型地,用户访问前端节点120,提交程序以便进行编译,以及将作业提交给服务节点140。
服务节点140可以包括由系统100提供的系统数据库和所有管理工具。通常,服务节点140包括被配置成处理计算节点110上的软件程序和数据的调度和加载的计算系统。在一个实施例中,服务节点可以被配置成组合一组计算节点110(被称为块),以及将作业分派到一个块,以便执行。服务节点140通常是包括操作系统、存储器、存储设备和控制台(未示出)的计算机系统。例如,深蓝/P系统使用运行Linux操作系统的计算机系统。服务节点140经由控制网络150与计算节点110进行通信。控制网络150为服务节点140提供通信信道,以便控制系统100的操作方面。
图2是根据本发明的一个实施例进一步示例说明大规模并行计算机系统的方面的框图。特别地,图2示出了示例说明深蓝/P计算机系统的方面的框图。如上所述,深蓝/P是设计具有最大73,728个计算节点110的可扩展系统。在深蓝/P系统中,每一计算节点110封装在节点卡上,并且由具有存储器214和四个CPU的单个专用集成电路(ASIC)212组成。节点板220容纳32个节点卡,每个节点卡具有一节点110。因此,每一节点板具有32个节点,每个节点110具有存储器214和4个CPU。机架230是保持32个节点板220的壳体。整个深蓝/P系统将被容纳在72个机架130中,并且每个机架中具有32个节点板220。因此,整个深蓝/P系统将具有最大294,912个CPU(72个机架×32个节点板×32个节点×4个CPU)。
深蓝/P计算机系统包括多个数据通信网络。位于一些节点板220上的I/O处理器处理服务节点140和一组计算节点110间的数据通信。在一个实施例中,每一I/O节点112管理功能网络160上的多至1024个计算节点110的数据通信。在深蓝/P系统中,将73,728个计算节点110和1024个I/O节点配置为经由逻辑树网络和环形(torus)网络进行通信。环形网络以类似网格的结构连接计算节点110,该类似网格的结构允许每一计算节点110直接与其六个最近的邻居节点进行通信。节点110可以使用非常公知的消息传递接口(MPI)、在开发用于高度并行或集群计算机系统(例如,系统100)的应用时使用的应用编程接口,经由环形网络进行通信。任何一个计算节点110都可以经由环形网络将消息路由到另一计算节点110。
图3是根据本发明的一个实施例进一步示例说明大规模并行计算机系统的方面的框图。特别地,图3进一步示例说明了深蓝/P计算机系统的系统体系结构的视图。图3包括被示为连接到控制系统208的计算核心210的计算机系统100的所有计算节点110的表示。计算核心210经由控制系统网络150与控制系统208的服务节点140进行通信。把计算核心210通过将每一I/O节点112与计算节点集110连接的硬件控制器270连接到控制系统网络150。
计算机系统100可以被描述为具有I/O节点面的计算节点核心210,其中,由同一I/O节点112管理与1024个计算节点110的通信。在深蓝系统中,I/O节点112通过树网络214连接到计算节点110,并且通过千兆位以太网(例如,网络160),在功能上还具有广域网能力。
在一个实施例中,硬件控制器270使用JTAG网络219,与计算节点110进行通信。如已知的那样,JTAG是低级通信协议,其可以用来初始化计算节点以及使它们准备好具有加载的系统映像。JTAG网络也可以用来执行各种其他低级监视和支持功能。硬件控制器270驻留在每一机架230中,并且为控制系统208提供接口,以便配置计算节点110以及将程序指令和数据加载到计算节点的存储器214中。在深蓝/P计算机系统中,每一节点板和中平面的封装包括IDo芯片。IDo芯片为使用经由JTAG网络219发送的UDP包从服务节点接收命令的25MHz FPGA。
另外,如图3所示,计算核心210还经由功能网络160与文件服务器130和前端节点120进行通信。功能网络160可以是千兆位以太网。文件服务器130存储用于用户应用和系统映像的数据。各个计算节点通过与I/O节点112通信,来访问文件服务器。例如,计算节点可以经由NFS共享来访问文件服务器130。在一个实施例中,控制系统212包括被配置成保持用于指定与计算节点110有关的状态信息的数据表的数据库250。中平面管理控制系统(MMCS)144可以被配置成对将计算核心210中的硬件分配给不同计算作业进行管理。控制系统208还连接到功能网络160。在一个实施例,该连接允许控制系统208检测在加载了系统映像和数据文件后计算节点110何时完成引导过程。控制系统208进一步包括用于由用户和系统管理员使用的控制台260。
再次参考图3,计算核心210示例说明了容纳在机架230中的计算节点110。在深蓝系统中,计算节点被分组成处理集(pset)。pset是在一个集合中组合在一起用于与特定I/O节点112进行通信的64个节点所构成的组。在一个实施例中,计算核心210可以被划分成最大多个pset,每个pset都具有一个运行Linux操作系统内核的I/O节点112,以及64个运行作为系统映像经由控制网络150传送的计算节点内核(CNK)的计算节点110。如所描述的那样,I/O节点112为给定pset中的计算节点提供功能网络160上的通信。在深蓝/P系统中,I/O节点112可以被配置成在8和128个计算节点间进行通信。
每一计算节点110都包括在计算节点110的存储器214中存储的系统映像和数据文件218。系统映像文件和计算节点内核(CNK)218包括系统文件,诸如操作系统内核。计算节点内核218存储在每一计算节点110的存储器214中。在指示计算节点110执行任何用户应用前,通常加载系统映像文件,并且计算节点内核218通常开始执行。
为了在计算机系统100上执行计算作业,请求服务节点140将计算节点集110分配到一个块以便运行作业。由于计算节点110可能不包括任何本地永久存储器,诸如硬盘驱动器,因此,计算节点110必须加载有适当的软件以便运行作业。在一个实施例中,用户指定所需划分的特性以便执行作业。调度器280选择计算节点集110来形成用来执行作业的块。一旦选定了计算节点,就由服务节点140使用控制网络150把由调度器280选择的计算节点110(以及相应的I/O节点112)配置成一个块。一旦创建了块,就可以通过经由网络150和/或160与I/O节点112通信的控制系统208来分派作业。
在一个实施例中,服务节点140使用数据库250和节点状态表252来维护每一计算节点110上所调用的最后一个程序的表。当用户调用作业时,控制系统208确定最后运行正在分派的相同程序的任何计算节点110当前是否可用。如果计算节点110可用,那么控制系统208指示这些计算节点110保留与作业请求中标识的程序相关的页表。除与正分派的程序有关的一个页表外的所有页表都被计算节点丢弃。另外,来自被标记为无效或可写的保留页表的条目可以从保留页表中移除。现在已经从最后运行正在分派的程序的进程的存储空间中清除了由该程序的先前执行所创建或修改的任何数据。同时,保留了被标记为只读或可执行的页,并且当由计算节点110执行正在分派的作业时,所述页将不需要被加载,或者不会导致页错误(页错误是当在物理存储器中未映射所需页时由存储器管理单元产生的异常)。
现在,将程序分派到计算节点110。控制系统208指示计算节点110使用所保留的页表,而不是为正在分派的进程创建新页表。作为计算作业的一部分的任何其他进程从清除存储空间开始,并且可以通过使用按需分页(paging)进程,使用功能网络和I/O节点112将页面引入存储器中。当程序开始执行时,它尝试从存储器单元中加载第一条指令。通常,这将会触发页错误。该异常被传递到操作系统,作为响应,操作系统将所需页面从某一辅助存储源加载到物理存储器中。然而,因为来自保留页表的信息包含有效的映射,所以程序已经准备好访问信息二进制指令。对于用于该程序的所有指令而言,这种情况都将会发生。因此,可以基本上减少与保留页表有关的应用的加载时间。这特别适用于大规模并行系统、诸如深蓝系统的情形,该大规模并行系统可以分派具有不同数据集的相同作业达数千、数百万、甚至数十亿次。
图4是根据本发明的一个实施例由服务节点140维护的计算节点状态表252的框图。在一个实施例中,节点状态表252可以被存储为数据库250的一部分。如图所示,节点状态表252包括计算节点110的列表,该计算节点是与在每一节点上执行的最后一个作业匹配的给定系统的一部分。因此,当用户分派作业请求时,控制系统208可以使用节点状态表252来识别先前执行正在分派的作业的节点。
图5是根据本发明的一个实施例用于准备计算节点集110来在高度并行或分布式计算机系统上执行计算作业的方法的流程图。方法500从步骤510开始,其中,控制系统208接收作业描述以便分派到计算核心210。在一个实施例中,作业描述可以指定要执行何种应用程序、所期望的性能特性,诸如要使用的执行所述作业的计算节点110的数量或者完成作业所需的估计时间,并且作业描述可以进一步包括与给定作业有关的数据集。
在步骤520,控制系统208可以确定最后执行在作业描述中指定的应用程序的计算节点110是否可用。如果不可用,那么在步骤525,控制系统208将作业调度和分派到计算核心210。另外,一旦计算节点110完成了处理作业,控制系统208就可以在节点状态表252中记录使用了哪些计算节点110来执行所述作业。
否则,如果最后执行由作业描述所指定的应用程序的计算节点110可用,那么在步骤530,控制系统208识别在其上最后执行该应用程序的计算节点集。在步骤540,控制系统208向所识别的计算节点110发送用以保留用于在作业描述中指定的应用程序的页表的消息。在一个实施例中,控制系统经由控制网络270与受影响的计算节点110进行通信。如下所述的图6示例说明了响应于接收到保留用于应用程序的页表的消息而由计算节点110执行的动作。
在步骤550,将作业分派到计算节点,以便执行。一旦计算节点110完成了作业的执行,则在步骤560,控制系统208就可以在节点状态表252中记录使用了哪些计算节点110来执行所述作业。
图6是根据本发明的一个实施例示例说明了并行或分布式计算机系统的节点执行计算作业的方法600的流程图。方法600在步骤610开始,其中,计算节点110经由控制网络150从控制系统208接收到用于保留来自相同应用的在前调用的页表的消息。在步骤620,计算节点110识别与用户应用有关的页表。此后,开始包括步骤630-660的循环。在每次经过该循环时,计算节点110确定是保留还是丢弃来自与应用有关的页表的条目。在步骤630,计算节点110确定正在考虑中的页是否被标记为可写。如果是的话,则在步骤640,从页表中清除该页并且从存储器丢弃该页。否则,在步骤650,如果页表中的条目未被标记为可写,那么,计算节点110保留该页表条目,以便在与该页表有关的应用程序的后续调用期间使用。相反地,在步骤630,计算节点110可以确定页表中的条目是否被标记为只读(即,被标记为可执行),并且因此保留或丢弃该页。在丢弃或保留正在考虑中的页表条目后,在步骤660,计算节点110确定是否需要估计更多页表条目。如果是的话,则计算节点110返回到步骤630,并且估计另一页表条目。
否则,在步骤660,一旦已经估计了页表中的所有条目,则计算节点110就可以通过使用来自同一应用程序的先前调用的修改了的页表,来开始执行应用程序。因此,再入的页(即,仅包括可执行指令的页)在页表中保持有效,并且不必为了加载程序而被引入到计算节点的物理存储器中。
图7A和7B根据本发明的一个实施例示例说明由高度并行或分布式计算机系统的计算节点110维护的页表。如图所示,图7A表示在两个用户应用(被标记为P0和P1)已经完成执行后计算节点110的状态。虚拟存储器表710示出了由进程P0使用的4个页面(页0、1、2和3)。进程P0包括三页(页0、1和3)可执行指令,以及被标记为不可执行(即,被标记为可写数据)的单个页面(页2)。页表715将进程P0使用的虚拟存储器地址映射到物理存储器730中的地址。特别地,页0、1、2和3被分别映射到物理存储器730中的页1、4、3和7。如图所示,页表715包括示出了从所处的虚拟页到物理存储器730的映射的列716,表示页是否可执行的列717,以及表示页表条目是否有效的列718。类似地,页表725将进程P1使用的页720映射到物理存储器730中的页。进程P1包括单页可执行指令(页1)以及三个数据页(页1、2和3)。页表725将进程P1使用的虚拟存储器地址映射到物理存储器730中的地址。如图所示,页0、1、2和3被分别映射到物理存储器730中的页0、2、5和6。
图7B示例说明了在从控制系统208接收到准备第二次执行进程P0的消息后图7A的计算节点110的状态。作为响应,计算节点110已经从页表715中丢弃了某些条目,并且改变了其他条目的值。例如,计算节点110可以根据图6所示的方法600,修改页表715。如图所示,已经丢弃了用于进程P1的页表725。然而,因为计算节点110正打算再次执行P0,所以已经保留了页表715。页表715中的条目继续将页0、1和3从虚拟存储空间710分别映射到物理存储器735中的页1、4和7。然而,已经移除了用于虚拟存储页2的页表条目。如图所示,页表715现在示出了用于页2的条目是无效的。另外,所示的值存在于物理存储器735的页3中,其中,在进程P0的先前调用被显示为已经设置为空期间,映射该页。当再一次执行程序P0时,将不会出现页0、1和3的页错误。
可以使用本发明的实施例来减少在分布式或高度并行的计算机系统中加载程序以便执行所需的时间。这通过重新使用在特定计算节点处在程序的先前调用期间创建的某些页表条目来实现。因此,整体上减少了必须分页到计算节点的存储器中的页数,从而减少了程序加载时间。在可以多次执行相同作业的大规模并行系统和分布式或集群系统中,对整个系统性能的改进可能是很重要的,即使各个计算节点处的改进可能是相对最小的。
尽管上文针对本发明的实施例进行了描述,但是在不背离本发明的基本范围的情况下,可以设计出本发明的其他实施例和进一步的实施例,并且本发明的范围由以下的权利要求来确定。
Claims (16)
1.一种在包括若干个处理节点的计算系统上加载程序的方法,包括:
如果处理节点可用,则识别先前执行该程序的多个处理节点,其中,该程序与提交用于由计算系统执行的计算作业有关;
向每一个识别的处理节点传送用于保留与该程序的先前执行有关的页表的消息;以及
将该计算作业分派到多个处理节点。
2.如权利要求1所述的方法,进一步包括:记录向其分派了该计算作业的多个计算节点的指示。
3.如权利要求1所述的方法,其中,每一处理节点都至少包括CPU和存储器。
4.如权利要求1所述的方法,其中,该计算系统包括并行计算系统。
5.如权利要求1所述的方法,其中,该计算系统包括分布式计算系统。
6.如权利要求1所述的方法,其中,如果最后执行该程序的多个处理节点不可用,则分派该计算作业,以便在计算系统上执行,并且记录把该计算作业分派给哪个处理节点的指示。
7.如权利要求1所述的方法,进一步包括:响应于接收到用于保留与该程序的先前执行有关的页表的消息,而:
识别与该程序有关的页表;以及
对每一页表条目,确定该页表条目是否引用与该程序有关的可执行指令序列;
如果该页表条目引用可执行指令序列,则将该条目保留在该页表中;以及
如果该页表条目不引用可执行指令序列,则从该页表中丢弃该条目。
8.如权利要求7所述的方法,进一步包括:擦除存储器中由所丢弃的页表条目所映射到的物理存储器地址的内容。
9.一种并行计算系统,包括:
多个计算节点;以及
控制系统,被配置成通过执行操作,在多个计算节点中的至少一些计算节点上执行计算作业,所述操作包括:
如果处理节点可用,则识别先前执行程序的多个处理节点,其中,该计算作业标识将在该并行计算系统上执行的程序;
向计算节点集中的至少一些计算节点传送用于保留与程序的先前执行有关的页表的消息;以及
将该计算作业分派到包括在该计算节点集中的至少一些计算节点。
10.如权利要求9所述的并行计算系统,其中,该操作进一步包括:记录把该计算作业分派给哪个计算节点的指示。
11.如权利要求9所述的并行计算系统,其中,每一计算节点都至少包括CPU和存储器。
12.如权利要求9所述的并行计算系统,其中,分派该计算作业的操作包括:将该程序处理的数据传送到该计算节点集。
13.如权利要求9所述的并行计算系统,其中,如果最后执行程序的计算节点集不可用,则分派该计算作业,以便在并行计算系统上执行,并且记录向其分派了该计算作业的计算节点的指示。
14.如权利要求9所述的并行计算系统,其中,页表包括从分配用于存储该程序和与该程序有关的数据的虚拟存储空间到与特定计算节点有关的物理存储空间的映射。
15.如权利要求9所述的并行计算系统,其中,该操作进一步包括:响应于接收到用于保留与该程序的先前执行有关的页表的消息,而:
识别与该程序有关的页表;以及
对每一页表条目,确定该页表条目是否引用与该程序有关的可执行指令序列;
如果该页表条目引用可执行指令序列,则将该条目保留在该页表中;以及
如果该页表条目不引用可执行指令序列,则从该页表中丢弃该条目。
16.如权利要求15所述的并行计算系统,其中,所述操作进一步包括:擦除存储器中由所丢弃的页表条目映射到的物理存储器地址的内容。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/278,829 US8429218B2 (en) | 2006-04-06 | 2006-04-06 | Process restart on a compute node |
US11/278,829 | 2006-04-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101051302A true CN101051302A (zh) | 2007-10-10 |
CN100462956C CN100462956C (zh) | 2009-02-18 |
Family
ID=38576848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100878548A Active CN100462956C (zh) | 2006-04-06 | 2007-03-21 | 用于在计算系统上加载程序的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8429218B2 (zh) |
JP (1) | JP5030647B2 (zh) |
CN (1) | CN100462956C (zh) |
TW (1) | TWI414947B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053945B (zh) * | 2009-11-09 | 2012-11-21 | 中国科学院过程工程研究所 | 一种面向多尺度离散模拟的并行计算系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8346886B2 (en) * | 2004-09-08 | 2013-01-01 | Red Hat, Inc. | System, method, and medium for configuring client computers to operate disconnected from a server computer while using a master instance of the operating system |
US7844620B2 (en) * | 2007-11-16 | 2010-11-30 | International Business Machines Corporation | Real time data replication for query execution in a massively parallel computer |
US8095512B2 (en) * | 2007-11-19 | 2012-01-10 | International Business Machines Corporation | Managing database resources used for optimizing query execution on a parallel computer system |
US10599482B2 (en) | 2017-08-24 | 2020-03-24 | Google Llc | Method for intra-subgraph optimization in tuple graph programs |
US10642582B2 (en) | 2017-08-24 | 2020-05-05 | Google Llc | System of type inference for tuple graph programs method of executing a tuple graph program across a network |
US10887235B2 (en) * | 2017-08-24 | 2021-01-05 | Google Llc | Method of executing a tuple graph program across a network |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU1587592A (en) * | 1991-03-18 | 1992-10-21 | Echelon Corporation | Networked variables |
US6105053A (en) * | 1995-06-23 | 2000-08-15 | Emc Corporation | Operating system for a non-uniform memory access multiprocessor system |
US6317774B1 (en) * | 1997-01-09 | 2001-11-13 | Microsoft Corporation | Providing predictable scheduling of programs using a repeating precomputed schedule |
JPH11259318A (ja) * | 1998-03-13 | 1999-09-24 | Hitachi Ltd | ディスパッチ方式 |
US6336170B1 (en) * | 1998-10-13 | 2002-01-01 | International Business Machines Corporation | Method and system in a distributed shared-memory data processing system for determining utilization of shared-memory included within nodes by a designated application |
US6925642B1 (en) * | 1999-04-29 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Distributed computer network which spawns inter-node parallel processes based on resource availability |
JP4475614B2 (ja) * | 2000-04-28 | 2010-06-09 | 大正製薬株式会社 | 並列処理方法におけるジョブの割り当て方法および並列処理方法 |
US7356026B2 (en) * | 2000-12-14 | 2008-04-08 | Silicon Graphics, Inc. | Node translation and protection in a clustered multiprocessor system |
CN1225691C (zh) * | 2002-07-08 | 2005-11-02 | 华为技术有限公司 | 一种程序动态加载方法 |
US7143412B2 (en) * | 2002-07-25 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | Method and apparatus for optimizing performance in a multi-processing system |
GB2404827A (en) * | 2003-08-05 | 2005-02-09 | Motorola Inc | Fault containment at non-faulty processing nodes in TDMA networks |
US7181637B2 (en) * | 2003-12-02 | 2007-02-20 | International Business Machines Corporation | Packet processing system and method for a data transfer node with time-limited packet buffering in a central queue |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
CN100342335C (zh) * | 2004-09-23 | 2007-10-10 | 华为技术有限公司 | 芯片程序加载方法 |
WO2006042153A2 (en) * | 2004-10-06 | 2006-04-20 | Digipede Technologies, Llc | Distributed processing system |
-
2006
- 2006-04-06 US US11/278,829 patent/US8429218B2/en active Active
-
2007
- 2007-03-21 CN CNB2007100878548A patent/CN100462956C/zh active Active
- 2007-04-03 TW TW096111848A patent/TWI414947B/zh active
- 2007-04-04 JP JP2007098425A patent/JP5030647B2/ja active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053945B (zh) * | 2009-11-09 | 2012-11-21 | 中国科学院过程工程研究所 | 一种面向多尺度离散模拟的并行计算系统 |
Also Published As
Publication number | Publication date |
---|---|
US20070239851A1 (en) | 2007-10-11 |
US8429218B2 (en) | 2013-04-23 |
TWI414947B (zh) | 2013-11-11 |
TW200813738A (en) | 2008-03-16 |
JP2007280397A (ja) | 2007-10-25 |
CN100462956C (zh) | 2009-02-18 |
JP5030647B2 (ja) | 2012-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296500B2 (en) | System and method for large-scale data processing using an application-independent framework | |
CN1306399C (zh) | 用于网络处理器的虚拟机 | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
US7650331B1 (en) | System and method for efficient large-scale data processing | |
US8739171B2 (en) | High-throughput-computing in a hybrid computing environment | |
Willcock et al. | Active pebbles: parallel programming for data-driven applications | |
CN100462956C (zh) | 用于在计算系统上加载程序的方法和系统 | |
Milvang-Jensen et al. | BDDNOW: a parallel BDD package | |
Gao et al. | Mimir: Memory-efficient and scalable MapReduce for large supercomputing systems | |
CN116627892B (zh) | 一种数据近存储计算方法、装置和存储介质 | |
EP2443565A2 (en) | Searching regular expressions with virtualized massively parallel programmable hardware | |
CN112015765A (zh) | 基于缓存价值的Spark缓存淘汰方法及系统 | |
Zhao et al. | Workload classification model for specializing virtual machine operating system | |
Potluri et al. | Optimizing MPI one sided communication on multi-core infiniband clusters using shared memory backed windows | |
Kozlov et al. | Using RAxML-NG in practice | |
Temuçin et al. | Efficient multi-path NVLink/PCIe-aware UCX based collective communication for deep learning | |
CN110891083A (zh) | 一种Gaia中支持多作业并行执行的代理方法 | |
Wu et al. | Turbostream: Towards low-latency data stream processing | |
Perera et al. | Supercharging distributed computing environments for high-performance data engineering | |
CN112612613A (zh) | 用于在虚拟分布式异构环境下实现多gpu调度的方法和系统 | |
Xiao et al. | A hierarchical approach to maximizing MapReduce efficiency | |
Huang et al. | Improving speculative execution performance with coworker for cloud computing | |
Strumpen | Coupling hundreds of workstations for parallel molecular sequence analysis | |
Gao et al. | Memory-efficient and skew-tolerant MapReduce over MPI for supercomputing systems | |
CN1042979C (zh) | 执行具有多个可调用过程的单线程计算机程序的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |