WO2013038566A1 - コンピュータシステム - Google Patents

コンピュータシステム Download PDF

Info

Publication number
WO2013038566A1
WO2013038566A1 PCT/JP2011/071281 JP2011071281W WO2013038566A1 WO 2013038566 A1 WO2013038566 A1 WO 2013038566A1 JP 2011071281 W JP2011071281 W JP 2011071281W WO 2013038566 A1 WO2013038566 A1 WO 2013038566A1
Authority
WO
WIPO (PCT)
Prior art keywords
computer
program
execution
assigned
computers
Prior art date
Application number
PCT/JP2011/071281
Other languages
English (en)
French (fr)
Inventor
正樹 新井
Original Assignee
富士通株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2011/071281 priority Critical patent/WO2013038566A1/ja
Priority to JP2013533448A priority patent/JP5783259B2/ja
Publication of WO2013038566A1 publication Critical patent/WO2013038566A1/ja
Priority to US14/205,435 priority patent/US9400691B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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 hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Definitions

  • the present invention relates to a computer system.
  • the computer can take various configurations depending on the purpose of use or the purpose of the system.
  • the processing capacity or hardware resources differ depending on the configuration of the computer.
  • a parallel computer as an example of a computer.
  • the parallel computer can have various system configurations depending on the number of calculation nodes or the configuration of a network connecting the calculation nodes.
  • the computer system when a plurality of programs are executed in a computer system including a plurality of computers having different configurations, the computer system may not be used efficiently.
  • an object of the present invention is to improve the use efficiency of a computer system when using a computer system in which computers having different configurations are combined.
  • One aspect of the disclosed technology can be exemplified as a management apparatus that manages allocation of processes to a plurality of computers having different processing capabilities.
  • the management apparatus is required to execute a program from a program execution computer to which management information including processing capability of each of the plurality of computers is stored and execution of the program among the plurality of computers is assigned.
  • the utilization efficiency of the computer system can be improved.
  • FIG. 1 is a diagram illustrating a configuration diagram of a computer system according to a first embodiment. It is a figure which illustrates the function of a computer system. It is a figure which illustrates the processing flow by the side of a parallel computer environment. It is a figure which illustrates the processing flow by the side of a job manager. It is a figure which illustrates the detail of the process which determines the next execution environment of a program. It is a figure which shows the example of data of a parallel computer environment table.
  • FIG. 1 illustrates a configuration of a computer system according to a comparative example.
  • the calculation node and the front-end node may be, for example, a so-called blade server or a general personal computer.
  • FIG. 2 illustrates the configuration of the computer 10 that can be used as a computation node or a front-end node.
  • the calculation node and the front-end node have an external device connected through a central processing unit (CPU) 11, a main storage device 12, and an interface 18, and execute information processing by a program.
  • external devices include an external storage device 13 and a communication interface 14.
  • Examples of the external storage device 13 include a hard disk, Solid State Drive (SSD), and the like.
  • the compute node and front end node are connected to the interconnection network by means of a communication interface 14.
  • the calculation node and the front end node may have a user interface by the input device 15, the display device 16, or the like.
  • the input device 15 is a keyboard, a pointing device, or the like, for example.
  • the display device 16 is, for example, a liquid crystal display, an electroluminescence panel, or the like.
  • the computing node and the front-end node may be provided with a removable storage medium driving device 17.
  • the removable storage medium is, for example, a Blu-ray disc, Digital Versatile Disk (DVD), Compact Disc (CD), flash memory card, or the like.
  • a single interface 18 is illustrated, but a plurality of types of interfaces 18 may be provided.
  • the interconnection network may be, for example, a Local Area Network (LAN) connected by a Network Interface Card (NIC).
  • the interconnected network may be a network connected by a communication interface such as Fiber Channel (fiber channel) or InfiniBand (InfiniBand).
  • the feature of the parallel computer illustrated in FIG. 1 is, for example, a data communication processing function between a plurality of calculation nodes and a high-speed and large-capacity calculation node.
  • a program that uses a parallel computer uses these features to increase the processing speed compared to a single-configuration computer.
  • the function of the parallel computer is not used from the start point to the end point of program execution.
  • the following state may occur temporarily or after a certain point.
  • one program is assigned a plurality of computation nodes of a parallel computer as shown in FIG. (1)
  • the program may use a part of the allocated calculation nodes.
  • the program uses calculation nodes, communication may not be performed between the calculation nodes.
  • the program communicates between computation nodes. However, as a whole parallel computer, communication limited to a certain group of calculation nodes is performed, and communication may not be performed between other calculation nodes.
  • FIG. 3 shows an example of program execution on a parallel computer.
  • the program is executed as a process on each computation node.
  • the processing of the program executed in each process is conceptually illustrated with a circle.
  • Communication between computation nodes is exemplified by a line connecting the circles and the circles in the horizontal direction or the diagonal direction.
  • the state of each computation node of the parallel computer is indicated by symbols such as ST1-ST4 and dividing the period in the time axis direction.
  • the program starts execution as a process on all the computation nodes at the start of execution.
  • communication between processes does not occur immediately after the start of program execution (state ST1).
  • One of the advantages of the parallel computer is a large-scale communication process between computation nodes. That is, it can be said that a state in which large-scale communication processing is performed between processes of each computation node as in the state ST2 utilizes one advantage of the parallel computer.
  • the programs on the parallel computer do not always communicate in this way, and there is a state in which there is no temporary communication, or a state in which communication is performed but a small amount is performed between some computation nodes (for example, state ST3). ) Is possible.
  • the computer system according to the first embodiment will be described with reference to the drawings in FIGS.
  • the computer system according to the first embodiment receives an execution status report from a program being executed on the computer system, and selects an execution environment suitable for the execution status of each program. And the computer system of Example 1 changes execution of each program to the selected execution environment.
  • FIG. 4 illustrates a configuration diagram of the computer system according to the first embodiment.
  • a plurality of parallel computer environments is an example of a plurality of computers having different processing capabilities.
  • the job manager 1 is an example of a management device.
  • the computer system of the first embodiment further connects each parallel computer environment and the job manager 1 via a network 2.
  • the network 2 may be, for example, an interconnected network similar to that shown in FIG.
  • the job manager 1 may be a blade server, a personal computer, or the like, similar to the front end node of FIG. Therefore, the configuration of the job manager 1 is the same as that illustrated in FIG.
  • Fig. 5 illustrates the functions of this computer system.
  • a plurality of programs are executed in parallel.
  • a program executed in each parallel computer environment reports its execution status to the job manager 1.
  • a code called a status description for notifying the job manager of the requested value of the computer resource for execution is described.
  • Computer resources are an example of processing capacity. Examples of computer resources include the number of calculation nodes, main storage capacity, communication speed between calculation nodes, communication bandwidth between calculation nodes, and the like.
  • the required value of the computer resource for execution is an example of a required value including the processing capability required for executing the program.
  • the processing capacity required to execute a program is a request value requested by a program execution request source to a parallel computer environment to which the program is assigned.
  • This request value is, for example, a request value set by the program execution requester to obtain an execution result at a desired time.
  • the computing node transmits the execution status of the program or a request value of an appropriate computer resource corresponding to the execution status to the job manager 1.
  • transmission information the execution status of a program or a request value of an appropriate computer resource corresponding to the execution status
  • the computing node transmits an inquiry about the change of the execution environment of the program to the job manager 1 together with the transmission information.
  • an inquiry may be transmitted from the calculation node to the job manager 1 via an interconnection network in which calculation nodes are connected as illustrated in FIG. 1 and a network 2 in which a parallel computer environment is connected.
  • a protocol such as use in Fiber Channel, InfiniBand, LAN, or the like may be used.
  • any layer may be used as the protocol layer.
  • a dedicated program for communication may be incorporated into a library function using a Media Access Control (MAC) address so that the computation node and the job manager 1 communicate with each other.
  • MAC Media Access Control
  • a program that communicates between the computation node and the job manager 1 may be incorporated into a library function so that the computation node and the job manager 1 communicate with each other.
  • RPC Remote Procedure Call
  • the function of Remote Procedure Call may be implemented in the computation node and the job manager 1
  • RPC may be used.
  • the MAC address, IP address, node name, etc. of the job manager 1 may be held as parameters in each calculation node.
  • the destination address or the like may be acquired from the operating system (OS) of the computation node in the library function.
  • an inquiry event may be transmitted to the job manager 1 according to each execution state from a program executed on a plurality of calculation nodes in one parallel computer environment. This is because the execution status of the program is different for each individual computation node.
  • the job manager 1 has an event queue for processing received inquiry events in order.
  • an inquiry from each program to the job manager 1 is taken into the event queue as an inquiry event.
  • the computer system obtains information about whether or not the execution status of each program in each calculation node is a status using the characteristics of the parallel computer, for example. Collect every moment.
  • the computer system moves the execution of the first program to a parallel computer environment with a lower function, for example.
  • the execution of the second program requires a higher function parallel computer
  • the computer system moves the execution of the second program to the higher function parallel computer. More specifically, the job manager 1 selects a parallel computer environment that matches the inquiry event, and switches the currently issued parallel computer environment from the currently executed parallel computer environment to the selected parallel computer environment. Instruct.
  • self-reporting means, for example, transmitting information to the job manager 1 from a program being executed on a computation node.
  • the job manager 1 detects the execution status of the program in each parallel computer environment.
  • the compiler when the compiler detects a loop in the program, the compiler divides the loop count N into a plurality of partial loop counts pn. For example, the compiler generates an execution form for dividing each partial loop into different child processes to be executed by different calculation nodes. At this time, the required value of the number of calculation nodes can be calculated by the number of loops N / the number of partial loops pn.
  • the partial loop number pn can be determined from the execution time of the child processes executed in parallel. For example, when pn is extremely small and the required value of the number of calculation nodes is too large, the communication time between the calculation nodes becomes longer than the processing time of the partial loop executed at each calculation node, and the efficiency is increased. descend.
  • the communication time between the calculation nodes is, for example, a communication time for requesting each calculation node to execute the partial loop, a communication time for acquiring the execution result of the partial loop from each calculation node, and the like. Therefore, the number of partial loops pn can be set to a time that is an appropriate magnification with respect to the dead time for control for parallel computation, such as communication time between computation nodes.
  • the compiler calculates the communication speed, bandwidth, etc. between computation nodes from the dead time for control for parallel computation, such as the communication time between computation nodes, and the amount of information exchanged between the computation nodes.
  • the level of the communication function may be determined.
  • the compiler may select the network topology based on the communication time between the computation nodes, the amount of information exchanged between the computation nodes, the number of computation nodes involved, and the like.
  • the compiler may reflect the selected network topology on the communication function level. For example, when the communication frequency between five calculation nodes is high, it is only necessary to simply perform communication in the vertical and horizontal directions of the matrix. Further, for example, when the communication frequency between the nine computation nodes is high, a network connected by links in the diagonal direction may be selected.
  • Program profile information may be used.
  • a profile information analysis program may create a descriptive statement that specifies an execution status, preferred computer resources, and the like from profile information obtained when the program has been executed in the past, and add it to the program.
  • the compiler can set an appropriate number of calculation nodes at the time of compilation.
  • the loop count N is defined as a dynamic parameter given during execution in the program, the loop count N is not specified until the program is executed. If the loop count N is defined in the program as a dynamic parameter, the loop count N may be specified as an experience value based on the profile in which the program is executed. Then, the loop count N may be handed over to the compiler as an experience value.
  • an analysis program for analyzing the profile information when there are a plurality of loops or when there are a plurality of parameters to be passed to the compiler in addition to the number N of loops, an analysis program for analyzing the profile information generates a parameter group for passing to the compiler. do it.
  • the compiler receives the parameter value as the analysis result, executes the same compilation as in (2), and determines the required value of the number of calculation nodes, the level of the communication function, and the like.
  • the binary code conversion program may be executed on a plurality of calculation nodes by rearranging the binary code in the execution format based on the parameter group obtained as a result of analyzing the profile information.
  • Each program transmits the execution status or the request value of the computer resource to the job manager 1 during execution on each calculation node.
  • the job manager 1 determines a desirable parallel computer environment for each program based on the information transmitted from each parallel computer execution environment. For example, the job manager 1 determines which program is preferably assigned to which execution environment. Such processing of the job manager 1 is also called job management.
  • the job manager 1 implements assignment of an appropriate parallel computer environment during execution of a plurality of programs as a whole computer system including a plurality of parallel computer environments by job management.
  • the job manager 1 considers the execution status of the program detected in each parallel computer environment, or the requested value of the computer resource, and each parallel computer environment in which the program is executed at that time, and the execution environment of the program being executed Determine whether to change.
  • the following functions are prepared to describe the process of sending the execution status of the program or the request value of the computer resource to the job manager 1.
  • the function name is an example, and the processing of the computer system is not limited to the following function name.
  • N_PRIORITY specifies the priority of program execution after execution of this function.
  • the priority order is a relative value in the entire target parallel computer environment.
  • N_NODE specifies the desired number of computation nodes for program execution after the above function is executed.
  • N_CONNECTION represents the level of communication function between computation nodes that is desirable for program execution after the above function is executed. For example, if the value of N_CONNECTION is 100, it means that the program needs to perform communication processing with the highest functionality as much as possible. Further, when the value of N_CONNECTION is 0, it means that the program hardly communicates.
  • ADJUST_P Indicates the policy when the parallel computer environment that is the target of the move destination cannot be temporarily used due to a hardware failure. If ADJUST_P is TRUE, specify that another parallel computer environment is selected and executed. If the value of ADJUST_P is FALSE, specify that the target parallel computer environment is to be restored.
  • These parameters may be constants. These parameters are not constants, but may be values calculated by the program at the time of execution. When the execution of the program reaches the location where this function is called, the execution status of the program specified by the above parameters is reported from the program to the job manager 1. From the reported execution status of the program, the job manager 1 determines whether to maintain or change the parallel computer environment in which the program is executed from the current status of the computer system and the reported values of these parameters. decide.
  • the program that receives the assignment of the parallel computer environment by the job manager 1 includes a call statement of parallel_run_level in the program. You can implement parallel_run_level as a library function and link it to the program when you compile the program to create an executable file.
  • the job manager 1 changes the execution environment of the program according to the execution status of the program from the computing node to the job manager 1 or the transmission of the request value of the computer resource.
  • the parallel computer environment side that executes the program and the job manager 1 execute processing in parallel.
  • Fig. 6 illustrates the processing flow on the parallel computer environment side.
  • the parallel computer E e completes the process when the execution of the program is completed (S1).
  • the parallel computer E e executes the parallel_run_level library function when it reaches the call location of parallel_run_level during the execution of the program (S2).
  • the parallel computer E e acquires the values N_PRIORITY, N_NODE, N_CONNECTION, and ADJUST_P at the time of program execution in the parallel_run_levelrun library function (S3).
  • the information included in the inquiry event is the current parallel computer environment number e and program parameter values (N_PRIORITY, N_NODE, N_CONNECTION, ADJUST_P).
  • the job manager 1 prioritizes the processing of inquiry events according to the value of N_PRIORITY of each inquiry event added to the event queue 4.
  • the parallel computer E e divides processing as follows according to the reply content (S6).
  • the parallel computer E e resumes the execution of the program from the pause state and returns the control to S1.
  • the current execution image of the program is what is called a context that includes executable binary data (program binary code) and the value of the register set.
  • the context may include, for example, information called a checkpoint indicating how far the program has been executed.
  • Fig. 7 illustrates the processing flow on the job manager 1 side. If the event queue 4 is empty, the job manager 1 waits until the next inquiry event arrives (T1). Hereinafter, the inquiry event is also simply referred to as an event. If the event queue 4 is not empty, the job manager 1 takes out the event Z from the head of the event queue 4. Then, the job manager 1 advances the control to T2.
  • Job manager 1 takes out the following information from event Z. That is, the job manager 1 reads the number e of the parallel computer environment that issued the event and the parameter values (N_PRIORITY, N_NODE, N_CONNECTION, ADJUST_P) of the program that issued the event (T2). The CPU of the job manager 1 executes the process of T2 as an example of means for acquiring a request value required for executing the program.
  • the job manager 1 creates a set C of program execution environments that are candidates for changing the program execution environment from the information extracted from the event Z (T3).
  • the set C may include the number e of the parallel computer environment that issued the event. In other words, there is an option of not moving.
  • a method for creating the set C is as follows.
  • the job manager 1 sets the value of the parameter N_NODE to n and the value of N_CONNECTION to c.
  • the number of computing nodes of each parallel computer environment e is Ne
  • the communication function level is CeC.
  • a set C of parallel computer environments satisfying the following is obtained. Note that the number of computing nodes in each parallel computer environment, the level of the communication function, and the like may be managed by, for example, the parallel computer environment table illustrated in FIG.
  • the job manager 1 determines the next execution environment e0 of the program corresponding to the event Z from the set C (T4).
  • the CPU of the job manager 1 executes the process of T4 as an example of a selection unit.
  • the job manager 1 selects a parallel computer environment with the least function among the candidates included in the set C.
  • the job manager 1 also performs the following additional situation determination. In terms of selecting a parallel computer environment with the least function from candidates included in the set C, it can be said that the job manager 1 selects a parallel computer environment having a processing capability that matches the required value as much as possible.
  • the job The manager 1 If it is determined from the parameter value that the computer environment is inferior to the current computer environment e and there is no program in the queue that has a priority higher than N_PRIORITY in e; in this case, the job The manager 1 considers that the current computer environment e has room, and determines that the program execution environment is not moved.
  • the job manager 1 determines to move to a higher-performance computer environment that has more room than the destination computer environment.
  • Job manager 1 sets the determined computer environment of the change destination to e0. If ADJUST_P is TRUE and the destination computer environment e0 is temporarily unavailable due to a hardware failure or the like, the job manager 1 removes e0 from the selection candidates and executes the process of T4 again.
  • the job manager 1 returns a message to the parallel computer environment e that issued the event so that the program whose execution is temporarily suspended is moved e0 to the target computer environment (T5).
  • the CPU of the job manager 1 executes the process of T5 as an example of a switching control unit.
  • the job manager 1 sends a message to the parallel computer environment without changing the computer environment. Event manager 1 then returns control to T1 to process the next event (T6).
  • FIG. 8 illustrates details of processing (T4 in FIG. 7) for determining the next execution environment e0 of the program from the set C according to the information of the inquiry event.
  • the event manager 1 determines whether or not the set C created in process T3, that is, the set C of program execution environments that are candidates for changing the program execution environment is an empty set (T41). When the set C is an empty set, the event manager 1 selects the parallel computer environment having the highest function in the computer system as the parallel computer environment to be changed (T42). Then, the event manager 1 ends the process.
  • the event manager 1 selects the parallel computer environment X having the lowest function in the set C as the parallel computer environment X to be changed (T43).
  • the event manager 1 satisfies the condition that the parallel computer environment X to be changed has a lower function than the current parallel computer environment and a process having a higher priority than N_PRIORITY is not executed in the current parallel computer environment. It is determined whether or not (T44). When the condition of T44 is satisfied, the job manager 1 determines not to change the parallel computer environment. This is because it is better not to change the parallel computer environment when there is a vacancy in the current environment and there is little room in the parallel computer environment with lower functions.
  • the current parallel computer environment is selected as the next parallel computer environment (T45).
  • the event manager 1 ends the process.
  • the priorities being executed in the respective parallel computer environments may be managed, for example, in the parallel computer environment table illustrated in FIG.
  • the CPU of the job manager 1 executes the process of T45 as an example of a switching inhibition unit.
  • the event manager 1 executes a process having a higher priority than N_PRIORITY in the parallel computer environment X to be changed and has a higher function than the parallel computer environment X. It is determined whether or not the condition that the environment Y is free is satisfied (T46).
  • the empty space in the parallel computer environment Y can exemplify that a process having a higher priority than N_PRIORITY is not executed in the parallel computer environment Y.
  • the job manager 1 selects a parallel computer environment Y having a higher function than the parallel computer environment X as the parallel computer environment to be changed (T47). If there is a vacancy in a highly functional parallel computer environment, effective use will not cause a problem in the efficiency of the entire computer system, and the program that is the subject of the query event can be executed more quickly. It is. That is, the CPU of the job manager 1 executes the process of T47 as an example of the process of selecting the third computer instead of the first computer. Then, the event manager 1 ends the process.
  • Fig. 9 shows an example of data in the parallel computer environment table.
  • the parallel computer environment table is stored in, for example, the main storage device of the job manager 1 or an external storage device. This is an example of means for storing management information including processing capability in the main storage device of the job manager 1 for storing the parallel computer environment table or the external storage device.
  • the parallel computer environment table is an example of management information.
  • one line corresponds to one record and defines one parallel computer environment.
  • one record of the parallel computer environment table has fields of a parallel computer environment name, the number of calculation nodes, a communication function level, the number of assigned programs, an assigned highest priority, and an assigned lowest priority.
  • the parallel computer environment name is information for identifying each parallel computer environment.
  • the parallel computer environment name can be, for example, a unique character string in the parallel computer environment table.
  • the parallel computer environment name may be, for example, the node name of the front end node or an address on the network 2.
  • the parallel computer environment name may be an Internet Protocol (IP) address of the front end node, a MAC address of a communication interface of the front end node, or the like.
  • IP Internet Protocol
  • the number of computing nodes is the number of computing nodes in the parallel computer environment specified by the parallel computer environment name.
  • the communication function level is a level of the communication function in the parallel computer environment specified by the parallel computer environment name.
  • the level of the communication function is set according to, for example, the network topology, bandwidth, data transfer rate, and the like.
  • the number of assigned programs is the number of programs currently assigned to the parallel computer environment specified by the parallel computer environment name.
  • the number of assigned programs varies depending on the processing of the job manager 1. For example, when the job manager 1 designates a program to change the parallel computer environment to the parallel computer environment specified by the parallel computer environment name, the job manager 1 in the parallel computer environment of the change source to which the program is currently assigned. It is only necessary to subtract 1 from the number of assigned programs and add 1 to the number of assigned programs in the parallel computer environment to be changed.
  • each parallel computer environment may notify the job manager 1 of an increase in program allocation when the allocation is accepted as the program execution environment.
  • each parallel computer environment may request that the program being executed be changed to another parallel computer environment, and notify the job manager 1 of a decrease in program allocation when a change request is accepted.
  • the job manager 1 may change the number of allocated programs when receiving a notification of an increase in program allocation or a notification of a decrease in allocation from each parallel computer environment. It can be said that the larger the number of assigned programs, the more crowded the parallel computer environment specified by the parallel computer environment name.
  • the assigned highest priority is the highest priority among the priorities of the programs currently assigned to the parallel computer environment specified by the parallel computer environment name. It can be said that the higher the assigned highest priority, the more difficult it is to use the parallel computer environment by a newly assigned program. Conversely, the lower the highest assigned priority, the higher the possibility that the parallel computer environment can be used by a newly assigned program.
  • each parallel computer environment may notify the job manager 1 of the priority of the assigned program when the assignment is accepted as an execution environment of the program.
  • each parallel computer environment requests the change of a running program to another parallel computer environment, and when the change request is accepted and the program assignment is deleted, the priority of the program whose assignment is deleted May be notified to the job manager 1.
  • the job manager 1 may change the assigned highest priority when receiving notification of the priority assigned to the program or the priority from which the assignment has been deleted from each parallel computer environment.
  • the assigned lowest priority is the lowest priority among the priorities of the programs currently assigned to the parallel computer environment specified by the parallel computer environment name. It can be seen that the higher the assigned minimum priority, the more programs are assigned with higher priority.
  • the assigned lowest priority may be managed in the same manner as the assigned highest priority.
  • ⁇ Effect> As described above, according to this computer system, a plurality of parallel computer environments can be used effectively.
  • each computing node in each parallel computer environment of the computer system executes a location of the situation description in the program, the execution status of the program set in the situation description, the desired number of computing nodes for the program, the level of communication function, etc. Is sent to the job manager 1. Through such processing, the computer system can acquire the execution status of each program and information on preferable computer resources in a timely manner.
  • the job manager 1 of the computer system moves the execution of a program whose data communication function request level is low temporarily or after a certain time to a parallel computer environment where the data communication function level is low. By this processing, the job manager 1 can assign the function of the parallel computer having a high data communication function to a program having a higher priority.
  • Job manager 1 moves the execution of a program with a small number of requests for the number of computation nodes to a parallel computer environment with a small number of computation nodes. By this processing, the job manager 1 can assign the function of the parallel computer to a program with higher priority.
  • the job manager 1 moves the execution of a program whose data communication function request level becomes high temporarily or after a certain time to a parallel computer environment where the data communication function level is high. By this processing, the computer system can effectively use the parallel computer.
  • the job manager 1 makes effective use of the functions of a large-scale parallel computer by moving the execution of a program that requires a large number of computation nodes temporarily or after a certain point of time to a parallel computer environment with a large number of computation nodes. Can do.
  • the multiple parallel computer environments are determined in consideration of the priority of the query event, and as a result, the computer system The entire system can be used effectively.
  • the job manager 1 is a process in which the parallel computer environment X to be changed has a lower function than the current parallel computer environment and has a higher priority than N_PRIORITY in the current parallel computer environment. It is determined whether or not a condition that is not executed is satisfied. When this condition is satisfied, the job manager 1 determines not to change the parallel computer environment. Therefore, when there is a vacancy in the current environment, the computer system 1 determines not to change the parallel computer environment to a parallel computer environment having a lower function than the current one. Therefore, when there is a space in the current environment, computer resources are flexibly and efficiently allocated to the program.
  • a process having a higher priority than N_PRIORITY is executed in the parallel computer environment X to be changed, and the parallel computer environment Y having higher functionality than the parallel computer environment X is free. It is determined whether or not a certain condition is satisfied. When this condition is satisfied, the job manager 1 selects a parallel computer environment Y having a higher function than the parallel computer environment X as the parallel computer environment to be changed. By such processing, this computer system can effectively utilize a high-performance parallel computer environment with a space when there is a space in a higher-performance parallel environment.
  • a computer system that receives an instruction on whether or not it is necessary has been described.
  • the number of computing nodes and the level of communication function in each parallel computer environment are managed by the parallel computer environment table of FIG.
  • the number of calculation nodes and the level of communication function are embedded in the name of the parallel computer environment.
  • the parallel computer environment N16C100 indicates the number of computation nodes 16 and the communication function level 100.
  • the parallel computer environments N16C100-1 and N16C100-2 may be managed as in the parallel computer environments N16C100-1 and N16C100-2. Therefore, in the second embodiment, the number of computation nodes and the communication function level in the parallel computer environment table shown in FIG. 10 may be omitted.
  • Example 2 it is assumed that the following five types of parallel computer environments exist. However, in the configuration of the computer system, the number of parallel computer environments is not limited. Further, in the following parallel computer environment, the number of calculation nodes is 9 or 16 as an example. However, in the configuration of this computer system, the number of calculation nodes is not limited. For example, the number of calculation nodes may be thousands or tens of thousands.
  • FIG. 10 illustrates a parallel computer environment N16C100.
  • N16C100 is information for identifying the parallel computer environment and also information for specifying the hardware resource specifications. That is, N16 indicates that the number of calculation nodes is 16.
  • a 4 ⁇ 4 rectangle indicates a computation node. Solid lines between rectangles indicate network links.
  • C100 indicates a parallel computer environment in which the communication function between calculation nodes is the highest function level.
  • the level of the communication function between calculation nodes is represented by C0 to C100.
  • the types of communication functions between the computation nodes and the leveling method are not limited.
  • the level of the communication function can be set from information such as the bandwidth between calculation nodes and the number of counterpart calculation nodes that can directly communicate with one calculation node without relaying other calculation nodes.
  • the calculation nodes arranged in a matrix are connected to the calculation nodes in the diagonal direction in addition to the row direction and the column direction, respectively.
  • One front end node 31 is provided in addition to the 16 computation nodes.
  • the front end node 31 is connected to the job manager 1 and other parallel computer environments via the network 2 shown in FIG.
  • the front-end node 31 receives a program execution request from a program executed in the job manager 1 or another parallel computer environment. Then, the front end node 31 registers the received program execution request in the program execution waiting queue.
  • the front-end node 31 delivers the program registered in the program execution waiting queue to the calculation node and executes it.
  • the programs registered in the program execution queue are delivered to the computation nodes in the priority order set for each program.
  • the procedure for replacing the program executed in the computation node with the program registered in the program execution waiting queue is the same as that of a normal computer system. For example, when the processing time assigned to each program elapses, the execution of the program executed on the computation node is interrupted and registered again in the program execution queue. Then, the program may be delivered to the computation node in order of priority in the program execution waiting queue.
  • FIG. 11 illustrates a parallel computer environment N16C50.
  • the number of calculation nodes in the parallel computer environment N16C50 is 16, and the communication function between the calculation nodes is at an average level. For example, there are connections in the row direction and the column direction between the calculation nodes arranged in the matrix information, but no connection in the diagonal direction is provided. Therefore, in order for each computation node to communicate with the computation node in the diagonal direction, the computation node passes through the computation node adjacent in the row direction or the column direction.
  • FIG. 12 illustrates a parallel computer environment N16C0.
  • the number of computing nodes in the parallel computer environment N16C0 is 16, and the communication function between the computing nodes is the lowest level.
  • the connection between the computation nodes in FIG. 12, that is, the topology of the network 2 is the same as that of N16C50 in FIG.
  • the bandwidth of the link between the computation nodes is narrower than N16C50 in FIG.
  • FIG. 13 illustrates a parallel computer environment N9C100.
  • the number of computing nodes in the parallel computer environment N9C100 is 9, and the communication function between the computing nodes is the highest level.
  • FIG. 14 illustrates a parallel computer environment N9C0.
  • the number of computing nodes in the parallel computer environment N9C0 is 9, and the communication function between the computing nodes is the lowest level.
  • the program P includes the following situation description. / * R0 * / parallel_run_level (9, 16, 50, FALSE); / * D1 * / / * R1 * / parallel_run_level (9, 5, 50, FALSE); / * D2 * / / * R2 * / parallel_run_level (20, 200, 200, TRUE); / * D3 * / / * R3 * / parallel_run_level (0, 3, 0, FALSE); / * D4 * / / * R4 * / Further, it is assumed that the execution environment at the execution start time R0 of the program P is N16C100.
  • the execution environment N16C100 sends a job P query event to the job manager 1 (steps S3 and S4 in FIG. 6). After sending the inquiry event, the execution of the program P on the execution environment N16C100 is temporarily suspended (step S5 in FIG. 6).
  • the job manager 1 receives the inquiry event from the execution environment N16C100, and the job manager 1 creates a candidate for the destination of the execution environment of the program P from the information of the situation description of D1 included in the event. In this case, there are two destination candidates, N16C50 and N16C100. The job manager 1 selects N16C50 having the lowest function from these candidates (steps T1, T2, T3, and T4 in FIG. 7). However, depending on the situation from the additional situation determination (see T44 in FIG. 8) at this point, there may be a selection that the N16C100 continues execution, that is, does not move. Here, it is assumed that the selection has not occurred.
  • the job manager 1 sends a reply message to the program P of the execution environment N16C100 so as to change the execution environment from N16C100 to N16C50 (step T5 in FIG. 7).
  • the program P in the temporary execution suspension state on the execution environment N16C100 receives the reply message from the job manager 1, and changes the execution environment to N16C50 indicated by the reply message (steps S6, S7, and S8 in FIG. 6).
  • the program P moved to the execution environment N16C50 is registered in the execution waiting queue.
  • the front-end processor acquires information specifying the program P from the execution queue, and resumes execution of the program P on the execution environment N16C50 (steps S8 and S1 in FIG. 6). ).
  • the execution range R1 of the program P is executed on the N16C50.
  • this computer system processes parallel_run_level in the same procedure.
  • the execution range R2 of the program P is executed on the N9C50.
  • the next execution environment change is determined by reaching the status description of D3.
  • the situation description of D3 means that the highest priority is required for the number of calculation nodes and the communication function thereafter. Therefore, the execution of the program P is moved to the execution environment N16C100 having the highest function.
  • ADJUST_P is TRUE, so if N16C100 is temporarily unavailable due to a hardware failure or the like, another candidate is selected. For example, N16C50 is selected.
  • the final execution environment change determination occurs when the situation description D4 is reached.
  • the status description of D4 indicates that the priority level, the number of calculation nodes, and the communication function may be at the lowest level thereafter. Therefore, the computer system moves the execution of the program P to the execution environment N9C0 having the lowest function.
  • the job manager 1 in response to the job manager 1 inquiry event, the next parallel computer environment X is instructed to the computer program. Then, the execution format including the context being executed by the computer program that has received the response to the inquiry event is saved, requested to the next parallel computer environment X, and registered in the execution queue. Instead of such processing, the job manager 1 may instruct the OS of the current parallel computer execution environment E executing the computer program to interrupt the execution of the program and move to the next parallel computer environment X. Good. In response to an instruction from the job manager 1, the OS of the current parallel computer execution environment E saves an execution format including the context of the program being executed, and requests execution of the next OS of the parallel computer environment X. Good.
  • the computer system has a plurality of parallel computer environments connected by the network 2.
  • the parallel computer environment of the computer system may be a virtual computer constructed on a computer system having a plurality of CPUs instead of a physically different parallel computer environment.
  • the program can be executed by an appropriate virtual computer, and the efficiency of the entire computer system can be improved.
  • a computer or other machine or apparatus (hereinafter referred to as a computer or the like) exemplified by the job manager 1 can be recorded on a recording medium readable by the computer or the like.
  • the function can be provided by causing a computer or the like to read and execute the program of the recording medium.
  • a computer-readable recording medium is a recording medium that stores information such as data and programs by electrical, magnetic, optical, mechanical, or chemical action and can be read from a computer or the like.
  • Examples of such recording media that can be removed from a computer or the like include memories such as a flexible disk, a magneto-optical disk, a CD-ROM, a CD-R / W, a DVD, a Blu-ray disc, a DAT, an 8 mm tape, and a flash memory.
  • cards There are cards.
  • a recording medium fixed to a computer or the like there are a hard disk, a ROM (read only memory) and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

 管理装置は、複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータからプログラムを実行するために要求される処理能力を含む要求値を取得する手段と、複数のコンピュータの中から、要求値に適合する処理能力のコンピュータを選択する選択手段と、プログラム実行コンピュータに割り当てられているプログラムを選択されたコンピュータへ割り当てる切替制御手段と、を備える。

Description

コンピュータシステム
 本発明は、コンピュータシステムに関するものである。
 コンピュータは、用途あるいはシステムの目的に応じて、様々な構成を取り得る。そして、コンピュータの構成に応じて、処理能力あるいはハードウェア資源等が異なる。例えば、コンピュータの一例として、並列計算機を考える。並列計算機としては、計算ノードの数、あるいは計算ノード間を接続するネットワークの構成等によって、種々のシステム構成があり得る。さらに、種々の構成のコンピュータ、並列計算機を組み合わせたコンピュータシステムを構築することもできる。
特開2006-216058号公報 特開2010-204979号公報
 様々な構成のコンピュータを組み合わせたコンピュータシステムを利用する場合に、コンピュータシステム全体の利用効率の点で、改善の余地がある場合がある。例えば、様々な構成のコンピュータを組み合わせたコンピュータシステム上で複数のプログラムを実行する場合を考える。ここでは、実行される複数のコンピュータプログラム(以下、単にプログラム)に、それぞれ適切なコンピュータを割り当ててプログラムを実行することを想定する。その場合に、実行されるそれぞれのプログラムでは、以下のケースが生じ得る。
(1)一のプログラムは、割り当てられたコンピュータのハードウェアリソースの一部を利用し、残りは未使用となる場合がある。例えば、並列計算機の複数の計算ノードのうち、一部の計算ノードが利用され、残りの計算ノードは未使用となる場合である。
(2)並列計算機のような複数の計算ノードを含むコンピュータの利用において、計算ノード間の通信が行われず、計算ノード間を接続するネットワークが利用されない場合がある。あるいは、特定の計算ノード間の通信が限定的に行われ、他の計算ノード間の通信が行われない場合がある。
 したがって、従来のコンピュータシステムでは、構成の異なる複数のコンピュータを含むコンピュータシステムにおいて複数のプログラムを実行する場合に、コンピュータシステムが効率的に利用されない場合があった。
 1つの側面では、本発明は、異なる構成のコンピュータを組み合わせたコンピュータシステムを利用する場合のコンピュータシステムの利用効率の向上を図ることを目的とする。
 開示の技術の一側面は、処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置として例示できる。この管理装置は、複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータからプログラムを実行するために要求される処理能力を含む要求値を取得する手段と、複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、プログラム実行コンピュータに割り当てられているプログラムを選択されたコンピュータへ割り当てる切替制御手段と、を備える。
 本コンピュータシステムによれば、コンピュータシステムの利用効率の向上を図ることができる。
比較例に係るコンピュータシステムの構成を例示する図である。 コンピュータの構成を例示する図である。 並列計算機上でのプログラムの実行状況を例示する図である。 実施例1のコンピュータシステムの構成図を例示する図である。 コンピュータシステムの機能を例示する図である。 並列計算機環境側の処理フローを例示する図である。 ジョブマネージャ側の処理フローを例示する図である。 プログラムの次の実行環境を決定する処理の詳細を例示する図である。 並列計算機環境テーブルのデータ例を示す図である。 並列計算機環境N16C100を例示する図である。 並列計算機環境N16C50を例示する図である。 並列計算機環境N16C0を例示する図である。 並列計算機環境N9C100を例示する図である。 並列計算機環境N9C0を例示する図である。
 以下、図面を参照して実施形態の一側面に係るコンピュータシステムについて説明する。以下の実施形態の構成は例示であり、本コンピュータシステムは実施形態の構成には限定されない。
<比較例>
 図1に、比較例に係るコンピュータシステムの構成を例示する。比較例のコンピュータシステムは、R=0からR=Nで例示される複数の計算ノードと、計算ノードでのプログラムの実行を管理するフロントエンドノードとを相互結合ネットワークで接続している。
 ここで、計算ノードおよびフロントエンドノードの構成に特に限定はない。したがって、計算ノードおよびフロントエンドノードは、例えば、ブレードサーバと呼ばれるものでもよく、一般的なパーソナルコンピュータでもよい。
 図2に、計算ノードあるいはフロントエンドノードとして用いることができるコンピュータ10の構成を例示する。計算ノードおよびフロントエンドノードは、Central Processing Unit(CPU)11、主記憶装置12、インターフェース18を通じて接続される外部機器を有し、プログラムにより情報処理を実行する。外部機器としては、外部記憶装置13および通信インターフェース14を例示できる。外部記憶装置13としては、例えば、ハードディスク、Solid State Drive(SSD)等を例示できる。計算ノードおよびフロントエンドノードは、通信インターフェース14により相互結合ネットワークに接続される。
 また、計算ノードおよびフロントエンドノードは、入力装置15、表示装置16等によるユーザインターフェースを有するようにしてもよい。入力装置15は、例えば、キーボード、ポインティングデバイス等である。また、表示装置16は、例えば、液晶ディスプレイ、エレクトロルミネッセンスパネル等である。さらに、計算ノードおよびフロントエンドノードは、着脱可能記憶媒体の駆動装置17を設けてもよい。着脱可能記憶媒体は、例えば、ブルーレイディスク、Digital Versatile Disk(DVD)、Compact Disc(CD)、フラッシュメモリカード等である。なお、図2の例では、単一のインターフェース18が例示されているが、インターフェース18として複数種類のものが複数設けられてもよい。
 また、相互結合ネットワークについても、特に限定はない。相互結合ネットワークは、例えば、Network Interface Card(NIC)で接続されるLocal Area Network(LAN)等でもよい。また、相互結合ネットワークは、Fibre Channel (ファイバーチャネル)、InfiniBand(インフィニバンド)等の通信インターフェースで接続されるネットワークでもよい。
 ところで、図1に例示される並列計算機の特徴は、例えば、複数の計算ノードと、高速かつ大容量の計算ノード間のデータ通信処理機能である。並列計算機を利用するプログラムは、これらの特徴を利用することで処理速度を単一構成の計算機よりも高速化する。
 しかしながら、プログラムの実行の開始時点から終了時点の全般に渡って、並列計算機の機能を使う訳ではない。例えば、プログラムの実行時には、一時的もしくはある時点以降、次の状態になることがある。例えば、1つのプログラムが図1のような並列計算機の複数の計算ノードを割り当てられた場合を想定する。
(1)プログラムは、割り当てられた計算ノードの一部を利用する場合がある。
(2)プログラムは、計算ノードを利用するけれども、計算ノード間で通信は行わない場合がある。
(3)プログラムは、計算ノード間で通信を行う。しかし、並列計算機全体としては、ある計算ノードのグループ間に限定した通信が行われ、他の計算ノード間では、通信が行われない場合がある。
 すなわち、並列計算機を利用しているにもかかわらず、その特徴を十分には利用していないという状況が生じ得る。一般的に、並列計算機は複数のユーザが共有して利用するものであり、一時的であってもプログラムがその特徴を利用していない場合は、潜在的には利用に無駄があることになる。
 図3に、並列計算機上でのプログラムの実行状況を例示する。図3は、R=0からR=Nで例示される計算ノード上でプログラムの実行の状態が時刻tを付された時間軸(縦軸)に対して示されている。プログラムは、各計算ノード上のプロセスとして実行される。それぞれのプロセス中で実行されるプログラムの処理が丸印で概念的に例示されている。また、計算ノード間の通信は、丸印と丸印を横方向、あるいは斜め方向に結ぶ線で例示されている。さらに、並列計算機の各計算ノードの状態がST1-ST4等の記号で、時間軸方向の期間を区切って示されている。
 図3の例では、プログラムは、まず実行開始時にすべての計算ノード上のプロセスとして実行を開始する。一般にプログラムの実行の開始直後はプロセス間での通信は発生しない(状態ST1)。並列計算機の利点の1つは、計算ノード間の大規模な通信処理である。すなわち、状態ST2のように各計算ノードのプロセス間で大規模な通信処理を行う状態が、並列計算機の1つの利点を活用している状態といえる。並列計算機上のプログラムは常にこのように通信している訳ではなく、一時的に通信がない状態や、通信は行うけれども一部の計算ノード間で小規模に行われるという状態(例えば、状態ST3)があり得る。
 さらに、最初に割り当てた計算ノードの利用を途中から止めて、一部の計算ノードを利用するという状態になる場合(例えば、状態ST4)もある。このようなプログラムの実行状態を考えると、図3でST2以外の状態は必ずしも並列計算機を有効利用しているとは言えない。したがって、時間帯によって計算ノードや通信用のハードウェアが有効に利用されないという問題が生じ得る。
 図4から図9の図面を参照して、実施例1に係るコンピュータシステムを説明する。実施例1のコンピュータシステムは、コンピュータシステム上で実行中のプログラムから、実行状況の報告を受け付け、それぞれのプログラムの実行状況に適した実行環境を選択する。そして、実施例1のコンピュータシステムは、それぞれのプログラムの実行を選択された実行環境に変更する。
 図4に、実施例1のコンピュータシステムの構成図を例示する。このコンピュータシステムは、E=0からE=eによって示される複数の並列計算機環境と、これら複数の並列計算機環境とネットワーク2によって接続されるジョブマネージャ1と呼ぶ管理用のコンピュータとを有する。複数の並列計算機環境が処理能力の異なる複数のコンピュータの一例である。また、ジョブマネージャ1が管理装置の一例である。
 ここで、E=0からE=eによって示される複数の並列計算機環境のそれぞれは、例えば、図1で例示されるような並列計算機である。E=0からE=eの並列計算機環境は、例えば、それぞれ、複数の計算ノードと、計算ノードでのプログラムの実行を管理するフロントエンドノードとを有する。また、複数の計算ノードと、フロントエンドノードとは、相互結合ネットワークで接続される。計算ノードおよびフロントエンドノードの構成は、図2に例示したものと同様である。
 図4のように、実施例1のコンピュータシステムは、さらに、それぞれの並列計算機環境とジョブマネージャ1とをネットワーク2で接続する。ネットワーク2は、例えば、図1と同様の相互結合ネットワーク、すなわち、LAN、Fibre Channel、InfiniBand等によるネットワークでもよい。また、ジョブマネージャ1は、図1のフロントエンドノードと同様に、ブレードサーバ、パーソナルコンピュータ等でよい。したがって、ジョブマネージャ1の構成は、図2で例示したものと同様である。
 図5に、本コンピュータシステムの機能を例示する。本コンピュータシステムでは、複数のプログラムが並列で実行される。ジョブマネージャ1は、それぞれのプログラムの実行状況を基に、それぞれのプログラムに対して並列計算機環境(E=0からE=e)を割り当てる。
 並列計算機環境(E=0からE=e)に割り当てられたプログラムは、実行待ちキューに登録され、それぞれ割り当てられた優先順にしたがって、各並列計算機環境で実行される。そして、各並列計算機環境で実行されるプログラムは、自身の実行状況をジョブマネージャ1に報告する。例えば、各プログラム中には、実行のための計算機リソースの要求値をジョブマネージャに通知する状況記述と呼ぶコードが記述される。計算機リソースが処理能力の一例である。計算機リソースとしては、計算ノード数、主記憶装置容量、計算ノード間の通信速度、計算ノード間の通信帯域幅等を例示できる。また、実行のための計算機リソースの要求値は、プログラムを実行するために要求される処理能力を含む要求値の一例である。プログラムを実行するために要求される処理能力とは、プログラム実行依頼元が、プログラムが割り当てられる並列計算機環境に要求する要求値である。この要求値は、例えば、プログラム実行依頼元が、所望の時間で実行結果を得るために設定する要求値である。
 例えば、並列計算機環境(E=e)のある計算ノードにおいて実行中のプログラムが状況記述に到達すると、その計算ノードのメモリに常駐するライブラリ関数が呼び出される。ライブラリ関数内では、計算ノードは、プログラムの実行状況、あるいは実行状況に応じた適切な計算機リソースの要求値をジョブマネージャ1に送信する。以下、プログラムの実行状況、あるいは実行状況に応じた適切な計算機リソースの要求値を単に、送信情報という。また、計算ノードは、送信情報とともに、プログラムの実行環境の変更に関する問い合わせをジョブマネージャ1に送信する。計算ノードからジョブマネージャ1への通信方法に限定はない。例えば、図1に例示したような計算ノード間が接続される相互結合ネットワークおよび並列計算機環境が接続されるネットワーク2を介して、計算ノードからジョブマネージャ1に問い合わせを送信すればよい。
 計算ノードとジョブマネージャ間の通信方法としては、例えば、Fibre Channel、InfiniBand、LAN等で利用などのようなプロトコルを使用してもよい。また、プロトコルの階層としても、どのような階層を利用してもよい。例えば、Media Access Control(MAC)アドレスを用いて、通信する専用プログラムをライブラリ関数に組み込み、計算ノードとジョブマネージャ1とが通信するようにしてもよい。また、例えば、TCP/IPのアプリケーション層で、計算ノードとジョブマネージャ1とが通信するプログラムをライブラリ関数に組み込み、計算ノードとジョブマネージャ1とが通信するようにしてもよい。また、計算ノードとジョブマネージャ1に、Remote Procedure Call(遠隔手続き呼び出し、RPC)の機能が実装されている場合には、RPCを利用してもよい。いずれにしても、それぞれの計算ノード内のパラメータとして、ジョブマネージャ1のMACアドレス、IPアドレス、ノード名等を保持しておけばよい。例えば、ライブラリ関数内で、計算ノードのOperating System(OS)から、宛先アドレス等を取得するようにすればよい。
 ジョブマネージャ1は複数の並列計算機環境(E=0からE=e)の複数の計算ノードから並列にプログラムの実行環境の変更に関する問い合わせをイベントとして受け取る。この場合、1つの並列計算機環境の複数の計算ノードで実行されるプログラムから、それぞれの実行状況に応じて問い合わせイベントがジョブマネージャ1に送信されることも生じ得る。個々の計算ノードごとに、プログラムの実行状況が異なるからである。ジョブマネージャ1は受信した問い合わせイベントを順序付けて処理するためのイベントキューをもつ。
 すなわち、それぞれのプログラムからジョブマネージャ1への問い合わせは、問い合わせイベントとして、イベントキューに取り込まれる。ジョブマネージャ1は、イベントキューの優先順にしたがって、それぞれのプログラム(すなわち、それぞれの計算ノード)からの問い合わせイベントを逐次処理し、それぞれのプログラムに対して、問い合わせイベントに含まれる計算機リソースの要求値に応じて並列計算機環境(E=0からE=e)を割り当てる。
 以上のようにして、本コンピュータシステムは、並列計算機の利用効率を高めるために、それぞれのプログラムの各計算ノードでの実行状況が並列計算機の特徴を利用している状況か否かという情報を例えば刻々収集する。そして、第1のプログラムが並列計算機の特徴を利用していない状況になった場合は、本コンピュータシステムは、例えば、その第1のプログラムの実行をより機能の劣る並列計算機環境に移動する。逆に、第2のプログラムの実行がより高機能の並列計算機を必要とする状況になった場合は、本コンピュータシステムは、第2のプログラムの実行をより高機能の並列計算機へ移動する。より具体的には、ジョブマネージャ1は、問い合わせイベントに適合する並列計算機環境を選択し、問い合わせイベントを発したプログラムに、現在実行されている並列計算機環境から、選択された並列計算機環境への切替を指示する。
 実行時にプログラムが並列計算機の特徴を利用しない状況になったこと、あるいは再びより高い機能を利用する状況になったことは、次の方法でプログラムがジョブマネージャ1に自己申告する。ここで、自己申告とは、例えば、計算ノードで実行中のプログラムから情報をジョブマネージャ1に送信することをいう。計算ノードで実行中のプログラムからジョブマネージャ1へ送信された情報を受信することによって、ジョブマネージャ1は各並列計算機環境でのプログラムの実行状況を検出する。
 <ジョブマネージャ1への送信;プログラム内での状況記述>
  プログラム中にプログラムの実行状況、実行のための計算機リソースの要求値等の送信情報をジョブマネージャに送信する処理が記述される。送信情報を送信する処理の記述は、プログラム開発時に行えばよい。計算ノードのCPUは、プログラムを実行中に送信情報を送信する処理の記述箇所に到達すると、その記述にしたがって、計算ノードがその時点でのプログラムの実行状況、計算機リソースの要求値等の送信情報を送信する。プログラム中に、送信情報を送信する処理である状況記述を組み込む方法としては、以下のものが考えられる。
(1)プログラマが明示的にプログラム内に送信情報を送信する処理をコーディングする。
(2)コンパイラがプログラムをコンパイルするときにプログラムを解析し、送信情報に含まれるプログラムの実行状況、計算機リソースの要求値等を自動的に設定し、ジョブマネージャ1に送信する記述を追加する。
 例えば、コンパイラは、プログラム中で、ループを検出すると、ループの回数Nを複数の部分ループの回数pnに分割する。コンパイラは、例えば、それぞれの部分ループを異なる計算ノードで実行される異なる子プロセスに分割して実行するための実行形式を生成する。このとき、計算ノード数の要求値は、ループ回数N/部分ループ数pnで算出できる。また、部分ループ数pnは、並列実行される子プロセスの実行時間から決定できる。例えば、pnが極端に小さく、計算ノード数の要求値が大きすぎる場合には、各計算ノードで実行される部分ループの処理時間よりも、計算ノード間の通信時間の方が長くなり、効率が低下する。計算ノード間の通信時間は、例えば、部分ループの実行を各計算ノードに依頼するための通信時間、および、各計算ノードから部分ループの実行結果を取得する通信時間等である。そこで、部分ループの回数pnは、計算ノード間の通信時間等、並列計算のための制御のための無駄時間に対して、適切な倍率となる時間に設定することができる。
 また、コンパイラは、計算ノード間の通信時間等、並列計算のための制御のための無駄時間と、計算ノード間で授受する情報量とから、計算ノード間の通信速度、帯域幅等を算出し、通信機能のレベルを確定すればよい。また、コンパイラは、計算ノード間の通信時間、計算ノード間で授受する情報量、関与する計算ノードの数等から、ネットワークのトポロジを選択するようにしてもよい。そして、コンパイラは、選択したネットワークのトポロジを通信機能のレベルに反映してもよい。例えば、5つの計算ノード間での通信頻度が高い場合には、単純にマトリクスの縦横方向の通信ができればよい。また、例えば、9つの計算ノード間での通信頻度が高い場合には、対角方向にもリンクで接続されるネットワークを選択すればよい。
(3)プログラムのプロファイル情報を利用してもよい。例えば、プロファイル情報の解析プログラムが、過去にそのプログラムを実行したときのプロファイル情報から、実行状況、好ましい計算機リソース等を指定する記述文を作成し、プログラムへ追加するようにしてもよい。ループの回数Nがプログラム中で固定されている場合には、(2)で説明したように、コンパイル時にコンパイラが適切な計算ノード数を設定することは可能である。しかしながら、ループの回数Nがプログラム中で実行中に付与される動的なパラメータとして定義されている場合には、プログラムの実行まではループの回数Nが特定されない。ループの回数Nが動的なパラメータとしてプログラム中に定義されている場合には、プログラムを実行したプロファイルを基に、ループの回数Nを経験値として特定すればよい。そして、ループ回数Nを経験値としてコンパイラに引き渡せばよい。また、例えば、ループが複数個ある場合、あるいは、ループの回数N以外にコンパイラに引き渡すパラメータが複数ある場合には、プロファイル情報を解析する解析プログラムがコンパイラに引き渡すためのパラメータ群を生成するようにすればよい。コンパイラは解析結果としてのパラメータ値を受け取り、(2)と同様のコンパイルを実行し、計算ノード数の要求値、通信機能のレベル等を確定すればよい。ただし、バイナリコード変換プログラムがプロファイル情報を解析した結果得られるパラメータ群を基に、実行形式のバイナリコードを組み替えて、複数の計算ノードで実行されるようににしてもよい。
 各プログラムは、それぞれの計算ノードで実行中に実行状況、あるいは、計算機リソースの要求値をジョブマネージャ1に送信する。ジョブマネージャ1は、それぞれの並列計算機実行環境から送信された情報を基に、それぞれのプログラムに対する望ましい並列計算機環境を決定する。ジョブマネージャ1は、例えば、どのプログラムをどの実行環境に割り当てるのが望ましいかを決定する。このようなジョブマネージャ1の処理は、ジョブ管理とも呼ばれる。ジョブマネージャ1は、ジョブ管理により、複数の並列計算機環境を含むコンピュータシステム全体として、複数のプログラムの実行中に適切な並列計算機環境の割り当てを実現する。ジョブマネージャ1は、各並列計算機環境で検出したプログラムの実行状況、あるいは計算機リソースの要求値と、その時点でプログラムが実行されている各並列計算機環境を考慮して、実行中のプログラムの実行環境を変更するかどうか判断する。
 プログラム中でプログラムの実行状況、あるいは計算機リソースの要求値等をジョブマネージャ1に送信する処理を記述するために,以下の関数を用意する。ただし、関数名は、一例であり、本コンピュータシステムの処理が以下の関数名に限定される訳ではない。
 parallel_run_level (N_PRIORITY, N_NODE, N_CONNECTION, ADJUST_P);
ここで,各パラメータの意味は次の通りである.
 N_PRIORITY:N_PRIORITYは、この関数の実行以降のプログラムの実行の優先順位を指定する。この優先順位は、例えば、対象とする並列計算機環境全体で相対的な値とする。
 N_NODE:N_NODEは、上記関数の実行以降、プログラムの実行のために望ましい計算ノードの数を指定する。
 N_CONNECTION:N_CONNECTIONは、上記関数の実行以降、プログラムの実行のために望ましい計算ノード間の通信機能のレベルを表す。例えば、N_CONNECTIONの値が100の場合は、プログラムが可能な限り高機能の通信処理を必要とすることを意味する。また、N_CONNECTIONの値が0の場合は、プログラムはほとんど通信を行わないことを意味する。
 ADJUST_P:移動先の対象である並列計算機環境がハードウェアの故障などで一時的に利用できない場合の方針を表す。ADJUST_Pの値がTRUEである場合は、他の並列計算機環境を選択して実行することを指定する。ADJUST_Pの値がFALSE である場合は、対象の並列計算機環境が復旧することを待つことを指定する。
 これらのパラメータは定数であってもよい。また、これらのパラメータは定数ではなく、実行時にプログラムが計算した値でもよい。プログラムの実行が、この関数の呼び出し箇所へ到達した場合、上記パラメータで指定されるプログラムの実行状況が、プログラムからジョブマネージャ1に報告される。ジョブマネージャ1は、報告されたプログラムの実行状況から、プログラムが実行されている並列計算機環境を維持するか、変更するか、をコンピュータシステムの現在の状況と、報告されたこれらのパラメータの値から決定する。
 本コンピュータシステム上で、ジョブマネージャ1による並列計算機環境の割り当てを受けるプログラムは、プログラム中にparallel_run_levelの呼び出し文を含む。parallel_run_levelはライブラリ関数として実装し、プログラムをコンパイルして実行可能ファイルを作成するときに,プログラムにリンクすればよい。
 <実行状況の報告を利用したプログラムプログラムの実行環境の変更処理>
 図5で説明したように、計算ノードからジョブマネージャ1へのプログラムの実行状況、あるいは計算機リソースの要求値の送信によって、ジョブマネージャ1は、プログラムの実行環境を変更する。実施例1では、プログラムを実行する並列計算機環境側と、ジョブマネージャ1とが並行に処理を実行する。以下、プログラムが最初に並列計算機実行環境E = e 上で動いているものとする。以下、並列計算機実行環境E = eを単に、並列計算機E=eという。また、「並列計算機E=eのいずれかの計算ノードがプログラムを実行する」ことを単に、「並列計算機E=eがプログラムを実行する」という。
 図6に、並列計算機環境側の処理フローを例示する。並列計算機E=eは、プログラムの実行を終了した場合は、処理を完了する(S1)。
 並列計算機E=eは、プログラムの実行中にparallel_run_level の呼び出し箇所に到達したら、parallel_run_levelのライブラリ関数を実行する(S2)。
 並列計算機E=eは、parallel_run_level のライブラリ関数において、プログラム実行時の各パラメータの値N_PRIORITY,N_NODE,N_CONNECTION,ADJUST_P を取得する(S3)。
  並列計算機E=eは、parallel_run_level のライブラリ関数においてジョブマネージャ1にプログラムの実行環境を変更した方がよいか否かの判断を問い合わせるために、問い合わせイベントを作成する。そして、並列計算機E=eは、作成した問い合わせイベントをジョブマネージャ1に送信する。すると、ジョブマネージャ1によって、送信された問い合わせイベントがジョブマネージャ1のイベントキュー4に追加される(S4)。より具体的には、関数parallel_run_levelの呼び出し箇所に到達した計算ノードは、ランタイムライブラリ中に用意された通信機能により、関数parallel_run_levelのパラメータで与えられる情報をジョブマネージャ1に送信する。
 問い合わせイベントには以下の情報を含める。すなわち、問い合わせイベントに含まれる情報は、現在の並列計算機環境の番号e、プログラムのパラメータ値(N_PRIORITY,N_NODE,N_CONNECTION,ADJUST_P)である。ジョブマネージャ1は、イベントキュー4に追加された各問い合わせイベントのN_PRIORITYの値によって、問い合わせイベントの処理に優先順位を付けて処理する。
 さらに、並列計算機E=eは、parallel_run_level のライブラリ関数において、ジョブマネージャ1から問い合わせイベントに対する返信メッセージが来るまで、プログラム実行状態を一時休止状態にする処理を実行する(S5)。
 そして、ジョブマネージャ1から問い合わせイベントに対する返信メッセージが返信されると、並列計算機E=eは、その返信内容によって以下のように処理を分ける(S6)。
 プログラムの実行環境を変更しないことを指示する返信メッセージを受信した場合には、並列計算機E=eは、一時休止状態からプログラムの実行を再開し、制御をS1に戻す。
 プログラムの実行環境を変更することを指示する返信メッセージを受信した場合、並列計算機E=eは、制御をS7に進める。そして、並列計算機E=eは、プログラムの実行環境の変更を指示する返信メッセージの内容から、移動する先の実行環境番号e0を取り出す(S7)。
 次に、並列計算機E=eは、プログラムの現在の実行イメージを主記憶装置、あるいは外部記憶装置に保存する。この場合、プログラムの現在の実行イメージとは、実行可能なバイナリデータ(プログラムのバイナリコード)の他、レジスタセットの値を含む、コンテキストと呼ばれるものである。コンテキストには、例えば、プログラムがどこまで実行されたかを示すチェックポイントと呼ばれる情報を含めてもよい。
 プログラムの現在の実行イメージの保存先は、プログラムの現在の実行環境である並列計算機E=eと、移動する先の実行環境である並列計算機E=e0の両方からデータの読み出しと書き込みが可能な領域が望ましい。なお、並列計算機E=eと、移動する先の並列計算機E=e0の両方からデータの読み出しと書き込みが可能な領域は、例えば、コンピュータシステムの共有メモリ、共有ディスク、ネットワーク2上の共有可能な記憶装置領域、ジョブマネージャ1の主記憶装置、ジョブマネージャ1の外部記憶装置等である。
 ただし、プログラムの現在の実行イメージを一旦、プログラムの現在の実行環境である並列計算機E=eの主記憶装置、あるいは外部記憶装置に保存し、移動する先の実行環境である並列計算機E=e0の主記憶装置、あるいは外部記憶装置に転送してもよい。例えば、並列計算機E=eは、並列計算機E=eのフロントエンドプロセッサの主記憶装置、あるいは外部記憶装置に、現在の実行イメージを一旦保存すればよい。そして、並列計算機E=eは、保存した現在の実行イメージを並列計算機E=e0のフロントエンドプロセッサの主記憶装置、あるいは外部記憶装置に、転送すればよい。
 新しい実行環境である並列計算機E=e0でプログラムの実行を継続するために、並列計算機E=eは、並列計算機実行環境e0の実行待ちキューにプログラムの実行予約の登録を並列計算機E=e0に依頼する(S8)。並列計算機E=e0は、実行待ちキューをプログラムのN_PRIORITY の値によって、プログラムの実行に優先順位を付けて処理する。
 新しい実行環境である並列計算機E=e0でプログラムの実行の継続実行が開始すると、プログラムは、新しい実行環境E=e0でステップS1からの処理を繰り返す。このとき、プログラムの実行イメージに含まれるコンテキスト、レジスタセットの値、チェックポイント等を用いて、プログラムの実行が再開される。
 図7に、ジョブマネージャ1側の処理フローを例示する。ジョブマネージャ1は、イベントキュー4が空ならば、次の問い合わせイベントが到着するまで待つ(T1)。以下、問い合わせイベントを単にイベントともいう。イベントキュー4が空でなければ、ジョブマネージャ1は、イベントキュー4の先頭からイベントZを取り出す。そして、ジョブマネージャ1は、制御をT2に進める。
 ジョブマネージャ1は、イベントZから次の情報を取り出す。すなわち、ジョブマネージャ1は、イベントを発行した並列計算機環境の番号e、およびイベントを発行したプログラムのパラメータ値(N_PRIORITY,N_NODE,N_CONNECTION,ADJUST_P)を読み出す(T2)。ジョブマネージャ1のCPUは、プログラムを実行するために要求される要求値を取得する手段の一例として、T2の処理を実行する。
 次に、ジョブマネージャ1は、イベントZから取り出した情報から、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Cを作成する(T3)。集合Cはイベントを発行した並列計算機環境の番号eを含む可能性がある。つまり移動しないという選択肢もあり得る。集合Cの作成方法は以下の通りである。
 ジョブマネージャ1は、パラメータN_NODEの値をnとし、N_CONNECTIONの値をcとする。また、各並列計算機環境eの計算ノード数をNe、通信機能のレベルをCe とする。以下を満たす並列計算機環境の集合Cを求める。なお、各並列計算機環境の計算ノード数、通信機能のレベル等は、例えば、図9に例示する並列計算機環境テーブルで管理しておけばよい。
 C = {e|Ne >=n、かつ、Ce>=c};
すなわち、ジョブマネージャ1は、イベントZから取り出したパラメータに指定された計算機リソース以上の資源をもつ並列計算機環境の集合を作成する。
 次に、ジョブマネージャ1は、集合Cから、イベントZに対応するプログラムの次の実行環境e0を決定する(T4)。ジョブマネージャ1のCPUは、選択手段の一例として、T4の処理を実行する。
 集合C= 空集合; である場合、すなわち、どの並列計算機環境を選択しても、パラメータに指定された計算機リソースが満足できない場合には、ジョブマネージャ1は、選択可能な並列計算機環境E=0からE=eの中で、最も高機能の並列計算機環境を選択する。どの並列計算機環境を選択しても、パラメータに指定された計算機リソースが満足できない場合には、最も高機能の並列計算機環境を選択するという点で、ジョブマネージャ1は、可能な範囲で要求値に適合する処理能力の並列計算機環境を選択すると言える。
 集合Cが複数の並列計算機環境の候補を含む場合には、ジョブマネージャ1は、集合Cに含まれる候補の中から最も機能の劣る並列計算機環境を選択する。移動先の計算機環境を決定する場合には、ジョブマネージャ1は、以下の追加の状況判断も実行する。集合Cに含まれる候補の中から最も機能の劣る並列計算機環境を選択するという点においても、ジョブマネージャ1は、可能な範囲で要求値に適合する処理能力の並列計算機環境を選択すると言える。
 パラメータ値から現在の計算機環境eよりも劣るレベルの計算機環境へ移動すると判断した場合で、かつeにN_PRIORITYよりも高い優先度をもつプログラムが実行待ちキューに存在しない場合;この場合には、ジョブマネージャ1は、現在の計算機環境eに余裕があると考えて、プログラムの実行環境を移動しないと判定する。
 移動先の計算機環境でN_PRIORITY よりも高い優先順位をもつプログラムが動作している場合で、かつ、それよりも高機能の計算機環境の候補により高い優先順位をもつプログラムが存在しない場合;この場合には、ジョブマネージャ1は移動先の計算機環境よりも、余裕のある、より高機能の計算機環境へ移動すると判定する。
 計算機環境の機能の優劣の順序を一意に決定できない場合、例えば、n = 100; c = 100 について、Nx = 100;Cx = 200 である並列計算機環境gと,Ny = 200;Cy = 100 である環境並列計算機hがある場合は、事前に、環境並列計算機gとhのうちどちらを優先的に使うか決めておけばよい。
 ジョブマネージャ1は、決定した変更先の計算機環境をe0とする。ADJUST_PがTRUEで、かつ移動先の計算機環境e0がハードウェアの故障などで一時的に利用できない場合は、ジョブマネージャ1は、e0を選択候補から外して、再びT4の処理を実行する。
 ジョブマネージャ1は、イベントを発行した並列計算機環境eへ向けて、実行一時休止中のプログラムを変更先の計算機環境へe0移動するようにメッセージを返信する(T5)。ジョブマネージャ1のCPUは、切替制御手段の一例として、T5の処理を実行する。
 このとき,もしe=e0であれば、ジョブマネージャ1は、計算機環境は変更しないように並列計算機環境にメッセージを送信する。そして、イベントマネージャ1は、次のイベントを処理するために制御をT1に戻す(T6)。
 図8に、集合Cから、問い合わせイベントの情報に応じてプログラムの次の実行環境e0を決定する処理(図7のT4)の詳細を例示する。この処理では、イベントマネージャ1は、処理T3で作成した集合C、すなわち、プログラムの実行環境の変更先の候補となるプログラムの実行環境の集合Cが空集合か否かを判定する(T41)。集合Cが空集合の場合、イベントマネージャ1は、コンピュータシステム中で最も高機能の並列計算機環境を変更先の並列計算機環境として選択する(T42)。そして、イベントマネージャ1は、処理を終了する。
 一方、集合Cが空集合でない場合、イベントマネージャ1は、集合C中の最も低機能の並列計算機環境を変更先の並列計算機環境Xとして選択する(T43)。そして、イベントマネージャ1は、変更先の並列計算機環境Xが現並列計算機環境より低機能であって、かつ、現並列計算機環境でN_PRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定する(T44)。T44の条件が満たされた場合、ジョブマネージャ1は、並列計算機環境を変更しない決定をする。現環境に空きがある場合で、より低機能の並列計算機環境に余裕が少ない場合には、並列計算機環境を変更しない方がよいからである。すなわち、現並列計算機環境を次の並列計算機環境として選択する(T45)。そして、イベントマネージャ1は、処理を終了する。なお、それぞれの並列計算機環境で実行中の優先度については、例えば、図9に例示する並列計算機環境テーブルで管理しておけばよい。ジョブマネージャ1のCPUは、切替抑止手段の一例として、T45の処理を実行する。
 また、T44の条件が満たされない場合、イベントマネージャ1は、変更先の並列計算機環境XでN_PRIORITYよりも優先度の高いプロセスが実行されており、かつ、並列計算機環境Xよりも高機能の並列計算機環境Yに空きがある条件が満たされるか否かを判定する(T46)。ここで、並列計算機環境Yに空きがあるとは、並列計算機環境YでN_PRIORITYよりも優先度の高いプロセスが実行されていないことを例示できる。
 T46の条件が満たされた場合、ジョブマネージャ1は、並列計算機環境Xよりも高機能の並列計算機環境Yを変更先の並列計算機環境として選択する(T47)。より高機能の並列計算機環境に空きがある場合には、有効活用した方がコンピュータシステム全体としての効率上問題が生じない上に、問い合わせイベントの対象となっているプログラムをより高速に実行できるからである。すなわち、ジョブマネージャ1のCPUは、第1コンピュータに代えて前記第3コンピュータを選択する処理の一例として、T47の処理を実行する。そして、イベントマネージャ1は、処理を終了する。
 図9に、並列計算機環境テーブルのデータ例を示す。並列計算機環境テーブルは、例えば、ジョブマネージャ1の主記憶装置、あるいは外部記憶装置に格納される。並列計算機環境テーブルを記憶するジョブマネージャ1の主記憶装置、あるいは外部記憶装置が処理能力を含む管理情報を記憶する手段の一例である。また、並列計算機環境テーブルが管理情報の一例である。
 図9の表で1行が1つのレコードに対応し、1つの並列計算機環境を定義する。図9のように、並列計算機環境テーブルの1つのレコードは、並列計算機環境名、計算ノード数、通信機能レベル、割当プログラム数、割当済み最高優先度、割当済み最低優先度の各フィールドを有する。
 並列計算機環境名は、個々の並列計算機環境を識別するための情報である。並列計算機環境名は、例えば、並列計算機環境テーブル内でユニークな文字列とすることができる。また、並列計算機環境名は、例えば、フロントエンドノードのノード名、あるいはネットワーク2上のアドレスであってもよい。例えば、並列計算機環境名は、フロントエンドノードのInternet Protocol(IP)アドレス、フロントエンドノードの通信インターフェースのMACアドレス等であってもよい。
 計算ノード数は、並列計算機環境名で指定される並列計算機環境での計算ノード数である。通信機能レベルは、並列計算機環境名で指定される並列計算機環境での通信機能のレベルである。通信機能のレベルは、例えば、ネットワークのトポロジ、帯域幅、データ転送速度等によって設定される。
 割当プログラム数は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラム数である。割当プログラム数は、ジョブマネージャ1の処理に応じて変動する。例えば、ジョブマネージャ1は、並列計算機環境名で指定される並列計算機環境への並列計算機環境の変更をプログラムに指定したときに、そのプログラムが現在割り当てられている、変更元の並列計算機環境での割当プログラム数を1減算し、変更先の並列計算機環境での割当プログラム数を1加算すればよい。
 ただし、各並列計算機環境は、それぞれプログラムの実行環境として、割当を受け付けたときに、プログラムの割当増加をジョブマネージャ1に通知するようにしてもよい。また、各並列計算機環境は、実行中のプログラムを他の並列計算機環境に変更を依頼し、変更の依頼が受け付けられたとき、プログラムの割当減少をジョブマネージャ1に通知するようにしてもよい。ジョブマネージャ1は、それぞれの並列計算機環境から、プログラムの割当増加の通知、あるいは割当減少の通知を受けたときに、割当プログラム数を変更すればい。割当プログラム数が多いほど、並列計算機環境名で指定される並列計算機環境が込み合っているということができる。
 割当済み最高優先度は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラムの優先度のうち、最も高い優先度である。割当済み最高優先度が高いほど、新たに割り当てられるプログラムによって当該並列計算機環境を利用することが難しいということができる。逆に、割当済み最高優先度が低いほど、新たに割り当てられるプログラムによって当該並列計算機環境を利用できる可能性が高いということができる。
 ジョブマネージャ1は、並列計算機環境名で指定される並列計算機環境へ並列計算機環境を移動するようにプログラムにメッセージを返信したときに、メッセージが返信されたプログラムの優先度に応じて、変更前後の並列計算機環境での割当済み最高優先度を変更すればい。また、各並列計算機環境は、それぞれプログラムの実行環境として、割当を受け付けたときに、割り当てたプログラムの優先度をジョブマネージャ1に通知するようにしてもよい。また、各並列計算機環境は、実行中のプログラムを他の並列計算機環境に変更を依頼し、変更の依頼が受け付けられ、プログラムの割当が削除されたときに、割当が削除されたプログラムの優先度をジョブマネージャ1に通知するようにしてもよい。ジョブマネージャ1は、それぞれの並列計算機環境から、プログラムに割り当てられた優先度、あるいは割当が削除された優先度の通知を受けたときに、割当済み最高優先度を変更してもよい。
 割当済み最低優先度は、並列計算機環境名で指定される並列計算機環境に現時点で割り当てられているプログラムの優先度のうち、最も低い優先度である。割当済み最低優先度が高いほど、多くのプログラムが高い優先度で割り当てられてことが分かる。割当済み最低優先度についても、割当済み最高優先度と同様に管理すればよい。
 <効果>
 以上述べたように、本コンピュータシステムによれば、複数の並列計算機環境を有効利用することができる。コンピュータシステムの各並列計算機環境中の各計算ノードは、プログラム中の状況記述の箇所を実行すると、その状況記述に設定されたプログラムの実行状況、そのプログラムに望ましい計算ノード数、通信機能のレベル等をジョブマネージャ1に送信する。このような処理によって、コンピュータシステムは、それぞれのプログラムの実行状況、好ましい計算機リソースの情報を適時に取得できる。
 コンピュータシステムのジョブマネージャ1は、一時的あるいはある時点以降、データ通信機能の要求レベルが低くなるプログラムの実行を、データ通信機能のレベルが低い並列計算機環境へ移動する。この処理によって、ジョブマネージャ1は、データ通信機能の高い並列計算機の機能をより優先度の高いプログラムへ割り当てることができる。
 ジョブマネージャ1は、計算ノード数の要求数が少ないプログラムの実行を計算ノード数が少ない並列計算機環境へ移動する。この処理によって、ジョブマネージャ1は、並列計算機の機能をより優先度の高いプログラムへ割り当てることができる。
 ジョブマネージャ1は、一時的あるいはある時点以降、データ通信機能の要求レベルが高くなるプログラムの実行をデータ通信機能のレベルが高い並列計算機環境へ移動する。この処理によって、コンピュータシステムでは、並列計算機を有効利用することができる。
 ジョブマネージャ1は、一時的あるいはある時点以降,必要とする計算ノード数が多くなるプログラムの実行を計算ノード数が多い並列計算機環境へ移動することによって、大規模並列計算機の機能を有効利用することができる。
 複数の並列プログラムが複数の問い合わせイベントを送信して並列計算機環境の変更の要否を問い合わせた場合に、問い合わせイベントの優先順位を考慮し、複数の並列計算機環境を決定し、結果として、コンピュータシステム全体の有効利用することができる。
 また、T44、T45に示したように、ジョブマネージャ1は、変更先の並列計算機環境Xが現並列計算機環境より低機能であって、かつ、現並列計算機環境でN_PRIORITYよりも優先度の高いプロセスが実行されていない条件が満たされるか否かを判定する。そして、この条件が満たされた場合、ジョブマネージャ1は、並列計算機環境を変更しない決定をする。したがって、コンピュータシステム1は、現環境に空きがある場合には、現在よりも低機能の並列計算機環境に並列計算機環境を変更しない決定をする。したがって、現環境に空きがある場合には、柔軟かつ効率的に計算機リソースがプログラムに割り当てられる。
 また、T46、T47に示したように、変更先の並列計算機環境XでN_PRIORITYよりも優先度の高いプロセスが実行されており、かつ、並列計算機環境Xよりも高機能の並列計算機環境Yに空きがある条件が満たされるか否かを判定する。そして、この条件が満たされた場合、ジョブマネージャ1は、並列計算機環境Xよりも高機能の並列計算機環境Yを変更先の並列計算機環境として選択する。このような処理によって、本コンピュータシステムは、より高機能の並列環境に空きがある場合には、空きのある高機能の並列計算機環境を有効活用することができる。
 以下、図10から図14の図面を参照して、実施例2に係るコンピュータシステムを説明する。実施例1では、複数の並列計算機環境E=0からE=eを有するコンピュータシステムで実行されるそれぞれのプログラムが、実行状況等を含む問い合わせイベントをジョブマネージャ1に送信し、並列計算機環境の変更の要否について指示を受けるコンピュータシステムについて説明した。実施例2では、並列計算機環境E=0からE=eの一例として、図10から図14に示されるものを適用し、具体的な運用例を説明する。したがって、図4に示したジョブマネージャ1と個々の並列計算機環境の接続、ジョブマネージャ1の機能等、図5から図9に示したジョブマネージャ1の処理、個々のプログラムで実行される問い合わせイベントの送信および並列計算機環境の変更の要否について指示の受信処理等は、実施例1と同様である。そこで、実施例2では、実施例1と同一の構成および作用については、実施例1の図面を踏襲するものとして説明する。
 なお、実施例1では、それぞれの並列計算機環境における計算ノード数、通信機能のレベルは、図9の並列計算機環境テーブルで管理した。しかし、実施例2では、並列計算機環境の名称中に、計算ノード数、通信機能のレベルを埋め込む。例えば、並列計算機環境N16C100は、計算ノード数16、通信機能レベル100を示す。計算ノード数および通信機能のレベルが同数の並列計算機環境が複数ある場合には、並列計算機環境N16C100-1、N16C100-2のように管理すればよい。したがって、実施例2では、図10に示した並列計算機環境テーブルのうち、計算ノード数、通信機能レベルは、省略してもよい。
 実施例2では、次に示す5種類の並列計算機環境が存在すると仮定する。ただし、本コンピュータシステムの構成において、並列計算機環境の数に限定はない。また、以下の並列計算機環境では、計算ノードの数は、9個または16個のものを例示する。しかし、本コンピュータシステムの構成において、計算ノードの数に限定がある訳ではない。例えば、計算ノードの数は数千、数万であってもよい。
 図10に、並列計算機環境N16C100を例示する。ここで、N16C100は、並列計算機環境を識別する情報であるとともに、ハードウェア資源の仕様を明示する情報でもある。すなわち、N16は、計算ノード数が16個であることを示す。図10で4行4列の矩形が計算ノードを示す。矩形間の実線がネットワークのリンクを示す。
 C100は、計算ノード間の通信機能が最も高機能レベルである並列計算機環境を示す。実施例2では、計算ノード間の通信機能のレベルをC0からC100で表す。ここで、計算ノード間の通信機能の種類、レベル付けの仕方に限定がある訳ではない。例えば、計算ノード間の帯域幅、1つの計算ノードに対して、他の計算ノードを中継せずに直接通信できる相手計算ノード数、等の情報から、通信機能のレベルを設定することができる。
 図10の例では、マトリクス状に配列された計算ノードは、それぞれ行方向、列方向の他、対角方向の計算ノードと接続されている。また、16個の計算ノードの他に1個のフロントエンドノード31が設けられている。
 フロントエンドノード31は、図4に示したネットワーク2を介してジョブマネージャ1および他の並列計算機環境と接続される。フロントエンドノード31は、ジョブマネージャ1または他の並列計算機環境で実行されるプログラムから、プログラムの実行要求を受け付ける。そして、フロントエンドノード31は、受け付けたプログラムの実行要求をプログラムの実行待ちキューに登録する。
 また、フロントエンドノード31は、プログラムの実行待ちキューに登録されたプログラムを計算ノードに引き渡し、実行させる。プログラムの実行待ちキューに登録されたプログラムは、それぞれのプログラムに設定された優先順で、計算ノードに引き渡される。
 この場合の計算ノードでの実行されるプログラムと、プログラムの実行待ちキューに登録されたプログラムとの入れ替え手順は、通常のコンピュータシステムと同様である。例えば、それぞれのプログラムに割り当てられた処理時間が経過すると、計算ノードでの実行されるプログラムは、実行が中断され、プログラムの実行待ちキューに再度登録される。そして、プログラムの実行待ちキューで優先度順に、プログラムが計算ノードに引き渡されるようにすればよい。
 また、それぞれのプログラムに割り当てられた処理時間が経過する前に、プログラムが入出力待ちの状態となった場合には、プログラムの実行が中断され、プログラムの実行待ちキューに再度登録されるようにしてもよい。
 図11に、並列計算機環境N16C50を例示する。並列計算機環境N16C50の計算ノードの数は16個で、計算ノード間の通信機能が平均的レベルである。例えば、マトリクス情報に配列された計算ノード間で、行方向および列方向の接続はあるが、対角方向の接続は設けられていない。したがって、それぞれの計算ノードが対角方向の計算ノードと通信するためには、行方向または列方向に隣接する計算ノードを経由することになる。
 図12に、並列計算機環境N16C0を例示する。並列計算機環境N16C0の計算ノードの数は16個で、計算ノード間の通信機能は最も低いレベルである。図12で計算ノード間の接続、すなわちネットワーク2のトポロジは、図11のN16C50と同様である。しかし、並列計算機環境N16C0において、計算ノード間のリンクの帯域は、図11のN16C50よりも狭い。
 図13に、並列計算機環境N9C100を例示する。並列計算機環境N9C100の計算ノードの数は9個で、計算ノード間の通信機能は最も高いレベルである。図14に、並列計算機環境N9C0を例示する。並列計算機環境N9C0の計算ノードの数は9個で、計算ノード間の通信機能は最も低いレベルである。
 プログラムPの実行環境の変更手順の実装例を以下に示す。プログラムPは以下に示す状況記述を含むものとする。
/* R0 */
parallel_run_level (9, 16, 50, FALSE); /* D1 */
/* R1 */
parallel_run_level (9, 5, 50, FALSE); /* D2 */
/* R2 */
parallel_run_level (20, 200, 200, TRUE); /* D3 */
/* R3 */
parallel_run_level (0, 3, 0, FALSE); /* D4 */
/* R4 */
 また、プログラムPの実行開始時点R0の実行環境はN16C100であるとする。
 実行環境N16C100上でプログラムPを実行しているときに、D1の状況記述に到達することで、最初の実行環境変更の判断が発生する(図6のステップS2)。
 実行環境N16C100からジョブマネージャ1へプログラムPの移動先の問い合わせのイベントを送る(図6のステップS3、S4)。問い合わせのイベントを送った後は,実行環境N16C100上でのプログラムPの実行は一時休止状態とする(図6のステップS5)。
 ジョブマネージャ1は、実行環境N16C100からの問い合わせのイベントを受け取り、イベントが含むD1の状況記述の情報から、ジョブマネージャ1はプログラムPの実行環境の移動先の候補を作成する。この場合の移動先の候補はN16C50とN16C100の2つとなる。ジョブマネージャ1は、この候補から最も機能の劣るN16C50を選択する(図7のステップT1、T2、T3、T4)。ただし、この時点で追加の状況判断(図8のT44参照)から、状況によってはN16C100で実行を続ける、すなわち移動しないという選択もあり得る。ここでは、その選択は発生しなかったと仮定する。
 ジョブマネージャ1は、実行環境N16C100のプログラムPに対して、実行環境をN16C100からN16C50へ変更するように、返信メッセージを送る(図7のステップT5)。
 実行環境N16C100上で一時実行休止状態になっているプログラムPは、ジョブマネージャ1からの返信メッセージを受け取り,返信メッセージが示すN16C50へ実行環境を変更する(図6のステップS6、S7、S8)。
 実行環境N16C50へ移動したプログラムPは、実行待ちキューへ登録される。実行待ちキューで実行の順番がくると、フロントエンドプロセッサは、実行待ちキューからプログラムPを指定する情報を取得し、プログラムPの実行を実行環境N16C50上で再開する(図6のステップS8、S1)。
 以上の処理の結果として、プログラムPの実行範囲R1はN16C50上での実行となる。以下、本コンピュータシステムは、同様の手順でparallel_run_levelを処理する。
 例えば、実行環境N16C50上でプログラムPを実行しているときに、D2の状況記述に到達することで,次の実行環境変更の判断が発生する。ここでは、計算ノードの数を減らして良いというN_NODE=5の指定から、コンピュータシステムはプログラムPの実行環境をN9C50へ変更する。結果として、プログラムPの実行範囲R2はN9C50上での実行となる。
 実行環境N9C50上でプログラムPを実行しているときに、D3の状況記述に到達することで,次の実行環境変更の判断が発生する。D3の状況記は、これ以降、計算ノードの数も通信機能も最高レベルの機能が最優先で必要であることを意味している。そこで、最も高機能の実行環境N16C100へプログラムPの実行を移動する。
 ただし、D3の状況記述では、ADJUST_PがTRUEであるため、N16C100がハードウェアの故障などで一時的に利用できない場合は、別の候補を選択する。例えば、N16C50が選択される。
 実行環境N16C100上でプログラムPを実行しているときに、D4の状況記述に到達することで、最後の実行環境変更の判断が発生する。D4の状況記述は、これ以降、優先順位も計算ノード数も通信機能も最低レベルでよいことを示している。そこで、コンピュータシステムは、最も機能の低い実行環境N9C0へプログラムPの実行を移動する。
 <変形例>
 上記実施例1、実施例2では、ジョブマネージャ1問い合わせイベントに応答して、次の並列計算機環境Xをコンピュータプログラムに指示した。そして、問い合わせイベントに対する応答を受けたコンピュータプログラムが実行中のコンテキストを含む実行形式を保存し、次の並列計算機環境Xに依頼し、実行待ちキューに登録された。このような処理に代えて、ジョブマネージャ1がコンピュータプログラムを実行する現在の並列計算機実行環境EのOSに対して、プログラムの実行中断と、次の並列計算機環境Xへの移動を指示してもよい。現在の並列計算機実行環境EのOSは、ジョブマネージャ1からの指示を受けて、実行中のプログラムのコンテキストを含む実行形式を保存し、次の並列計算機環境XのOSに実行を依頼してもよい。
 上記実施例1、2では、コンピュータシステムは、ネットワーク2で接続される複数の並列計算機環境を有していた。しかし、実施例1、実施例2のような複数の並列計算機環境に代えて、複数の仮想計算機を有するコンピュータシステムを用いて、複数のプログラムを実行する場合にも、実施例1、実施例2の手順を適用できる。つまり、コンピュータシステムの並列計算機環境は、物理的に異なる並列計算機環境ではなく、複数のCPUを有するコンピュータシステム上に構築される仮想計算機であってもよい。つまり、どのプログラムをどの仮想計算機に実行されるかを図6-図8の処理と同様に処理することで、適切な仮想計算機にプログラムを実行させ、コンピュータシステム全体の効率を向上することができる。
 <コンピュータが読み取り可能な記録媒体>
 ジョブマネージャ1で例示されるコンピュータその他の機械、装置(以下、コンピュータ等)に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
 ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、CD-ROM、CD-R/W、DVD、ブルーレイディスク、DAT、8mmテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやROM(リードオンリーメモリ)等がある。
 1  ジョブマネージャ
 2  ネットワーク
 4  イベントキュー
31  フロントエンドノード

Claims (16)

  1.  処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理装置であって、
      前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、
      前記複数のコンピュータのうちのプログラムの実行が割り当てられているプログラム実行コンピュータから、前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、
      前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、
      前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備える管理装置。
  2.  前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択する請求項1に記載の管理装置。
  3.  前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
     前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項2に記載の管理装置。
  4.  前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択する請求項2または3に記載の管理装置。
  5.  処理能力の異なる複数のコンピュータと、前記複数のコンピュータへの処理の割り当てを管理する管理装置と、を有するコンピュータシステムであって、
     前記管理装置は、
      前記複数のコンピュータそれぞれの処理能力を含む管理情報を記憶する手段と、
      前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得する手段と、
      前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択手段と、
      前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御手段と、を備えるコンピュータシステム。
  6.  前記選択手段は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択する請求項5に記載のコンピュータシステム。
  7.  前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
     前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止手段をさらに備える請求項6に記載のコンピュータシステム。
  8.  前記選択手段は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択する請求項6または7に記載のコンピュータシステム。
  9.  処理能力の異なる複数のコンピュータへの処理の割り当てを管理する管理方法であって、管理装置が、
      前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、
      前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、
      前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てる切替制御ステップと、を実行する管理方法。
  10.  前記選択ステップでは、前記管理装置は、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択し、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択する請求項9に記載の管理方法。
  11.  前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
     前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止ステップをさらに実行する請求項10に記載の管理方法。
  12.  前記選択ステップでは、前記管理装置は、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択する請求項10または11に記載の管理方法。
  13.  管理装置に、処理能力の異なる複数のコンピュータへの処理の割り当てを管理させるプログラムであって、
     前記複数のコンピュータのうちのプログラムの実行が割り当てられている、プログラム実行コンピュータから前記プログラムを実行するために要求される処理能力を含む要求値を取得するステップと、
     前記複数のコンピュータそれぞれの処理能力を示す情報を参照し、前記複数のコンピュータの中から、前記要求値に適合する処理能力のコンピュータを選択する選択ステップと、
     前記プログラム実行コンピュータに割り当てられているプログラムを前記選択されたコンピュータへ割り当てるステップと、を実行させるためのプログラム。
  14.  前記選択ステップでは、前記管理装置に、前記処理能力の要求値を満たすコンピュータが存在する場合には、前記処理能力の要求値を満たすコンピュータ中で最も処理能力の低い第1コンピュータを選択させ、前記処理能力の要求値を満たすコンピュータが存在しない場合には、前記複数のコンピュータ中で最も処理能力の高い第2コンピュータを選択させるための請求項13に記載のプログラム。
  15.  前記要求値は、前記プログラムを割り当てられるコンピュータに要求される、前記プログラムの実行の優先度を含み、
     前記第1コンピュータの処理能力が前記プログラム実行コンピュータの処理能力より低く、かつ、前記要求値で指定される、前記第1コンピュータへ割り当てられるプログラムの優先度よりも高い優先度のプログラムが前記プログラム実行コンピュータに割り当てられていない場合に、前記選択された第1コンピュータへの割り当てに切り替えることを抑止する切替抑止ステップをさらに実行させる請求項14に記載のプログラム。
  16.  前記選択ステップでは、前記管理装置に、前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられた、前記処理能力の要求値を満たすコンピュータと、当該コンピュータよりも処理能力が高く、且つ前記プログラム実行コンピュータに割り当てられた優先度よりも高い優先度のプログラムが割り当てられていないコンピュータとが存在する場合、前記選択手段は、前記第1コンピュータとして当該処理能力の高いコンピュータを選択させる請求項14または15に記載のプログラム。
PCT/JP2011/071281 2011-09-16 2011-09-16 コンピュータシステム WO2013038566A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2011/071281 WO2013038566A1 (ja) 2011-09-16 2011-09-16 コンピュータシステム
JP2013533448A JP5783259B2 (ja) 2011-09-16 2011-09-16 コンピュータシステム
US14/205,435 US9400691B2 (en) 2011-09-16 2014-03-12 Process allocation management apparatus, system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/071281 WO2013038566A1 (ja) 2011-09-16 2011-09-16 コンピュータシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/205,435 Continuation US9400691B2 (en) 2011-09-16 2014-03-12 Process allocation management apparatus, system and method

Publications (1)

Publication Number Publication Date
WO2013038566A1 true WO2013038566A1 (ja) 2013-03-21

Family

ID=47882824

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/071281 WO2013038566A1 (ja) 2011-09-16 2011-09-16 コンピュータシステム

Country Status (3)

Country Link
US (1) US9400691B2 (ja)
JP (1) JP5783259B2 (ja)
WO (1) WO2013038566A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515244A (ja) * 2014-03-07 2017-06-08 中国科学院声学研究所Institute Of Acoustics, Chinese Academy Of Sciences オンサイトサービスを提供するシステム及び方法
CN109558937A (zh) * 2017-09-27 2019-04-02 三星电子株式会社 神经网络系统和神经网络系统的操作方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6264575B2 (ja) * 2015-10-16 2018-01-24 コニカミノルタ株式会社 ジョブ処理装置管理サーバプログラム
US20220308869A1 (en) * 2021-03-26 2022-09-29 International Business Machines Corporation Computer management of microservices for microservice based applications

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282013A (ja) * 1994-04-14 1995-10-27 Hitachi Ltd 分散処理システム
JPH10198643A (ja) * 1997-01-09 1998-07-31 Hitachi Ltd 分散計算機システム
JPH1124949A (ja) * 1997-07-04 1999-01-29 Toshiba Corp 並列処理制御装置
JP2002108839A (ja) * 2000-09-28 2002-04-12 Mitsubishi Electric Corp 通信ネットワークシステム、ジョブ割当方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2009003942A (ja) * 2007-06-25 2009-01-08 Internatl Business Mach Corp <Ibm> それぞれが異なる実行能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09114684A (ja) * 1995-10-16 1997-05-02 Hitachi Ltd ジョブ振り分け方法
JP2004013866A (ja) * 2002-06-12 2004-01-15 Nec Corp 分散処理システム、タスク割り当て装置及びそれらに用いるタスク割当て方法並びにそのプログラム
US8028292B2 (en) 2004-02-20 2011-09-27 Sony Computer Entertainment Inc. Processor task migration over a network in a multi-processor system
TWI338844B (en) 2005-02-04 2011-03-11 Sony Computer Entertainment Inc Processor task migration over a network in a multi-processor system
JP4940613B2 (ja) * 2005-09-29 2012-05-30 日本電気株式会社 制約条件に基づいた資源選択システム、資源選択方法および資源選択プログラム
JP2010204979A (ja) 2009-03-04 2010-09-16 Renesas Electronics Corp コンパイル方法及びコンパイラ
US8321558B1 (en) * 2009-03-31 2012-11-27 Amazon Technologies, Inc. Dynamically monitoring and modifying distributed execution of programs
JP2010277300A (ja) * 2009-05-28 2010-12-09 Panasonic Corp マルチプロセッサシステムにおける省電力制御装置およびモバイル端末
TW201112006A (en) * 2009-05-29 2011-04-01 Ibm Computer system, method and program product
US8719415B1 (en) * 2010-06-28 2014-05-06 Amazon Technologies, Inc. Use of temporarily available computing nodes for dynamic scaling of a cluster
US8260840B1 (en) * 2010-06-28 2012-09-04 Amazon Technologies, Inc. Dynamic scaling of a cluster of computing nodes used for distributed execution of a program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282013A (ja) * 1994-04-14 1995-10-27 Hitachi Ltd 分散処理システム
JPH10198643A (ja) * 1997-01-09 1998-07-31 Hitachi Ltd 分散計算機システム
JPH1124949A (ja) * 1997-07-04 1999-01-29 Toshiba Corp 並列処理制御装置
JP2002108839A (ja) * 2000-09-28 2002-04-12 Mitsubishi Electric Corp 通信ネットワークシステム、ジョブ割当方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2009003942A (ja) * 2007-06-25 2009-01-08 Internatl Business Mach Corp <Ibm> それぞれが異なる実行能力を有する複数のプロセッサ・ユニットに跨りタスクをスケジュールする方法、コンピュータ・プログラム、データ処理装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515244A (ja) * 2014-03-07 2017-06-08 中国科学院声学研究所Institute Of Acoustics, Chinese Academy Of Sciences オンサイトサービスを提供するシステム及び方法
CN109558937A (zh) * 2017-09-27 2019-04-02 三星电子株式会社 神经网络系统和神经网络系统的操作方法
CN109558937B (zh) * 2017-09-27 2023-11-28 三星电子株式会社 神经网络系统和神经网络系统的操作方法

Also Published As

Publication number Publication date
US9400691B2 (en) 2016-07-26
JP5783259B2 (ja) 2015-09-24
US20140196052A1 (en) 2014-07-10
JPWO2013038566A1 (ja) 2015-03-23

Similar Documents

Publication Publication Date Title
WO2012066640A1 (ja) 計算機システム、マイグレーション方法及び管理サーバ
US8112526B2 (en) Process migration based on service availability in a multi-node environment
JP5117120B2 (ja) ストレージ装置のボリュームを管理する計算機システム、方法及びプログラム
US8230432B2 (en) Defragmenting blocks in a clustered or distributed computing system
JP5022030B2 (ja) コンピュータシステム、これを構成するサーバ、そのジョブ実行制御方法及びプログラム
EP3468151B1 (en) Acceleration resource processing method and apparatus
JP7280508B2 (ja) 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
KR101585160B1 (ko) 독립실행환경을 제공하는 분산 컴퓨팅 시스템 및 분산 컴퓨팅 시스템의 제어방법
JP5783259B2 (ja) コンピュータシステム
WO2020057438A1 (zh) 云计算服务中的软件调试的方法和装置
JP2005338985A (ja) 記憶領域管理方法及びシステム
JP6010975B2 (ja) ジョブ管理装置、ジョブ管理方法、及びプログラム
JPWO2005116832A1 (ja) 分散処理環境におけるジョブの実行を制御するためのコンピュータシステム、方法及びプログラム
US20090319662A1 (en) Process Migration Based on Exception Handling in a Multi-Node Environment
JP5818824B2 (ja) デュアル・モード・リーダ・ライタ・ロック
JP2012059152A (ja) データ処理を行うシステムおよびメモリを割り当てる方法
JP6666553B2 (ja) 情報処理装置、ジョブ管理方法およびジョブ管理プログラム
JP7176633B2 (ja) 仮想化基盤制御装置、仮想化基盤制御方法および仮想化基盤制御プログラム
JP6279816B2 (ja) ストレージ監視システムおよびその監視方法
KR20130104958A (ko) 다중 운영체제들을 실행하는 장치 및 방법
JP2022142456A (ja) 異常対処プログラム、異常対処システム、及び異常対処方法
JP5504651B2 (ja) 仮想マシンシステム、情報処理装置、リソース管理方法、プログラム及び記録媒体
WO2018173300A1 (ja) I/o制御方法およびi/o制御システム
JP2008276322A (ja) 情報処理装置、情報処理システムおよび情報処理方法
JP2013206233A (ja) メッセージ通信方法,メッセージ通信プログラムおよびコンピュータノード

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11872435

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013533448

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11872435

Country of ref document: EP

Kind code of ref document: A1