WO2012056487A1 - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
WO2012056487A1
WO2012056487A1 PCT/JP2010/006290 JP2010006290W WO2012056487A1 WO 2012056487 A1 WO2012056487 A1 WO 2012056487A1 JP 2010006290 W JP2010006290 W JP 2010006290W WO 2012056487 A1 WO2012056487 A1 WO 2012056487A1
Authority
WO
WIPO (PCT)
Prior art keywords
computer
computer node
node
processing
input
Prior art date
Application number
PCT/JP2010/006290
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 JP2012540539A priority Critical patent/JP5596793B2/ja
Priority to PCT/JP2010/006290 priority patent/WO2012056487A1/ja
Priority to US13/881,044 priority patent/US9942107B2/en
Publication of WO2012056487A1 publication Critical patent/WO2012056487A1/ja

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1687Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality

Definitions

  • the present invention relates to a technique for synchronizing computers in a multiple system in which a plurality of computers are connected by a network.
  • FTC fault tolerance computer
  • the technology to realize the software level synchronization between multiple computers without using a separate device such as a voter device is provided. It also provides a low overhead synchronization method.
  • a computer system having a plurality of computer nodes, each computer node having an external communication unit that receives a processing request, an application unit that executes processing according to the processing request, and a process that is executed by an application unit of each computer node
  • a synchronization unit that controls synchronization with another computer node, and an inter-node communication unit that transmits and receives information to and from another computer node.
  • the synchronization unit of each computer node adds the identification information of the computer node as the transmission source computer node identification information to the processing request to which the processing request identification information received by the external communication unit is added, and passes through the inter-node communication unit. To other computer nodes.
  • the synchronization unit of each computer node receives a processing request to which the identification information of the other computer node is added from another computer node via the inter-node communication unit. Then, the synchronization unit of each computer node has an inter-node communication unit according to a first predetermined criterion based on the number of computer nodes that have received the processing request to which the same processing request identification information is given via the external communication unit. Selects a processing request to be executed by the application unit from the processing request received from another computer node and the processing request received by the external communication unit, and the application unit executes the selected processing request.
  • a fault tolerance computer capable of synchronous processing with low overhead can be realized.
  • FIG. 10 is a diagram showing an example of a processing sequence of each computer node in case B. It is the figure which illustrated the contents of the external input packet management table of each computer node, the computer node process state table, and the input / output determination process counter in case B according to time. It is the figure which illustrated the content of the communication packet between nodes of each computer node with respect to transmission in case B according to time. It is a figure which shows the content of the communication packet between nodes of each computer node with respect to list preparation in case B according to time.
  • FIG. 11 is a diagram illustrating an example of a processing sequence of each computer node in case C. It is a figure which shows an example of the content of the communication packet between nodes of each computer node with respect to transmission between time T1 and between T1 'in case C.
  • FIG. 1 It is a figure which shows an example of the content of the communication packet between nodes of each computer node about transmission during time T2 in case C. It is a figure which shows an example of the content of the communication packet between nodes of each computer node about transmission during time T3 in case C. It is a figure which shows an example of the content of the communication packet between nodes of computer node 100A, 100B about the list creation between time T1 in case C. FIG. It is a figure which shows an example of the content of the communication packet between nodes of each computer node about the list preparation between time T2 in case C.
  • FIG. It is a figure which shows the content of the computer node structure management table of arbitrary computer nodes in case C according to time. It is a figure which shows an example of the content of the decision output management table of each computer node in case C. It is a figure which shows the example of a whole structure of the system in the case of adding a new computer node.
  • the present invention is not limited to the embodiments, and any application examples that meet the idea of the present invention are included in the present invention.
  • FIG. 1 is a diagram showing an example of the overall configuration of the majority vote synchronization system.
  • the majority synchronization system includes a single synchronization system 1 (also referred to as a fault tolerance computer), a plurality of terminals 2 and an external network 3.
  • the synchronization system 1 includes a plurality of computer nodes 100 and an internal network 4.
  • the synchronization system 1 receives an external input packet 500 from the terminal 2 via the external network 3.
  • a plurality of causal external input packets 500 arrive at the synchronization system 1 while keeping the transmission order.
  • the external input packet 500 is transmitted from the terminal 2 to the synchronization system 1 by the multicast method, and a response (processing result or the like) to this is returned from the synchronization system 1 to the terminal 2 by the multicast method.
  • a response processing result or the like
  • the application executed in the synchronization system 1 does not have an internal state (open state file, network connection, etc.).
  • the computer node 100 includes hardware such as a memory 101, a processor 102, a secondary storage device 103, an external communication interface 104 (in the figure, the interface is abbreviated as I / F), and an inter-node communication I / F 105, which are internal buses and the like. Are connected by a communication channel.
  • a software program for controlling the computing node 100 includes an application 200, infrastructure software 300, and an operating system 400. Further, the basic software 300 is roughly divided into an external input packet storage unit 301 and an input / output synchronization unit 310.
  • the input / output synchronization unit 310 is a processing state storage unit 311, an inter-node communication processing unit 312, an input synchronization unit 313, and a decision input storage unit.
  • the plurality of computer nodes 100 in the synchronization system 1 all have the same hardware / software configuration.
  • FIG. 1 shows an example of three terminals 2A, 2B, and 2C and three computer nodes 100A, 100B, and 100C, but the number is not particularly limited. The number of applications 200 and the number of types are not limited.
  • the terminal 2 and the computer node 100 are connected via the external network 3.
  • the external network 3 is connected to the inter-node communication I / F 105.
  • the computer nodes 100A, 100B, 100C in the synchronous system 1 are connected via an internal network 4 connected to the inter-node communication I / F.
  • the terminal 2 transmits a request to the synchronization system 1 through the external network 3, and the synchronization system 1 processes the request and returns the result to the terminal 2.
  • Each computer node 100 in the synchronization system 1 sends a request from the terminal 2 received through the external network 3 and the external communication I / F 104 to other computer nodes 100 via the internal network 4 and the inter-node communication I / F 105. It transmits, processes in cooperation with other computer nodes, processes it, and returns the processing result to the terminal 2.
  • the secondary storage device 103 in the computer node 100 stores an application 200, infrastructure software 300, and an operating system 400.
  • the processor 102 reads the application 200, the basic software 300, and the operating system 400 from the secondary storage device 103 into the memory 101 and expands them, executes the basic software 300, the application 200, and the operation system 400, and performs external communication I / O. Interrupts from F104 and inter-node communication I / F 105 are also processed.
  • operations described as processing executed by the application 200, the operation system 400, and the basic software 300 (including the components thereof) are actually performed by the processor 102 executing these software.
  • the external communication I / F 104 transmits and receives packets with the terminal 2 through the external network 3.
  • the inter-node communication I / F 105 transmits and receives packets between the computer nodes 100 through the internal network 4.
  • the operating system 400 deployed in the memory 101 controls the operation of the base software 300 and the application 200.
  • the external input packet storage unit 301 and the input / output synchronization unit 310 of the base software 300 operate as different tasks, and the application 200 is executed from the program processing unit 319 as necessary.
  • the external input packet storage unit 301 has an external input packet management table 550, and stores the external input packet 500 received by the external communication I / F 104 in the external input packet management table 550. Details of the external input packet 500 will be described later with reference to FIG. Details of the external input packet management table 550 will be described later with reference to FIG.
  • the processing state storage unit 311 holds a computer node processing state table 700, and the processing state of the computer node 100 is recorded. Details of the computer node processing state table 700 will be described later with reference to FIG.
  • the inter-node communication processing unit 312 controls communication processing between the computer nodes 100 and transmits / receives the inter-node communication packet 600. Details of the inter-node communication packet 600 will be described later with reference to FIG.
  • the input synchronization unit 313 executes processing target input packet selection start processing S113 and processing target input packet selection processing S114. Details of the processing target input packet selection start processing S113 will be described later with reference to FIG. Details of the processing target input packet selection processing S114 will be described later with reference to FIGS.
  • the determined input storage unit 314 has a determined input management table 800 and a determined input management table 810, and holds information of the external input packet 500 determined by the input synchronization unit 313 and processed by the input / output synchronization unit 310. Details of the decision input management table 800 will be described later with reference to FIG. Details of the determined input management table 810 will be described later with reference to FIG.
  • the input / output decision processing counter 315 holds a counter value at the processing stage executed by the computer node 100. By comparing the input / output determination processing counter 315 with another computer node 100, a cycle shift of processing executed by the computer node 100 is identified.
  • the resynchronization detection unit 316 is excluded from the computer node 100 that is newly participating in the synchronization system 1 in which a plurality of computer nodes 100 are cooperatively operated, or the synchronization system 1 that is once cooperatively operated, but attempts to rejoin. An existing computer node 100 is detected and an acceptance process is performed.
  • the resynchronization detection unit 316 executes resynchronization detection processing S111. Details of the resynchronization detection processing S111 will be described later with reference to FIG.
  • the computer node configuration management table 317 is a table that stores the computer node 100 information that executes the processing target input packet selection processing S114 and contributes to the determination of the external input packet 500 that is the processing target of the selection input packet processing S115. Details of the computer node configuration management table 317 will be described later with reference to FIG.
  • the resynchronization request unit 318 is excluded from the computer node 100 that is newly participating in the synchronization system 1 in which a plurality of computer nodes 100 are cooperatively operated or the synchronization system 1 that is once cooperatively operated, but attempts to rejoin. This process is executed by the computer node 100.
  • the rhino synchronization request unit 318 executes resynchronization processing S118. Details of the resynchronization processing S118 will be described later with reference to FIG.
  • the program processing unit 319 is a process for selecting and starting the application 200 in response to a processing request from the terminal 2.
  • Selection input packet processing S115 is executed. Details of the selected input packet processing S115 will be described later with reference to FIG.
  • the output synchronization unit 320 makes a majority decision using the execution result of the application 200 of each computer node 100, performs the role of leader and monitor for each computer node 100, and performs the execution result transmission process to the terminal 2.
  • the output synchronization unit 320 executes the execution result determination process S116. Details of the execution result determination processing S116 will be described later with reference to FIGS.
  • the decision output management table 321 is a table that holds information of the computer node 100 that has contributed to the execution result decision processing S116. Details of the decision output management table 321 will be described later with reference to FIG. ⁇ External input packet (FIG. 2)>
  • FIG. 2 is a diagram illustrating an example of the configuration of the external input packet 500.
  • the terminal 2 transmits a request command by transmitting the external input packet 500 to the synchronization system 1.
  • the transmission source information 501 is information for identifying the transmission source terminal 2.
  • the sequence number 502 is information for uniquely identifying each of the plurality of external input packets 500 issued from the transmission source terminal 2. By making the value of the sequence number 502 a value including the identifier of the transmission source terminal 2, it is possible to prevent duplication between the terminals 2.
  • the transmission time stamp 503 is the time when the transmission source terminal 2 transmits the external input packet 500.
  • the permutation processing necessity flag 504 is information for identifying that there is a series of ordering between a plurality of external input packets 500 transmitted by the transmission source terminal 2.
  • the number of permutation processing blocks 505 indicates the number of a plurality of external input packets 500 having the above-described series of orderings.
  • the permutation process start number 506 is the sequence number 502 of the external input packet 500 located at the head of the plurality of external input packets 500 having the above-described series of orderings.
  • the content 507 includes an application identifier 508 that is information related to the execution of the application 200 and a parameter 509.
  • the application identifier 508 is information for specifying the application 200 executed in the computer node 100
  • the parameter 509 is parameter information delivered to the application 200.
  • FIG. 3 is a diagram showing an example of the configuration of the external input packet management table 550.
  • the external input packet management table 550 is a table that stores external input packets 500 that are held in the external input packet storage unit 301 and received by the computer node 100.
  • the number of external input packets 500 stored in the external input packet management table 550 is not particularly limited.
  • FIG. 4 is a diagram showing a configuration example of the computer node processing state table 700.
  • the computer node processing state table 700 is held in the processing state storage unit 311 and stores execution state information of the computer node 100.
  • the computer node processing state table 700 includes a processing state identifier 701, additional information 702, Penalty 703, and processing state 704.
  • the processing state identifier 701 and the processing state 704 are columns that always hold valid values, but the additional information 702 and Penalty 703 may be valid or invalid depending on the values stored in the processing state identifier 701.
  • the processing status identifier 701 is a value that identifies the processing status of the computer node 100. Processing status identifiers include “REJOIN-WAIT”, “REJOIN-REQ”, “REJOIN-ACK”, “JOINED”, “INPUT”, and “OUTPUT”.
  • REJOIN-WAIT represents a state in which the relevant computer node 100 is waiting for a resynchronization request from another computer node 100. In this state, “REJOIN-WAIT” is also set in the processing state 704, but the additional information 702 and Penalty 703 do not hold valid values (line 705).
  • “REJOIN-REQ” represents a state in which the computer node 100 is requesting resynchronization. In this state, “REJOIN-REQ” is also set in the processing state 704, but the additional information 702 and Penalty 703 do not have valid values.
  • “REJOIN-ACK” represents a state in which the computer node 100 has received a resynchronization request from another computer node 100. In this state, “REJOIN-ACK” is also set in the processing state 704, but the additional information 702 and Penalty 703 do not have valid values.
  • “JOINED” represents a state in which a response from another computer node 100 is acquired in response to a resynchronization request made by the computer node 100 and the acquired information is reflected in the computer node 100. In this state, “JOINED” is also set in the processing state 704, but the additional information 702 and Penalty 703 do not have valid values.
  • “INPUT” represents a state in which the computer node 100 is performing “input synchronization”. “Input synchronization” is processing performed for the application 200 to process the external input packet 500 stored in the external input packet management table 550 of the computer node 100.
  • the additional information 702 and Penalty 703 are valid.
  • the additional information 702 stores input synchronization step 710 information.
  • the input synchronization step 710 is the number of external input packets 500 acquired from the external input packet management table 550.
  • the Penalty 703 can take either “0” as an initial value and “1” as a value other than the initial value.
  • the computer node 100 is in communication with another computer node 100. This indicates that the user was temporarily not participating in the input synchronization process performed in step 1.
  • the processing state 704 holds “BEGIN” or “END”. “BEGIN” represents a state in which the computer node 100 is executing “input synchronization”, and “END” represents a state in which “input synchronization” has been completed (line 709).
  • “OUTPUT” represents a state in which the computer node 100 is performing “output synchronization”.
  • “Output synchronization” is a “leader” computer that plays a role of making a majority decision with the other computer nodes 100 using the processing result of the application 200, confirming the processing result, and outputting the result to the terminal 2.
  • This is a process of determining the node 100 and the “monitor” computer node 100 that monitors the result output state of the “leader”, and outputting the processing result of the application 200 to the terminal 2.
  • the additional information 702 has a valid value and holds any value of “OUTPUT”, “LEADER”, and “VOTER”.
  • Penalty 703 is an effective column having, for example, “0” as an initial value and “1” as a value other than the initial value. When the value is “1”, the computer node 100 has temporarily not participated in the output synchronization processing. Represents that.
  • the computer node 100 executes determination processing of the computer node 100 having the “leader” role and “monitor” role, and processing for sharing the determination result between the other computer nodes 100. “BEGIN” is held in the process state 704 while the process is being executed, and “END” is held in the process state 704 when the role determination process is completed.
  • FIG. 5 is a diagram showing an example of processing state transition of the computer node 100.
  • the computer node 100 in the REJOIN-WAIT 706 processing state transitions to the REJOIN-ACK 707 processing state and then transitions to the INPUT 709 processing state or directly transitions to the INPUT 709 processing state.
  • the computer node 100 in the REJOIN-REQ 705 processing state transitions to the JOINED 708 processing state, and then transitions to the INPUT 709 processing state.
  • the computer node 100 in the INPUT 709 processing state transitions to the OUTPUT 711 processing state or the REJOIN-REQ 705 processing state.
  • the computer node 100 in the OUTPUT 711 processing state transitions to the REJOIN-WAIT 706 processing state or the REJOIN-REQ 705 processing state.
  • FIG. 6 is a diagram showing an example of the configuration of the inter-node communication packet 600.
  • the inter-node communication packet 600 is a communication packet used when information communication is performed between the computer nodes 100.
  • the inter-node communication packet 600 includes a computer node identifier 601, an input / output determination processing counter 602, a computer node processing state 603, and computer node processing state individual detailed information 604.
  • the computer node identifier 601 is information for uniquely identifying the computer node 100 in the synchronization system 1, and the identifier of the computer node 100 that created the inter-node communication packet 600 is set.
  • the input / output determination processing counter 602 is the value of the input / output determination processing counter 315 of the computer node 100 that created the inter-node communication packet 600.
  • the computer node processing state 603 has the same configuration as the computer node processing state table 700, and holds the processing state of the computer node 100 that created the inter-node communication packet 600.
  • the computer node processing state individual detailed information 604 does not have a specific configuration, and information according to the occasional use for transmitting the inter-node communication packet 600 is set.
  • FIG. 7 is a diagram showing an example of the configuration of the computer node configuration management table 317.
  • the computer node configuration management table 317 is a table that holds information of the computer node 100 that has contributed to the input synchronization processing.
  • the computer node configuration management table 317 is composed of columns of an input synchronous computer node total number 317A, a computer node identifier 601, an input / output determination processing counter 602, and a computer node processing state 603.
  • FIG. 8 is a diagram showing an example of the configuration of the decision input management table 800.
  • the determined input management table 800 holds information on the external input packet 500 determined to be processed by the application 200 as a result of the input synchronization processing.
  • the decision input management table 800 has a decision input total number 801, transmission source information 501 column, sequence number 502 column, transmission time stamp 503 column, permutation processing necessity flag 504 column, permutation processing block having the same configuration as the external input packet 500. 505 column, permutation process start number 506 column, application identifier 508 column in contents 507, and parameter 509 column. A plurality of pieces of information of the external input packet 500 can be held, and the number held is held in the total number 801 of determined inputs.
  • FIG. 9 is a diagram illustrating an example of the configuration of the determined input management table 810.
  • the computer node 100 that has acquired a certain external input packet 500 occupies the majority in the synchronization system 1, the computer node 100 that has become the minority that has not acquired the external input packet 500 also has to The external input packet 500 information is shared, and the application 200 of the computer node 100 is caused to execute processing based on the external input packet.
  • the minority computer node 100 may acquire the external input packet 500 via the external network 3 after the application 200 is executed. Therefore, in order to avoid double processing of the external input packet 500, the external input packet 500 that is desired to be excluded from processing is recorded in the determined input management table 810.
  • the determined input management table 810 has a determined total number of inputs 811, transmission source information 501 column, sequence number 502 column, transmission time stamp 503 column, permutation processing necessity flag 504 column, permutation having the same configuration as the external input packet 500. It consists of a processing block number 505 columns, a permutation processing start number 506 column, an application identifier 508 column in the content 507, and a parameter 509 column. A plurality of pieces of information of the external input packet 500 can be held, and the holding number is held in the determined input total number 811.
  • FIG. 10 is a diagram showing a configuration example of the decision output management table 321.
  • the determined output management table 321 is a table that holds information of the computer node 100 that has contributed to the output synchronization processing.
  • the determined output management table 321 includes the total number of output computer nodes 321A and rank 321B, a computer node identifier 321C identical to the column included in the inter-node communication packet 600, an input / output determination processing counter 321D, a computer node processing state 321E, It consists of a computer node processing result 321F.
  • the rank 321B means a priority order when the computer node 100 serving as the “leader” is selected from the plurality of computer nodes 100, and the computer node processing result 321F holds the execution result of the application 200.
  • the determined output management table 321 can hold information of a plurality of computer nodes 100, and the holding number is held in the output synchronous computer node total number 321A.
  • FIG. 11 is a flowchart showing an example of the basic software processing.
  • the base software 300 is roughly divided into an external input packet storage unit 301 and an input / output synchronization unit 310, which are started from the operating system 400 as different tasks, and both operate independently.
  • FIG. 11 shows a flowchart of processing executed by the external input packet storage unit 301 and the input / output synchronization unit 310.
  • the external input packet storage unit 301 first detects the reception of the external input packet 500 by the external communication I / F 104 (S101).
  • the external input packet storage unit 301 stores the received information of the external input packet 500 in the external input packet management table 550 (S102).
  • the external input packet storage unit 301 moves to the execution of external input packet reception (S101) again and repeats the above-described process.
  • the input / output synchronization unit 310 first detects another computer node 100 that has requested re-synchronization, and performs synchronization processing for the computer node 100. Details will be described later with reference to FIGS. 25 and 26 (S111).
  • the input / output synchronization unit 310 sets an “INPUT” value in the processing state identifier 701 of the computer node processing state table 700 of the processing state storage unit 311.
  • an initial value as the input synchronization step 710 is set in the additional information 702, and an initial value is also set in the Penalty 703.
  • a value of “2” or more is given as the initial value of the input synchronization step 710, while a value of “0” is given as the initial value of Penalty 703 (S112).
  • the input / output synchronization unit 310 performs processing to determine whether or not selection of the external input packet 500 to be processed can be started. Details will be described later with reference to FIG. 12 (S113).
  • the input / output synchronization unit 310 performs processing for selecting the external input packet 500 to be processed. Details will be described later with reference to FIGS. 13, 14, 15, and 16 (S114).
  • the input / output synchronization unit 310 executes the application 200 and processes the external input packet 500 selected in the processing target input packet selection processing S114. Details will be described later with reference to FIG. 17 (S115).
  • the input / output synchronization unit 310 shares the processing result of the external input packet 500 by the application 200 between the computer nodes 100, and plays a “leader” role for outputting the processing result to the terminal 2 and a “monitor” role for monitoring the output state.
  • the computer node 100 serving as the “leader” outputs the processing result to the terminal 2. Details will be described later together with FIGS. 18, 19, 20, 21, 22, 23, and 24 (S116).
  • FIG. 12 is a flowchart illustrating an example of the process target input packet selection start confirmation process S113 of the input / output synchronization unit 310.
  • an inter-node communication packet 600 for selecting an external input packet 500 to be processed from another computer node 100 is sent to the local computer node 100. It is confirmed whether or not it has arrived (S201 and S202). When the inter-node communication packet 600 has arrived (the result of S202 is “Y”), S114 is executed. When the inter-node communication packet 600 has not arrived (the result of S202 is “N”), S203 is executed.
  • the input / output synchronization unit 310 confirms the external input packet 500 arriving at the local computer node 100 by referring to the external input packet management table 550.
  • the presence of the external input packet 500 can be confirmed (result of S204 is “Y”)
  • “INPUT” is set in the processing state identifier 701 of the computer node processing state table 700 in S205, and additional information 702 is input as an input synchronization step 710.
  • S114 is executed.
  • the input / output synchronization unit 310 performs the resynchronization detection process S111, which is an initial execution process. Execute.
  • FIG. 13 is a flowchart illustrating an example of the process target input packet selection process S114 executed by the input / output synchronization unit 310.
  • the selected input packet processing S115 is executed in order to preferentially process the information of the external input packet 500.
  • step S301 the process starts.
  • the input synchronization unit 310 acquires the own computer node 100 state value “INPUT” (S709) from the processing state identifier 701 of the computer node processing state table 700 in the processing state storage unit 311.
  • the input synchronization unit 310 acquires the value of the input synchronization step 710 from the additional information 702 of the computer node processing state table 700 in the processing state storage unit 311 (S302).
  • the input synchronization unit 310 acquires the value of the input / output determination processing counter 315 (S303).
  • the input synchronization unit 310 sets a value in the inter-node communication packet 600.
  • the computer node identifier 601 is set with the identifier of the own computer node 100
  • the input / output determination processing counter 602 is set with the input / output determination processing counter 315 acquired in S303
  • the computer node processing state 603 is acquired with S301 and S302.
  • the computer node state information of the computer node processing state table 700 is set (S304).
  • the input synchronization unit 310 acquires information on the external input packets 500 for the number of input synchronization steps 710 from the external input packet management table 550 of the external input packet storage unit 301 (S305).
  • step S ⁇ b> 305 the input synchronization unit 310 confirms that the acquired external input packet 500 information does not match the external input packet 500 information held in the determined input management table 810 (S ⁇ b> 306). And S307).
  • the input synchronization unit 310 in S305 reads the external information from the external input packet management table 550.
  • the information of the input packet 500 is deleted (S308), and the information of the same number of external input packets 5000 as the deleted amount is extracted from the external input packet management table 550 (S305).
  • step S ⁇ b> 309 the input synchronization unit 310 sets the acquired information of the external input packet 500 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600.
  • the input determination packet transmission process S400 is executed.
  • FIG. 14 is a flowchart illustrating an example of the input determination packet transmission process S400, which is a part of the process target input packet selection process S114 of the input / output synchronization unit 310.
  • the input / output synchronization unit 310 When the input decision packet transmission processing S400 is started, the input / output synchronization unit 310 first sets the value of the processing state 704 of the computer node processing state table 700 in the processing state storage unit 311 to “BEGIN” (at the same time, the own computer node 100 The value of the computer node processing state 603 of the inter-node communication packet 600 whose state is copied is also updated (S401).
  • the input / output synchronization unit 310 multicasts the created inter-node communication packet 600 to the other computer node 100 via the inter-node communication I / F 105 (S402).
  • the input / output synchronization unit 310 waits until the timeout time, expecting the inter-node communication packet 600 to arrive from another computer node 100 (S403).
  • the input / output synchronization unit 310 receives the inter-node communication packet 600 transmitted from the other computer node 100 (S404).
  • the input / output synchronization unit 310 combines the inter-node communication packet 600 information created by the own computer node 100 with the inter-node communication packet 600 information of the other computer node 100 received at S404, and creates a “reception result list”. To do.
  • the “reception result list” has column information similar to that of the inter-node communication packet 600 (S405).
  • FIG. 15 is a flowchart illustrating an example of the input processing state matching process S500, which is a part of the processing target input packet selection process S114 of the input / output synchronization unit 310.
  • a process for matching the states in the “input synchronization” process between the computer nodes 100 is performed.
  • the synchronization system 1 ensures the reliability of the output information to the terminal 2 by making a majority decision on the calculation result of each computer node 100
  • each computer node 100 is an independent computer, so that each computer node is in a different computer node state. It is operating.
  • the calculation results of a plurality of computer nodes 100 are required.
  • the computer nodes 100 are synchronized once at the input stage of the calculation process.
  • the policy of the input processing state matching processing S500 excludes the computer node 100 whose processing cycle is clearly different, but a slight delay in the processing state of the computer node participates in the arithmetic processing and the majority determination of the arithmetic result by correcting this.
  • the number of computer nodes 100 is maximized.
  • the input / output determination processing counter 315 is first compared with the input / output determination processing counter 602 of the inter-node communication packet 600 received from the other computer node 100 in S404. Then, it is determined whether the values of the input / output determination processing counter 315 of the own / other computer node 100 match. Since the computer node 100 may perform transmission / reception with a plurality of other computer nodes 100, there may be a plurality of received inter-node communication packets 600.
  • the “comparison” in S502 classifies the own computer node 100 based on the input / output determination processing counter 315 value and the received one or more input / output determination processing counter 602 values. This is “majority determination” for determining which of the minority groups (S501 and S502).
  • the own computer node when three or more groups are generated as a result of classification, when the own computer node is classified into the group to which the most computer nodes belong, the own computer node is “majority”. You may determine with having been classified into. This also applies to various “majority determinations” executed in the subsequent processing.
  • the resynchronization processing S118 is executed because the processing cycle is different from that of the majority computer node 100.
  • the own computer node 100 compares whether the computer node processing state matches with the other computer node 100. “Comparison” here also means “majority determination”.
  • the computer node processing state is compared with the computer node processing state 603 (the configuration column of the computer node processing state 603 is the same as that of the computer node processing state table 700) of the inter-node communication packet 600 received from the other computer node 100 and the own computer node 100. This is performed by comparing the values (processing state identifier 701, processing state 704) of the computer node processing state table 700 (S504 and S505).
  • S506 When the own computer node 100 is classified into the minority group in S505 (the result of S505 is “N”), since the computer node processing state does not match the majority computer node processing state, S506 is executed.
  • the computer node processing state table 700 (processing state identifier 701, additional information 702, processing state 704) is stored in the majority computer node in order to match the computer node processing state of the own computer node 100 with the majority computer node processing state. It is updated with the processing state value (computer node processing state 603), and Penalty 703 of the computer node processing state table 700 is set (for example, “1” is set).
  • each computer node 100 is in a state where sharing of information (reception result list) of the external input packet 500 acquired as a processing candidate by the input / output synchronization unit 310 of each computer node 100 is completed (S508).
  • the computer node processing state table 700 value set in the inter-node communication packet 600 and the “reception result list” are multicasted to the other computer node 100 via the inter-node communication I / F 105 (S509).
  • the process waits until timeout (S510).
  • FIG. 16 is a flowchart showing an example of the input majority vote process S600, which is a part of the process target input packet selection process S114 of the input / output synchronization unit 310.
  • an external input packet 500 to be processed by the application 200 is determined.
  • the input / output synchronization unit 310 When starting the input majority process S600, the input / output synchronization unit 310 first refers to the “reception result list” and obtains an external input packet 500 (“majority consent input packet”) that is acquired in common by a majority of the computer nodes 100. (S601).
  • the majority may be a majority of the number of computer nodes whose information is registered in the computer node configuration management table at the present time, or may be a majority of the number of computer nodes existing in the synchronization system 1. .
  • S602 is executed to set the value of the additional information 702 (input synchronization step 710) of the computer node processing state table 700 of the processing state storage unit 311 to “1”. And the execution is shifted to the start position (S300) of the processing target input packet selection process S114.
  • the order of the externally input packet 500 information selected in S601 is rearranged.
  • the rearranged external input packet 500 is referred to as a “decision input packet”.
  • the rearrangement is performed based on the value of the sequence number 502 of the external input packet 500 (S604).
  • the information of the external input packet 500 rearranged in S604 is stored in the determined input management table 800 of the determined input storage unit 314, and the determined input total number 801 is updated (S605).
  • the own computer node 100 has the same information as the external input packet 500 information acquired by the majority of the computer nodes 100 in S305 in FIG. A majority decision is made as to whether or not the acquisition has been performed (S606).
  • the information of the external input packet 500 is set in the determined input management table 810 of the determined input storage unit 314 in S607, The determined input total number 811 is updated, and S609 is activated.
  • the information of the external input packet 500 is a processing target of the application 200, but since the local computer node 100 is not information acquired from the external network 3 by itself, the external input packet 500 that arrived later in the later calculation cycle is externally transmitted. There is a possibility of obtaining from the network 3. In order to avoid multiple processing for the same external input packet 500, information of the external input packet 500 is set in the determined input management table 810.
  • the decision input packet is set in the computer node processing state individual detailed information 604 of the inter-node communication packet 600 (S610).
  • the inter-node communication packet 600 created in S610 is multicasted to the other computer node 100 via the inter-node communication I / F 105 (S611).
  • FIG. 17 is a flowchart illustrating an example of the selected input packet process S115, which is a part of the process target input packet selection process S114 of the input / output synchronization unit 310.
  • the application 200 is activated to process the “decision input packet”.
  • the input / output synchronization unit 310 first extracts the external input packet 500 information from the determined input management table 800 of the determined input storage unit 314 (S701).
  • the application 200 to be processed is determined from the application identifier 508 of the content 507, the parameter 509 is added, and the start process (S702-A) of the corresponding application 200 is started. To do.
  • the selected input packet process S115 waits for the process of the application 200 to end.
  • the application 200 activated in S702 acquires the additional parameter 509 and starts processing (S702-A), executes the application 200 processing (S702-B), and outputs the processing result to the selected input packet processing S115 at the end. (S702-C).
  • the selected input packet processing S115 acquires the processing result (S703).
  • the selected input packet processing S115 is completed by starting the application 200 according to the information of the external input packet 500 and acquiring the processing result, and executes the next execution result determination processing S116.
  • FIG. 18 is a flowchart illustrating an example of the execution result determination process S116 of the input / output synchronization unit 310.
  • the processing state identifier 701 of the computer node processing state table 700 of the processing state storage unit 311 is set to “OUTPUT”, and the additional information 702 is set to “OUTPUT”.
  • the state 704 is updated to “BEGIN” (S801).
  • the input / output synchronization unit 310 confirms the value of the input / output determination processing counter 315 (S802).
  • the input / output synchronization unit 310 sets the processing result of the application 200 acquired in step S ⁇ b> 703 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600.
  • the computer node processing state table 700 value updated in S801 is set in the computer node processing state 603, and the input / output determination processing counter 315 value acquired in S802 is also set in the input / output determination processing counter 602. (S803)
  • the input / output synchronization unit 310 multicasts the inter-node communication packet 600 created in S803 to the other computer node 100 via the inter-node communication I / F 105, so that the processing result of the application 200 is transmitted to the other computer node. Share with 100 (S804).
  • the input / output synchronization unit 310 waits until timeout in order to wait for the inter-node communication packet 600 from the other computer node 100 to arrive (S805).
  • step S806 the input / output synchronization unit 310 acquires the inter-node communication packet 600 that has arrived from the other computer node 100, and combines the inter-node communication packet 600 of the local computer node 100 in step S807 to create a “reception result list”. To do.
  • the input / output synchronization unit 310 uses the column information of the computer node identifier 601, the input / output determination processing counter 602, and the computer node processing state 603 registered in the reception result list (the configuration column is the same as the inter-node communication packet 600). Set in the node configuration management table 317. However, the value of the total computer node 317A at the time of input synchronization is not updated. (S808) When the processing result of the application 200 is exchanged between the computer nodes 100, the execution result determination processing S116 is completed, and the next output processing state matching processing S900 is executed. ⁇ Flowchart of output processing state matching processing (FIG. 19)> FIG. 19 is a flowchart showing an example of the output process state matching process S900, which is a part of the execution result determination process S116 of the input / output synchronization unit 310.
  • the output process state matching process S900 a process for matching the states in the “output synchronization” process between the computer nodes 100 is performed.
  • the synchronization system 1 ensures the reliability of the output information to the terminal 2 by making a majority decision on the calculation result of each computer node 100
  • each computer node 100 is an independent computer, so that each computer node is in a different computer node state. It is operating.
  • the policy of the output processing state matching processing S900 excludes the computer node 100 whose processing cycle is clearly different, but the computer node 100 participating in the majority decision of the operation result by correcting this slight delay in the processing state of the computer node. Maximize the number.
  • the input / output synchronization unit 310 When the output processing state matching processing S900 is started, the input / output synchronization unit 310 first compares the input / output determination processing counter 315 with the input / output determination processing counter 602 of the inter-node communication packet 600 received from the other computer node 100 in S806. Then, it is determined whether the values of the input / output determination processing counter 315 of the own / other computer node 100 match. Since the computer node 100 may transmit / receive the inter-node communication packet 600 to / from a plurality of other computer nodes 100, the received inter-node communication packet 600 may be plural.
  • “Comparison” in S901 means that the own computer node 100 is classified based on the input / output determination processing counter 315 value and the plurality of input / output determination processing counter 602 values, and the own computer node 100 is the majority or minority. This is “majority determination” that determines which class is to be classified (S901 and S902).
  • the input / output synchronization unit 310 executes the resynchronization process S118.
  • the input / output synchronization unit 310 executes the subsequent S904, assuming that the processing cycles match.
  • the own computer node 100 compares whether the computer node processing state matches with the other computer node 100. “Comparison” here also means “majority determination”.
  • the computer node processing state is compared with the computer node processing state 603 of the inter-node communication packet 600 received from the other computer node 100 (the configuration column is the same as the computer node processing state table 700) and the computer node processing state table of the own computer node 100. This is done by comparing 700 values (processing status identifier 701, additional information 702, processing status 704).
  • the computers of the majority computer node 100 are referred to. It is determined whether or not the node processing state is “LEADER”. When the majority computer node processing state is “LEADER” (the result of S906 is “Y”), the candidate computer that outputs the processing result to the terminal 2 that is performed in the first process in “output synchronization”. Since the node 100 has already been determined, the own computer node 100 operates as a supervisor and the input / output synchronization unit 310 starts the voter process S1300.
  • the input / output synchronization unit 310 activates S907. Further, regardless of the value of the additional information 702 of the majority computer node 100, the input / output synchronization unit 310 sets the Penalty 703 of the computer node processing state table 700 of the own computer node 100 (for example, “1” is set). .
  • the computer node processing state of the majority computer node 100 may be “VOTER”. However, in S906, only “LEADER” is used as a detection control. When the computer node processing state of the majority computer node 100 is “VOTER”, these majority computer nodes 100 are two terminals ahead of their own computer node processing state “OUTPUT” in “output synchronization” processing. Is in a processing state for outputting a result. After confirming that the processing state of the majority computer node 100 is “VOTER”, even if the processing state of the own computer node 100 is corrected to “VOTER” and switched to “monitor” which is an output monitoring role, the terminal Since the result output to 2 may be missed, the determination in S906 is only “LEADER”. That is, the two-stage synchronization deviation correction from “OUTPUT” to “VOTER” in the “output synchronization” processing stage is not performed.
  • the processing status of the majority computer node is compared, and when the additional information 702 is “OUTPUT” (result of S907 is “Y”) and the processing status 704 is “END” (result of S908 is In “Y”), since the processing for matching the processing results of the application 200 between the computer nodes 100 has been completed, the input / output synchronization unit 310 starts the output majority processing S1000 and completes the output processing state matching processing S900. .
  • the processing state 704 is not “END” (S908). Is "N"), the input / output synchronization unit 310 waits until timeout (S909), and then re-executes the output process state matching process S900 from the application 200 process result reception process from the other computer node 100 in S806. .
  • the input / output synchronization unit 310 activates the next S911.
  • the computer node processing state table 700 value set in the inter-node communication packet 600 is multicast to the other computer node 100 via the inter-node communication I / F 105 (S912).
  • FIG. 20 is a flowchart showing an example of the output majority process S1000, which is a part of the execution result determination process S116 of the input / output synchronization unit 310.
  • the output majority process S1000 the majority determination of the processing result of the application 200 calculated by each computer node 100 is performed.
  • the processing result of the application 200 calculated by each computer node 100 in the “reception result list” first exists in common with the majority of the computer nodes 100. It is determined whether or not there is a processing result (referred to as “majority consent output”) (S1001).
  • the majority may be a majority of the number of computer nodes currently registered in the computer node configuration table 317, or may be a majority of the number of computer nodes existing in the synchronization system 1.
  • S1002 compares the total number of computer nodes 100 in the “reception result list” with the total number of computer nodes 317A at the time of input synchronization in the computer node configuration management table 317. If the total number matches (the result of S1002 is “Y”), it means that there is no two processing results of the application 200 calculated by each computer node 100, and the input / output synchronization unit 310 activates S1003. Then, the processing of the base software 300 is terminated. If the total number does not match (the result of S1002 is “N”), since there is a computer node 100 that has not yet received the processing result of the application 200, the input / output synchronization unit 310 performs the application 200 from the other computer node 100 in S806. The output process state matching process S900 is restarted from the process result reception process.
  • the input / output synchronization unit 310 activates S1005 to determine whether the processing result of the application 200 of the own computer node 100 belongs to the majority.
  • the input / output synchronization unit 310 completes the output majority process S1000 and executes the next leader selection process S1100.
  • FIG. 21 is a flowchart showing an example of the leader selection process S1100, which is a part of the execution result determination process S116 of the input / output synchronization unit 310.
  • the leader selection process S 1100 selects a computer node 100 that is a “leader” candidate for outputting a result to the terminal 2.
  • the input / output synchronization unit 310 first changes the additional information 702 in the computer node processing state table 700 of the processing state storage unit 311 to “LEADER” and the processing state 704 to “BEGIN” (S1101). ).
  • the input / output synchronization unit 310 selects the computer node 100 as a “leader” candidate from the reception result list, determines the ranking, and creates a “leader selection result”.
  • the selection and ranking determination method is a method of determining “leader” candidates in the order in which the value of Penalty 703 in the computer node processing state table 700 is 0 and the computer node identifier 601 of the inter-node communication packet 600 has the largest value. Is given. (S1102)
  • the input / output synchronization unit 310 acquires the input / output determination processing counter 315 and sets it in the input / output determination processing counter 602 of the inter-node communication packet 600 (S1103).
  • the “leader selection result” in S1102 is set in the computer node processing state individual detailed information 604 of the inter-node communication packet 600 (S1104).
  • the input / output synchronization unit 310 multicasts the inter-node communication packet 600 created in S1104 to the other computer node 100 via the inter-node communication I / F 105 (S1105).
  • the input / output synchronization unit 310 waits until timeout in order to wait for the arrival of the inter-node communication packet 600 from the other computer node 100 (S1106).
  • the input / output synchronization unit 310 Upon obtaining the inter-node communication packet 600 from the other computer node 100 in S1107, the input / output synchronization unit 310 combines the inter-node communication packet 600 of the own other computer node 100 in S1108 and creates a “reception result list”.
  • the “reception result list” includes a “leader selection result” determined by the own computer node 100.
  • step S1109 the input / output synchronization unit 310 reflects the contents of the “reception result list” in the computer node configuration management table 317, completes the leader selection process S1100, and executes the next leader process state matching process S1200.
  • FIG. 22 is a flowchart showing an example of the reader process state matching process S1200, which is a part of the execution result determination process S116 of the input / output synchronization unit 310.
  • the leader processing state matching processing S1200 performs processing for matching the completion status of the leader selection processing between the computer nodes 100.
  • the input / output determination processing counter 315 is initially set, and the input / output determination processing counter 602 of the inter-node communication packet 600 received from the other computer node 100 in S1107.
  • a comparison is made to determine whether the values of the input / output determination processing counters 315 of the own and other computer nodes 100 match. Since there may be a plurality of inter-node communication packets 600 received, S1202 performs “majority determination” (S1201 and S1202).
  • the input / output synchronization unit 310 executes the resynchronization process S118.
  • the input / output synchronization unit 310 executes the subsequent S1204 on the assumption that the processing cycles match.
  • the input / output synchronization unit 310 compares the input / output synchronization unit 310 with respect to whether the own computer node 100 and the other computer node 100 match the computer node processing state. “Comparison” here also means “majority determination”.
  • the computer node processing state is compared with the computer node processing state 603 of the inter-node communication packet 600 received from the other computer node 100 (the configuration column is the same as the computer node processing state table 700) and the computer node processing state table of the own computer node 100. This is performed by comparing 700 values (processing state identifier 701, additional information 702, processing state 704) (S1204 and S1205).
  • the processing result of the application 200 cannot be changed to a state where the processing result of the application 200 can be output to the terminal 2 together with other computer nodes 100.
  • the unit 310 leaves the processing cycle and executes the resynchronization process S118.
  • the input / output synchronization unit 310 executes the next S1206.
  • the input / output synchronization unit 310 changes the processing state 704 of the local computer node processing state table 700 to “END”.
  • Each computer node 100 enters a state where the input / output synchronization unit 310 of each computer node 100 has completed sharing the “leader selection result” (S1206).
  • the input / output synchronization unit 310 multicasts the inter-node communication packet 600 in which the computer node processing state table 700 value and the “reception result list” are set to the other computer node 100 via the inter-node communication I / F 105 (see FIG. S1207).
  • the input / output synchronization unit 310 waits until timeout in order to wait for the arrival of the inter-node communication packet 600 from the other computer node 100 (S1208).
  • FIG. 23 is a flowchart illustrating an example of the voter process S1300, which is a part of the execution result determination process S116 of the input / output synchronization unit 310.
  • the computer node 100 having the “leader” role and the “monitor” role is determined according to the “leader selection result” determined in the leader selection process S1100.
  • the computer node 100 in the “leader” role outputs the “majority agreement output” obtained in the output majority decision process S1000 to the terminal 2, and the computer node 100 in the “monitor” role monitors the output state.
  • a new “leader” computer node 100 is determined from the computer nodes 100 serving as “monitor”, and the output of “majority agreement output” to the terminal 2 is re-executed (output) Abnormal processing S1400). Details of the output abnormality processing S1400 will be described later with reference to FIG.
  • the input / output synchronization unit 310 starts the voter process S1300, the contents of the “reception result list” of the “leader selection result” transmitted / received in S1207 first, and the configuration column of the determined output management table 321 (total number of computer nodes for output synchronization 321A, The values of the rank 321B, the computer node identifier 321C, the input / output determination processing counter 321D, the computer node processing state 321E), and the output synchronous computer node total number 321A are updated (S1301).
  • the input / output synchronization unit 310 determines whether the own computer node 100 is a “leader” based on the rank 321B and the value of the computer node identifier 321C of the determined output management table 321 (S1302).
  • the input / output synchronization unit 310 executes S1304 in order to operate as a “leader”. If it is not determined that the local computer node 100 is a “leader” (the result of S1302 is “N”), the input / output synchronization unit 310 executes S1303 in order to operate as a “monitor”.
  • the “leader” computer node 100 updates the additional information 702 in the computer node processing state table 700 of the processing state storage unit 311 to “VOTER” and updates the processing state 704 to “LEADER”, thereby performing the “leader” operation. Is started (S1304). Then, the value of the input / output determination processing counter 315 is incremented by “1” (S1305).
  • the input / output determination processing counter 315 value updated in S1305 is set in the input / output determination processing counter 602 of the inter-node communication packet 600, and the computer node processing state table 700 value updated in S1304 is set in the computer node processing state 603. (S1306).
  • the inter-node communication packet 600 is multicasted to the other computer node 100 via the inter-node communication I / F 105 to notify that the own computer node 100 is a “leader” (S1307). Then, in order to wait for the arrival of the inter-node communication packet 600 from the other computer node 100, the process waits until timeout (S1308).
  • the processing result of the application 200 is transmitted to the terminal 2 by multicast via the external communication I / F 104. Since the transmission is based on multicast, the processing result of the application 200 also reaches the external communication I / F 104 of the “monitor” computer node 100 (S1309).
  • the “leader” computer node 100 ends the “leader” operation by transmitting to the terminal 2, completes the voter process S1300, and executes the next resynchronization detection process S111.
  • the “monitor” computer node 100 updates the additional information 702 in the computer node processing state table 700 of the processing state storage unit 311 to “VOTER” and updates the processing state 704 to “MONITOR”, thereby “monitor”.
  • the operation is started (S1311). Then, the value of the input / output determination processing counter 315 is incremented by “1” (S1312).
  • the input / output determination processing counter 315 value updated in S1312 is set in the input / output determination processing counter 602 of the inter-node communication packet 600, and the computer node processing state table 700 value updated in S1311 is set in the computer node processing state 603. (S1313).
  • the inter-node communication packet 600 is multicasted to the other computer node 100 via the inter-node communication I / F 105 to notify that the own computer node 100 is “monitor” (S1314). Then, in order to wait for the arrival of the inter-node communication packet 600 from the other computer node 100, the process waits until timeout (S1315).
  • the processing result transmission state of the application 200 by the “leader” computer node 100 is monitored via the external communication I / F 104 of the “monitor” computer node 100 to determine whether an abnormality has occurred (S1316 and S1317).
  • the output abnormality processing S1400 is activated and the processing result transmission of the application 200 to the terminal 2 is retried.
  • FIG. 24 is a flowchart illustrating an example of the output abnormality process S1400, which is a part of the execution result determination process S116 of the input / output synchronization unit 310.
  • the output abnormality process S1400 is activated when an abnormality is found in the process result transmission of the application 200 to the terminal 2 in S1316 of the boater process S1300.
  • the output abnormality process S1400 is a retry process of the boater process S1300, the same process as the boater process S1300 is executed. However, since it is a retry process, neither the “leader” computer node 100 nor the “monitor” computer node 100 changes the value of the input / output determination process counter 315.
  • the input / output synchronization unit 310 When the output abnormality process S1400 is started, the input / output synchronization unit 310 first deletes the information of the “leader” computer node 100 (the computer node 100 determined as “leader” in the voter process S1300) from the determined output management table 321 ( S1401).
  • the input / output synchronization unit 310 determines whether the own computer node 100 is the next “leader” based on the updated rank 321B and the value of the computer node identifier 321C of the determined output management table 321 (S1402 and S1403). .
  • the input / output synchronization unit 310 executes S1405 in order to operate as a “leader”. If it is not determined that the local computer node 100 is a “leader” (the result of S1403 is “N”), the input / output synchronization unit 310 executes S1404 in order to operate as a “monitor”.
  • the operation as the “leader” computer node 100 is the “leader” operation of the voter processing S1300 (the processing from S1304 to S1309, and the resynchronization detection processing S111). Is basically the same, but only S1406 and S1305 are different.
  • the output abnormality process S1400 the value of the input / output determination process counter 315 is not changed (meaning that the dotted line frame in S1406 is not executed).
  • FIG. 25 is a flowchart showing an example of the resynchronization detection process S111 and the resynchronization process S118.
  • the input / output synchronization unit 310 of the computer node 100 in the system operating cooperatively as a synchronous system detects the computer node 100 that requests entry into the system of cooperative operation and accepts the entry.
  • the resynchronization processing S118 performs processing until the input / output synchronization unit 310 of the computer node 100 outside the system operating cooperatively as a synchronous system requests entry into the system of cooperative operation and completes the entry. Requesting entry into the system of cooperative operation is referred to as “resynchronization request”.
  • the resynchronization detection process S111 and the resynchronization process S118 are each a REJOIN-REQ inter-node communication packet (details are shown in FIG. 26), a REJOIN-ACK inter-node communication packet (details are shown in FIG. 26), and a JOINED node.
  • the processing proceeds in tune with each other.
  • the “REJOIN-REQ inter-node communication packet” shown as an example in FIG. 26 is an example of the inter-node communication packet 600 transmitted by the computer node 100 that makes a resynchronization request.
  • “REJOIN-REQ” is set in the processing state identifier 701 and the processing state 704 of the computer node processing state table 700 which is the computer node processing state 603.
  • the input / output determination processing counter 602 remains at the initial value (for example, “0”), and the input / output determination processing counter 315 value is not set.
  • the “REJOIN-ACK inter-node communication packet” shown as an example in FIG. 26 is an example of the inter-node communication packet 600 that is returned to the request side by the computer node 100 that has received the resynchronization request.
  • “REJOIN-ACK” is set in the processing state identifier 701 and the processing state 704 of the computer node processing state table 700 which is the computer node processing state 603.
  • the value of the input / output determination processing counter 315 held by the computer node 100 that has received the resynchronization request is set in the input / output determination processing counter 602, and the determined input management table 800 information and the external input packet management table of the external input packet storage unit 301 are set.
  • 550 information is set in the computer node processing state individual detailed information 604.
  • the “JOINED inter-node communication packet” shown as an example in FIG. 26 indicates that the computer node 100 that has received the “REJOIN-ACK inter-node communication packet” has entered the system that is operating cooperatively as a synchronous system. It is an example of the communication packet 600 between nodes transmitted in order to notify the other computer node 100. “JOINED” is set in the processing state identifier 701 and the processing state 704 of the computer node processing state table 700 that is the computer node processing state 603.
  • the input / output synchronization unit 310 When the resynchronization detection process S111 is started, the input / output synchronization unit 310 first updates the input synchronization computer node count 317A in the computer node configuration management table 317 with the output synchronization computer node count 321A in the determined output management table 321 ( S1111).
  • the input / output synchronization unit 310 sets the processing state identifier 701 of the computer node processing state table 700 of the processing state storage unit 311 to “REJOIN-WAIT” and sets the processing state 704 to “REJOIN-WAIT”. Then, the processing state for accepting the resynchronization request is entered (S1112).
  • the input / output synchronization unit 310 expects the arrival of the “REJOIN-REQ inter-node communication packet” transmitted in S1183 of the resynchronization process S118, which is a resynchronization request from another computer node 100, and times out. Wait until (S1113).
  • the input / output synchronization unit 310 activates S112 to end the resynchronization detection process S111 and start the input synchronization process.
  • the input / output synchronization unit 310 activates S1115 to respond to the resynchronization request.
  • the input / output synchronization unit 310 sets the processing state identifier 701 in the computer node processing state table 700 of the processing state storage unit 311 to “REJOIN-ACK”, and sets the processing state 704 to “REJOIN-ACK”.
  • the computer node 100 transitions to a computer node processing state that responds to the resynchronization request.
  • the input / output synchronization unit 310 sets the input / output determination processing counter 315 value in the input / output determination processing counter 602 of the inter-node communication packet 600 in order to create a “REJOIN-ACK inter-node communication packet”.
  • the node processing state table 700 information is set in the computer node processing state 603 (S1116).
  • the determined input management table 800 information and the external input packet management table 550 information of the external input packet storage unit 301 are set in the computer node processing state individual detailed information 604 (S1117).
  • the created “REJOIN-ACK inter-node communication packet” is transmitted by multicast via the inter-node communication I / F 105.
  • the “REJOIN-ACK inter-node communication packet” is expected to be received in S1185 of the resynchronization process S118 that is being processed by the computer node 100 that has made the resynchronization request.
  • the I / O synchronization unit 310 waits until a time-out in the hope that the “JOINED inter-node communication packet” arrives from S11810 of the resynchronization processing S118 of the computer node 100 that has made the resynchronization request (S1119). .
  • the input / output synchronization unit 310 updates the input synchronization computer node total number 317A in the computer node configuration management table 317 in S1121, In order to end the resynchronization detection process S111 and start the input synchronization process, S112 is activated.
  • the input / output synchronization unit 310 of the computer node 100 that performs the resynchronization request first sets “REJOIN-REQ” in the processing state identifier 701 of the computer node processing state table 700 of the processing state storage unit 311, and the processing state 704 indicates “ By setting and setting “REJOIN-REQ”, a processing state for making a resynchronization request is entered (S1181).
  • the input / output synchronization unit 310 sets the computer node processing state table 700 information in the computer node processing state 603 of the inter-node communication packet 600 in order to create a “REJOIN-REQ inter-node communication packet” (S1182). .
  • the created “REJOIN-REQ inter-node communication packet” is transmitted by multicast via the inter-node communication I / F 105.
  • the “REJOIN-REQ inter-node communication packet” is expected to be received in S1114 of the resynchronization detection process S111 executed by the computer node 100 in the system operating in cooperation. (S1183)
  • the input / output synchronization unit 310 waits until timeout in response to expecting a “REJOIN-ACK inter-node communication packet” to be returned in response to the resynchronization request (S1184).
  • the input / output synchronization unit 310 activates S1181 to retry the resynchronization request.
  • the input / output synchronization unit 310 activates S1186.
  • the input / output synchronization unit 310 sets the input / output determination processing counter 602 value of the “REJOIN-ACK inter-node communication packet” in the input / output determination processing counter 315, and matches the processing cycle with the other computer node 100 (S1186). ).
  • the input / output synchronization unit 310 acquires the decision input management table 800 information set in the computer node processing state individual detailed information 604 of the “REJOIN-ACK inter-node communication packet” and stores the decision input storage of the own computer node 100.
  • the external input packet management table 550 information is acquired and set in the external input packet management table 550 of the external input packet storage unit 301 (S1187).
  • the input / output synchronization unit 310 updates the processing state identifier 701 in the computer node processing state table 700 of the processing state storage unit 311 to “JOINED”, updates the processing state 704 to “JOINED”, and updates the own computer node 100. Transitions to the computer node processing state in which resynchronization has been completed (S1188).
  • the input / output synchronization unit 310 sets the computer node processing state table 700 information in the computer node processing state 603 of the inter-node communication packet 600 in order to create a “JOINED inter-node communication packet” (S1189).
  • the created “JOINED inter-node communication packet” is transmitted by multicast via the inter-node communication I / F 105.
  • the “JOINED inter-node communication packet” is expected to be received in S1120 of the resynchronization detection process S111 executed by the computer node 100 that has returned the “REJOIN-ACK inter-node communication packet”.
  • S1190 After transmitting the “JOINED inter-node communication packet”, the input / output synchronization unit 310 activates S112 to complete the resynchronization process S118 and start the input synchronization process.
  • the synchronization system 1 in the supplementary explanation is composed of three computer nodes 100A, 100B, and 100C, but this is only an example.
  • Processing target input packet selection processing S114 (a series of processing up to input majority processing S600) will be supplementarily described by applying two cases.
  • the execution result determination process S116 (a series of processes up to the output abnormality process S1400) will be supplementarily described by applying one case.
  • the processing start timing of the computer node 100C is delayed from the other computer nodes 100A and 100B (“internal delay”).
  • the computer node 100C does not participate in the determination process of the “majority agreement input packet” in the extraction of the information of the first external input packet 500, and The “majority agreement input packet” cannot be determined between the computer nodes 100A and 100B, and the “majority agreement input packet” can be determined by extracting the information of the second external input packet 500, and the subsequent processing is executed.
  • case C a case in which the processing start timing of the computer node 100C is delayed is assumed, and the execution result of the result application 200 is shared among the computer nodes 100A, 100B, and 100C.
  • the computer node 100C participates in the process to be executed (the computer node processing state is “OUTPUT”) and the processing of S116 to S1400 is executed.
  • FIG. 27 shows an example of the processing sequence of each computer node 100A, 100B, 100C.
  • Time T1 corresponds to S300 to S602 of the processing target input packet selection processing
  • time T2 corresponds to S300 to S509 in the next processing cycle
  • time T3 is executed in response to the processing result of time T2 from S601 to S611. Correspond.
  • Transmission 901 corresponds to S402, TO902 corresponds to S403, list creation 903 corresponds to S404 to S508, TO904 corresponds to S509, transmission 905 corresponds to S402, TO906 corresponds to S403, list Create 907 corresponds to S404 to S508, TO908 corresponds to S509, majority decision 909 corresponds to S601, status update 910 corresponds to S604 to S609, and transmission 911 corresponds to S611.
  • FIG. 28 shows the contents of each computer node's external input packet management table, computer node processing status table, and input / output determination processing counter according to time.
  • the column 912 indicates the state of the computer node 100A
  • the sequence column SEQ915 indicates the sequence number 502 of the external input packet management table 550
  • WS916 indicates the input synchronization step 710 of the computer node processing state table 700
  • ST917 indicates the computer node processing.
  • the processing status 704 of the status table 700 is shown
  • the CNT 918 shows the input / output determination processing counter 315.
  • a column 913 indicates the state of the computer node 100B
  • a column 914 indicates the state of the computer node 100C
  • the configuration column is the same as the information of the computer node A.
  • Row 920 shows the state at time T1, row 921 shows the state at time T2, and row 922 shows the state at time T3.
  • FIG. 29 shows time-dependent contents of the inter-node communication packet 600 of each computer node for “transmission” shown in FIG.
  • the row 940 shows the content of the inter-node communication packet 600 for the transmission 901 at time T1
  • the configuration row 943 shows the transmission content of the computer node 100A
  • the row 944 shows the transmission content of the computer node 100B
  • the row 945 shows the computer node.
  • the transmission content of 100C is shown.
  • a row 941 shows the content of the inter-node communication packet 600 for the transmission 905 at time T2
  • a row 942 shows the content of the inter-node communication packet 600 for the transmission 911 at time T3
  • the configuration row is the same as the row 940.
  • FIG. 30 shows time-dependent contents of the inter-node communication packet 600 of each computer node for the “list creation” shown in FIG.
  • a row 960 indicates the contents of the inter-node communication packet 600 for the list creation 903 at time T1, which represents a “reception result list” obtained by combining the inter-node communication packets 600 transmitted and received in the “transmission” process.
  • the row 962 of the configuration line indicates the “transmission” content of the computer node 100A
  • the row 963 indicates the “transmission” content of the computer node 100B
  • the row 964 indicates the “transmission” content of the computer node 100C.
  • a row 961 shows the contents of the inter-node communication packet 600 for the list creation 907 at time T2, and the configuration row is the same as the row 960.
  • FIG. 31 shows the hourly contents of the computer node configuration management table 317 of an arbitrary computer node.
  • the contents according to time are the same in the computer nodes 100A, 100B, and 100C.
  • a row 980 indicates the states of the computer node identifier column 601, the input / output determination processing counter 602 column, and the computer node processing state 603 column of the computer node configuration management table 317 at time T 1.
  • the row 981 shows the information held in the computer node configuration management table 317 at time T2, and the row 982 shows the information held in the computer node configuration management table 317 at T3.
  • FIG. 32 shows the contents of the decision input management table 800 of each computer node.
  • FIG. 33 shows the contents of the determined input management table 810 of the computer node 100B.
  • each computer node 100A, 100B, 100C starts processing in the state of row 920 in FIG.
  • the computer node 100A holds “2” as WS924, “BEGIN” as ST925, and “C010” as CNT926.
  • the computer nodes 100B and 100C have the same value.
  • the external input packet information stored in the external input packet management table 550 is different. Specifically, the computer node 100A receives the external input packet 500 having the sequence numbers “2A-1” and “2B-1” and registers the information of the packet in the external input packet management table 550.
  • each of the computer nodes 100A, 100B, 100C sets the information of the external input packet 500 acquired (received) from the external network 3 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600. And send it out.
  • the contents of the transmitted inter-node communication packet 600 are shown at time T1 in FIG. 29 (line 940).
  • the computer node 100A acquires the information of the two external input packets 500 (external input packets of sequence numbers “2A-1” and “2B-1”) according to the value of WS924 and sets it in the inter-node communication packet 600 (line 943). ).
  • the computer nodes 100B and 100C also try to acquire information of the two external input packets 500.
  • each of the computer nodes 100A, 100B, and 100C is a computer node in S602.
  • the value of the input synchronization step 710WS of the processing state table 700 is changed to “3”, and S300 of the next cycle (time T2) is started.
  • the state of the computer node configuration management table 317 at this time is shown at time T1 in FIG. 31 (line 980).
  • each computer node 100A, 100B, 100C in the start state of time T2 is shown at time T2 in FIG. 28 (line 921).
  • the value of WS 924 of computer node 100A has changed to “3” due to the execution of S602 at time T1, but this is the same for computer nodes 100B and 100C.
  • a new external input packet 500 arrives during execution of the process at time T1, and the information of the external input packet 500 with the sequence number “2C-1” is stored in the external input packet management table 550 at the computer node 100A at the start of time T2.
  • each of the computer nodes 100A, 100B, and 100C tries to acquire the information of the three external input packets 500, sets the information of the acquired external input packets 500 in the inter-node communication packet 600, and transmits it.
  • the contents of the transmitted inter-node communication packet 600 are shown at time T2 in FIG. 29 (line 941).
  • the change in the value of the input synchronization step 710 is reflected in the additional information 702 of the computer node processing state 603 (frame 936), and information of the three external input packets 500 is set in the computer node processing state individual detailed information 604. (Frame 937).
  • each computer node creates a “reception result list” based on the contents of the inter-node communication packet 600 transmitted / received in the transmission 905, and transmits / receives the “reception result list” between the computer nodes 100A, 100B, 100C. To match the contents of the "Reception result list”.
  • the contents of the inter-node communication packet 600 transmitted and received at this time are shown at time T2 in FIG. 30 (line 961).
  • external input packets having sequence numbers “2B-1” and “2C-1” are determined as “majority agreement input packets” at time T2. 966).
  • the process proceeds to a process at time T3.
  • each computer node updates the decision input management table 800 and the input / output decision processing counter 315 based on the “majority consent input packet”.
  • Each of the computer nodes 100A, 100B, and 100C sets the information of the external input packet 500 having the sequence numbers “2B-1” and “2C-1” in the decision input management table 800.
  • the contents of the decision input management table 800 at this time are shown in FIG.
  • the information of the external input packet 500 with the sequence numbers “2B-1” and “2C-1” is deleted from the external input packet management table 550.
  • the computer node 100B that has not received the external input packet 500 with the sequence number “2B-1” via the external network 3 itself has the sequence number “2B” in the determined input management table 810. ⁇ 1 ”of the external input packet 500 is set.
  • the contents of the determined input management table 810 at this time are shown in FIG.
  • Each of the computer nodes 100A, 100B, and 100C updates the value of the input / output determination processing counter 315 to “C011”, and this is reflected in the computer node configuration management table 317 (frame 984 in FIG. 31).
  • the state update 910 With the state update 910, the states of the computer nodes 100A, 100B, and 100C change as shown at time T3 (row 922) in FIG.
  • FIG. 34 shows a processing sequence of the computer nodes 100A, 100B, and 100C in an execution example of internal delay generation in the processing target input packet selection processing.
  • the time T1 corresponds to the execution time from S300 to S602 of the processing target input packet selection processing of the computer nodes 100A and 100B, and corresponds to the execution time of S300 to S602 of the processing target input packet selection processing of the time T1 ′ computer node 100C.
  • Time T2 corresponds to the execution time of S300 to S509 in the next execution cycle
  • time T3 corresponds to the execution time of S601 to S611 executed based on the processing result of time T2.
  • Transmission 1001 and transmission 1012 correspond to S402, TO1002 and TO1013 correspond to S403, list creation 1003 corresponds to S404 to S508, TO1004 corresponds to S509, transmission 1005 corresponds to S402, and TO1006 corresponds to S403.
  • List creation 1007 corresponds to S404 to S508, TO1008 corresponds to S509, majority decision 1009 corresponds to S601, status update 1010 corresponds to S604 to S609, and transmission 1011 corresponds to S611.
  • FIG. 35 shows time-dependent contents of the external input packet management table, the computer node processing state table, and the input / output determination processing counter of each computer node in Case B.
  • the configuration of columns and rows is the same as in FIG.
  • FIG. 36 shows the hourly contents of the inter-node communication packet 600 transmitted and received in order to exchange the contents of the external input packet 500 received by each computer node between the computer nodes in case B.
  • the column configuration and the row configuration of the row 1042 and the row 1043 are the same as those in FIG. 29, but only the row configuration at the time T1 and the time T1 'is different.
  • a row 1040 shows the contents of the inter-node communication packet 600 of the computer nodes 100A and 100B for the transmission 1001 at time T1
  • a row 1041 shows the contents of the inter-node communication packet 600 of the computer node 100C for the transmission 1012 at time T1'1.
  • FIG. 37 shows the hourly contents of the inter-node communication packet 600 transmitted and received in order to exchange the list created by each computer node between the computer nodes in Case B.
  • the column configuration and the row configuration of the row 1061 are the same as those in FIG. 30, but the row configuration of the row 1060 is different.
  • a row 1060 shows the contents of the inter-node communication packet 600 of the computer nodes 100A and 100B for the list creation 1003 at time T1.
  • a blank line in the line 1064 means that the computer node 100C is not performing inter-node communication.
  • FIG. 38 shows the hourly contents of the computer node configuration management table 317 of the computer nodes 100A and 100B in case B.
  • the column configuration and the row configuration of the rows 1081 and 1082 are the same as those in FIG. 31, but the row configuration of the row 1080 is different.
  • a row 1080 represents the contents of the computer node configuration management table 317 at time T1, and indicates that only the information of the computer nodes 100A and 100B is retained.
  • a blank row in the row 1085 means that the computer node 100C does not hold information in the computer node configuration management table.
  • FIG. 39 shows the hourly contents of the computer node configuration management table 317 of the computer node 100C in case B.
  • the column configuration and the row configurations of the row 1091 and the row 1092 are the same as those in FIG. 31, but the row configuration of the row 1090 is different.
  • a row 1090 represents the contents of the computer node configuration management table 317 at time T1 'and indicates that only the information of the computer node 100C is retained. Blanks in the lines 1093 and 1094 mean that the computer nodes 100A and 100B do not hold information in the computer node configuration management table.
  • FIG. 40 shows the contents of the decision input management table 800 of each computer node in Case B.
  • FIG. 41 shows the contents of the determined input management table 810 of the computer node 100B in case B.
  • each computer node 100A, 100B, 100C starts processing in the state of the row 1020 in FIG.
  • the computer node 100A holds a value of “2” for WS1025, “BEGIN” for ST1026, and “C010” for CNT1027.
  • the computer nodes 100B and 100C have the same value.
  • the contents of the information stored in the external input packet management table 550 are different, and the computer node 100A holds the information of the external input packets with the sequence numbers “2A-1” and “2B-1” (frame 1031).
  • the node 100B holds only the information of the externally input packet with the sequence number “2C-1” (frame 1032).
  • “0” is indicated.
  • the computer node 100C does not hold the external input packet 500 information (frame 1033).
  • the computer nodes 100A and 100B set the acquired information of the external input packet 500 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600 and transmit it.
  • the computer node 100C does not transmit 1001 because the external input packet 500 that triggers activation has not arrived at the computer node 100C.
  • the state of the transmitted inter-node communication packet 600 is shown at time T1 in FIG. 36 (line 1040).
  • the computer node 100A acquires the information of the two external input packets 500 (information of the external input packets whose sequence numbers are “2A-1” and “2B-1”) according to the value of the WS 1025 and sets the information in the inter-node communication packet 600. (Line 1044).
  • the computer node 100B also tries to acquire the information of the two external input packets 500. However, since only one external input packet 500 can be acquired, the information (sequence number “2C-1” of the acquired external input packet 500 can be obtained. And the other is set to "0" (line 1045).
  • the computer node 100C that has received the external input packet 500 performs transmission 1012 using the sequence number of the external input packet 500.
  • the contents of the transmitted inter-node communication packet 600 are shown at time T1 'in FIG. 36 (line 1046).
  • the computer nodes 100A and 100B create a “reception result list” and transmit between the computer nodes (list creation 1003).
  • the contents of the inter-node communication packet 600 transmitted and received in this list creation 1003 are shown at time T1 in FIG. 37 (line 1060).
  • the “reception result list” does not include the information of the external input packet 500 acquired by the computer node 100C (line 1064).
  • the computer nodes 100A and 100B both acquire the “reception result list” transmitted in transmission 1012, and determine whether or not there is a “majority agreement input packet” in S601, but the “majority agreement input packet” exists in the frame 1065. Therefore, the computer nodes 100A and 100B change the value of the input synchronization step 710 of the computer node processing state table 700 to “3” in S602, and activate S300 within the time T2.
  • the computer node 100C executes TO1013 in anticipation of receiving the inter-node communication packet 600 transmitted by the transmission 1001 from the computer nodes 100A and 100B, but instead uses the “reception result list” transmitted by the list creation 1003. Receive.
  • the computer node 100C detects a mismatch in the computer node processing state in S504 and S505, and updates the value of Penalty 703 in the computer node processing state table 700 to “1” in S506. Since there is no “majority agreement input packet” in the “reception result list” received by the computer node 100C from the computer nodes 100A and 100B, the computer node 100C receives the value of the input synchronization step 710 of the computer node processing state table 700 in S602. Is changed to “3”, and S300 within time T2 is activated.
  • FIG. 38 shows the contents of the computer node configuration management table 317 of the computer nodes 100A and 100B at time T1 (line 1080).
  • the computer nodes 100A and 100B do not hold the information of the computer node 100C in the computer node configuration management table (blank row in row 1085).
  • FIG. 39 shows the state of the computer node configuration management table 317 of the computer node 100C at the time T1 ′ (line 1090).
  • the computer node 100C does not hold the information of the computer nodes 100A and 100B in the computer node configuration management table (blank rows in the rows 1093 and 1094).
  • each computer node 100A, 100B, 100C at the start of time T2 is shown at time T2 in FIG. 35 (line 1029).
  • the value of WS 1023 of computer node 100A has changed to “3” due to the execution of S602 at time T1, and this is the same for computer nodes 100B and 100C.
  • the computer node 100C holds information of the new external input packet 500 (information of the external input packet with the sequence number “2A-1”) that arrived during the processing at time T1 ′ (frame 1034).
  • each of the computer nodes 100A, 100B, and 100C tries to acquire three external input packet 500 information, sets the acquired external input packet 500 information in the inter-node communication packet 600, and transmits it.
  • the state of the transmitted communication packet 600 between nodes is shown at time T2 in FIG. 36 (line 1042).
  • the inter-node communication packet 600 sent out by the computer node 100C holds the value “1” of Penalty 703 updated in S506 at time T1 ′ (frame 1047).
  • a “reception result list” is created from the inter-node communication packet 600 transmitted and received in the transmission 1005, and the contents of the “reception result list” are made consistent among the computer nodes 100A, 100B, and 100C.
  • the contents of the inter-node communication packet 600 transmitted and received at this time are shown at time T2 in FIG. 37 (line 1061).
  • the external input packet with the sequence number “2A-1” is determined as a “majority agreement input packet” at time T2 (frame 1065 and frame 1066).
  • the process proceeds to a process at time T3.
  • FIG. 38 shows the state of the computer node configuration management table 317 of the computer nodes 100A and 100B at time T2 (line 1081).
  • the computer nodes 100A and 100B reflect the information of the synchronized computer node 100C in the computer node configuration management table (line 1086).
  • FIG. 39 shows the state of the computer node configuration management table 317 of the computer node 100C (line 1091).
  • the computer node 100C newly holds information on the computer nodes 100A and 100B in the computer node configuration management table (line 1096 and line 1097).
  • an external input packet having a sequence number “2A-1” is selected as a “majority agreement input packet”.
  • the decision input management table 800 and the input / output decision processing counter 315 are updated based on the “majority consent input packet”.
  • Each of the computer nodes 100A, 100B, 100C sets the information of the external input packet 500 having the sequence number “2A-1” in the decision input management table 800.
  • the contents of the decision input management table 800 at this time are shown in FIG.
  • the information of the external input packet 500 whose sequence number is “2A-1” is deleted from the external input packet management table 550.
  • the computer node 100B that has not received the external input packet 500 with the sequence number “2A-1” that has become the “majority agreement input packet” by itself has entered the determined input management table 810 with the external input packet with the sequence number “2A-1”. 500 information is set.
  • the contents of the determined input management table 810 at this time are shown in FIG.
  • Each of the computer nodes 100A, 100B, and 100C updates the value of the input / output determination processing counter 315 to “C011”, which is reflected in the computer node configuration management table 317 (frame 1087 in FIG. 38 and frame 1098 in FIG. 39). . Due to the status update 910, the status of the computer nodes 100A, 100B, and 100C changes as shown at time T3 (row 1030) in FIG.
  • the external input packet 500 information to be processed by the application 200 determined by the computer nodes 100A, 100B, and 100C is transmitted and received, and is shared among the computer nodes 100A, 100B, and 100C.
  • the contents of the inter-node communication packet 600 transmitted and received at this time are shown at time T3 (row 1043) in FIG. ⁇ Execution result determination process (Case C)> The description will be made with reference to FIGS. 42, 43, 44, 45, 46, 47, 48 and 49.
  • FIG. 42 shows the processing sequence of each computer node.
  • Time T1 corresponds to S801 to S913 of the execution result determination process of the computer nodes 100A and 100B, and time T1 'corresponds to S801 to S913 of the execution result determination process of the computer node 100C.
  • Time T2 corresponds to S1001 to S1208.
  • time T3 corresponds to S1301 to S1308, and time T4 corresponds to processing after S1309.
  • the time T3 corresponds to S1301 to S1315
  • the time T4 corresponds to the processes after S1316 and S1317.
  • Transmission 1101 and transmission 1105 correspond to S804, TO1102 and TO1106 correspond to S805, list creation 1103 corresponds to S806 to S912, and TO1104 corresponds to S913.
  • Majority determination 1107 corresponds to S1001 to S1105
  • status update 1108 corresponds to S1101 to S1104
  • transmission 1109 corresponds to S1105
  • TO1110 corresponds to S1106,
  • list creation 1119 corresponds to S1107 to S1208.
  • the status update 1120 corresponds to S1301 to S1305, the transmission 1121 corresponds to S1306 and S1307, the TO 1122 corresponds to S1308, and the output 1123 corresponds to S1309.
  • the status update 1124 corresponds to S1301 to S1312, the transmission 1125 corresponds to S1313 and S1314, the TO 1126 corresponds to S1315, and the monitor 1127 corresponds to the processing after S1316 and S1317.
  • FIG. 43 shows the contents of the inter-node communication packet transmitted and received at the transmissions (1101, 1105) at times T1 and T1 ′.
  • the computer node processing state individual detailed information 604 holds the calculation result of the application 200 executed on each of the computer nodes 100A, 100B, and 100C.
  • a row 1131 shows the contents of the inter-node communication packet 600 transmitted / received in the transmission 1101 at time T1, specifically, a row 1133 in the configuration row shows the transmission contents of the computer node 100A, and a row 1134 shows the transmission contents of the computer node 100B.
  • the blank line in row 1135 means that computer node 100C did not transmit at time T1.
  • the row 1132 shows the contents of the communication packet 600 transmitted and received in the transmission 1105 at time T1 ′.
  • the row 1138 of the configuration row shows the transmission contents of the computer node 100C, but the blank rows of the rows 1136 and 1137 are It means that the computer nodes 100A and 100B are not transmitting.
  • FIG. 44 shows the contents of an inter-node communication packet that is transmitted and received between the computer nodes 100A, 100B, and 100C in the transmission 1109 at time T2.
  • the computer node processing state individual detailed information 604 holds “leader selection result” determined by each of the computer nodes 100A, 100B, and 100C.
  • a row 1140 shows the contents of the inter-node communication packet 600 transmitted and received in the transmission 1109 at time T2, specifically, the row 1141 of the configuration row shows the transmission contents of the computer node 100A, and the row 1142 shows the transmission contents of the computer node 100B.
  • the row 1143 shows the transmission contents of the computer node 100C.
  • FIG. 45 shows the contents of an inter-node communication packet transmitted and received by each computer node at transmissions 1121 and 1125 at time T3.
  • a row 1150 indicates the contents of the inter-node communication packet 600 transmitted and received at the transmission 1121 and the transmission 1125 at time T3. Specifically, the row 1151 of the configuration line indicates the transmission content of the computer node 100A, and the row 1152 indicates the content of the computer node 100B. The transmission contents are shown, and a row 1153 shows the transmission contents of the computer node 100C.
  • FIG. 46 shows the contents of inter-node communication packets transmitted and received by the computer nodes 100A and 100B in the list creation 1103 at time T1.
  • a row 1160 shows the contents of the inter-node communication packet 600 transmitted / received between the computer nodes 100A and 100B in the list creation 1103 at time T1, which is “reception” obtained by combining the inter-node communication packets 600 transmitted / received in the “transmission” process.
  • "Result list” The configuration line 1161 indicates the “transmission” content of the computer node 100A, and the row 1162 indicates the “transmission” content of the computer node 100B.
  • the blank line in row 1163 means that the inter-node communication packet received from the computer node 100C is not included in the “reception result list” because the inter-node communication packet 600 has not been received from the computer node 100C.
  • FIG. 47 shows the contents of an inter-node communication packet transmitted / received between the computer nodes in the list creation 1119 at time T2.
  • a row 1170 indicates the contents of the inter-node communication packet 600 transmitted / received between the respective computer nodes 100A, 100B, 100C in the list creation 1119. "Result list”.
  • the row 1171 of the configuration line indicates the “transmission” content of the computer node 100A
  • the row 1172 indicates the “transmission” content of the computer node 100B
  • the row 1173 indicates the “transmission” content of the computer node 100C.
  • FIG. 48 shows the contents of the computer node configuration management table of the arbitrary computer node according to time.
  • the contents according to time are the same in the computer nodes 100A, 100B, and 100C.
  • a row 1180 shows the states of the computer node identifier 601 column, the input / output determination processing counter 602 column, and the computer node processing state 603 column of the computer node configuration management table 317 at time T1.
  • a row 1181 shows information held in the computer node configuration management table 317 at time T2, and a row 1182 shows information held in the computer node configuration management table 317 at T3.
  • the total number of computer nodes 317A at the time of input synchronization is a value (“3” in FIG. 48) set when input synchronization is completed, and is not changed during the output synchronization processing.
  • FIG. 49 shows the contents of the decision output management table of each computer node of the arbitrary computer node in the execution example of the execution result decision process.
  • the computer nodes 100A and 100B set the calculation result “X” of the application 200 by the selected input packet processing S115 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600 and send it.
  • the contents of the transmitted inter-node communication packet 600 are shown at time T1 in FIG. 43 (line 1131). Since the start of the execution result determination process is delayed, the computer node 100C does not perform transmission at time T1 (blank row in row 1135).
  • the computer nodes 100A and 100B combine the inter-node communication packets 600 transmitted and received in the transmission 1101 to create a “reception result list” and transmit it to the computer nodes 100A, 100B, and 100C.
  • the contents of the transmitted internode communication packet 600 are shown in FIG.
  • the “reception result list” includes information received from the computer nodes 100A and 100B (rows 1161 and 1162), but does not include information received from the computer node 100C (empty row of the row 1163).
  • the computer nodes 100A and 100B acquire both “reception result lists” in the TO 1104, and start the processing of the majority decision 1107.
  • the computer node 100C starts execution result determination processing at time T1 ', and sets the computation result “X” of the application 200 in the transmission node 1105 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600 and transmits it.
  • the contents of the transmitted inter-node communication packet 600 at time T1 '? Are shown at time T1'? In FIG. 43 (line 1132). Only the computer node 100C is transmitting at time T1'38 (line 1138), and the computer nodes 100A and 100B are not transmitting (blank lines 1137 and 1138).
  • the computer node 100C expects to receive the calculation result of the calculation by the application 200 of each computer node from the computer nodes 100A and 100B at TO1106, but receives the “reception result list” transmitted in the list creation 1103 instead. .
  • the computer node 100C detects a mismatch between the computer node processing states, and in S906, updates the value of Penalty 703 in the computer node 100Cha computer node processing state table 700 to “1”.
  • the computer node 100 ⁇ / b> C creates the “reception result list” by adding the calculation result of its own application 200 to the received “reception result list”, and starts the process of majority determination 1107.
  • the computer nodes 100A and 100B make a majority decision on the calculation result of the application 200 based on the “reception result list” shared in the list creation 1103.
  • the computer node 100C makes a majority decision based on the “reception result list” acquired and created in TO1106.
  • the calculation results of the applications 200 of the computer nodes 100A, 100B, and 100C are all the same “X”, all the computer nodes included in the “reception result list” are determined as “majority”.
  • a computer node as a leader candidate is selected from the computer nodes included in the “reception result list”, and ranking of leader selection is performed. Since the “reception result list” held by the computer nodes 100A and 100B includes “computer nodes 100A and 100B”, both select “computer nodes 100A and 100B” in S1102, and select “computer node 100B”. First, “computer node 100A” is ranked second (in this example, ranking is performed in descending order of the value of the computer node identifier).
  • the “reception result list” held by the computer node 100C includes “computer nodes 100A, 100B, and 100C”, the “computer nodes 100A, 100B, and 100C” are selected, and the “computer node 100B” is set as one. “Computer node 100A” is ranked second and “Computer node 100C” is ranked third. “Computer node 100C” has the largest computer node identifier value, but “1” is set in Penalty 703, so that it is ranked in the third lowest position.
  • each of the computer nodes 100A, 100B, 100C sets the leader selection result of the state communication 1108 in the computer node processing state individual detailed information 604 of the inter-node communication packet 600, and transmits it.
  • the contents of the transmitted inter-node communication packet 600 are shown in FIG.
  • the computer nodes 100A and 100B transmit without determining the leader selection order of “computer node 100C” (frames 1144 and 1145).
  • the computer node 100C adds and transmits its leader selection order (frame 1146).
  • the list creation 1119 creates and shares a “reception result list” in which reader selection ranks exchanged between the computer nodes 100A, 100B, and 100C are collated and combined.
  • FIG. 47 shows the contents of the inter-node communication packet 600 transmitted / received in the list creation 1119 in which the “reception result list” is set.
  • the leader selection order of the computer node 100C is complemented and reflected (frames 1174 and 1175).
  • the computer nodes 100A, 100B, and 100C are divided into “leader” and “monitor” based on the leader selection order, and perform different processes.
  • the computer node 100B becomes a “leader”, and the computer nodes 100A and 100C become “monitors”.
  • the computer node 100B determines itself as “leader” based on the leader selection order, sets “LEADER” in the processing state 704 of the computer node processing state table 700, and changes the value of the input / output determination processing counter 315. To do.
  • the computer nodes 100A and 100C are determined to be “monitor”.
  • the computer nodes 100A and 100C determine themselves as “monitor” based on the leader selection order, set “MONITOR” in the processing state 704 of the computer node processing state table 700, and the input / output determination processing counter 315. Change the value.
  • the computer node 100B is determined as a “leader”.
  • the state update 1120 and the state update 1124 reflect the information of the own and other computer nodes and the “leader / monitor” determination result in the computer node configuration management table 317 and the decision output management table 321.
  • the contents of the computer node configuration management table 317 at time T3 are shown in time T3 (line 1182) of FIG. 48, and the contents of the decision output management table 321 are shown in FIG.
  • each computer node 100A, 100B, 100C transmits its own computer node processing state.
  • the contents of the inter-node communication packet 600 transmitted by transmission 1121 and transmission 1125 are shown in FIG.
  • the updated input / output determination processing counter 602 value (frame 1154) of each of the computer nodes 100A, 100B, and 100C and the processing state 704 (frame 1155) indicating “reader / monitor” are notified.
  • the computer node 100B that is the “leader” executes S1309, and transmits a signal that is the calculation result of the application 200 to the outside.
  • the computer nodes 100A and 100C that are “monitors” execute S1316 and S1317 to monitor the signal transmission of the output 1123, thereby determining the normal / abnormality of the external output of the computer node 100B that is the “leader”. Then, the resynchronization detection process S111 or the output abnormality process S1400 is executed.
  • FIG. 50 is an example of the overall configuration of the majority synchronization system in the addition of a new computer node according to the embodiment of this invention.
  • the synchronization system 1A shows a system of a majority voting synchronization system in operation that is composed of computer nodes 100A, 100B, and 100C.
  • the computer node 100D is a computer node newly added to the synchronization system 1A, and holds the same hardware configuration and software configuration as the computer node 100A in FIG.
  • the external network 3 connects the computer nodes 100A, 100B, and 100C and the computer node 100D to the terminals 2A, 2B, and 2C, and the internal network 4 connects the computer nodes 100A, 100B, 100C, and the computer node 100D.
  • the synchronization system 1B shows a system of a majority synchronization system composed of computer nodes 100A, 100B, 100C, and 100D after the addition of the computer node 100D.
  • the input / output synchronization unit 310 of the base software 300 executes the resynchronization process S118, and in S1183, “REJOIN-REQ inter-node communication packet”
  • the data is transmitted by multicast to the computer nodes 100A, 100B, 100C connected to the internal network 4.
  • the process waits until a timeout occurs in expectation of arrival of the “REJOIN-ACK inter-node communication packet”.
  • the computer nodes 100A, 100B, and 100C detect “REJOIN-REQ inter-node communication packet” from the computer node 100D in S1114 of the resynchronization detection process S111, and in S1118, calculate “REJOIN-ACK inter-node communication packet”. Multicast to other computer nodes including the node 100D. Then, it waits until time-out in expectation of arrival of “JOINED inter-node communication packet” from the computer node 100D.
  • the computer node 100D Upon receiving the “REJOIN-ACK inter-node communication packet” from the computer nodes 100A, 100B, and 100C, the computer node 100D sends the “REJOIN-REQ inter-node communication packet” to the computer nodes 100A, 100B, and 100C in S11810. S112 is activated to transmit by multicast and start the input synchronization processing.
  • the computer nodes 100A, 100B, and 100C confirm the reception of the “REJOIN-REQ inter-node communication packet” from the computer node 100D, the computer nodes 100A, 100B, and 100C activate S112 to start the input synchronization processing.
  • the majority voting synchronization system processes the external input packet 500 from the terminals 2-A, 2-B, and 2-C by a system (synchronization system 1-B) including the computer node 100-D.

Abstract

複数の計算機ノードを有する計算機システムであって、各計算機ノードは、処理要求を受信する外部通信部と、当該処理要求に従って処理を実行するアプリケーション部と、各計算機ノードで実行される処理を他の計算機ノードとの間で同期させる同期部と、他の計算機ノードとの間で情報の送受信を実行するノード間通信部とを有する。同期部は、外部通信部が受信した処理要求をノード間通信部を介して他の計算機ノードに送信する。また、同期部は、ノード間通信部を介して他の計算機ノードからも処理要求を受信する。そして同期部は、同じ処理要求を外部通信部を経由して受信した計算機ノードの数に基づいて、アプリケーション部に実行させる処理要求を選択し、アプリケーション部は選択された処理要求を実行する。

Description

計算機システム
複数の計算機がネットワークで接続された多重システムにおいて計算機間で同期をとる技術に関する。
 ネットワークで接続されている複数の計算機が各々同じ業務アプリケーションを実行することで、高信頼及び高可用なシステムを構築する技術がある。特に、障害時の業務の連続性を保証するために、多数の計算機を同期させて運用するフォールトトレランスコンピュータ(以下、FTCと呼ぶ。)技術が幅広く使用されている。FTCには、CPUのバスクロックレベルでLOCKSTEPを実現する同期方式が幅広く使用されているが(特許文献1参照)、近年CPUの構成の複雑化につれ、ソフトウェアレベルでの同期方式が注目されている(特許文献2参照)。
特開2006-209565 特開2009-217503
 従来のソフトウェアレベルでの同期方式では、同期ポイントをアプリケーション内部に設けて同期を取っているため、同期処理にオーバヘッドが発生するという課題がある。また、フォルトトラレンスコンピュータの出力処理においては、FTCを構成する複数の計算機各々からの出力を用いて多数決を行うことでFTCからの出力値を決定するボーターという装置が別途必要である。高信頼及び高可用性を保つためには、ボーター装置も多重化しなければならない。
 そこで、ボータ装置の様な装置を別途用いることなく複数計算機間でソフトウェアレベルでの同期を実現する技術を提供する。また、低オーバヘッドな同期方法も提供する。
複数の計算機ノードを有する計算機システムであって、各計算機ノードは、処理要求を受信する外部通信部と、当該処理要求に従って処理を実行するアプリケーション部と、各計算機ノードのアプリケーション部で実行される処理の他の計算機ノードとの間での同期を制御する同期部と、他の計算機ノードとの間で情報の送受信を実行するノード間通信部とを有する。各計算機ノードの同期部は、外部通信部が受信した処理要求識別情報が付与された処理要求に、当該計算機ノードの識別情報を送信元計算機ノード識別情報として付与して前記ノード間通信部を介して他の計算機ノードに送信する。また、各計算機ノードの同期部は、ノード間通信部を介して他の計算機ノードから当該他の計算機ノードの識別情報が付与された処理要求を受信する。そして、各計算機ノードの同期部は、同じ処理要求識別情報が付与された処理要求を外部通信部を経由して受信した計算機ノードの数に基づく第一の所定の判断基準に従って、ノード間通信部が他の計算機ノードから受信した処理要求と前記外部通信部が受信した処理要求の中から、アプリケーション部に実行させる処理要求を選択し、アプリケーション部は選択された処理要求を実行する。
 低オーバヘッドな同期処理が可能なフォルトトラレンスコンピュータを実現することができる。また、多数決判定のための特別な装置であるボーターを必要とせず、システム構成がシンプルなフォルトトレランスコンピュータの構築が可能となる。
多数決同期システムの全体構成の一例を示す図である。 外部入力パケットの構成の一例を示す図である。 外部入力パケット管理テーブルの構成の一例を示す図である。 計算機ノード処理状態テーブルの構成の一例を示す図である。 計算機ノードの処理状態遷移の一例を示す図である。 ノード間通信パケットの構成の一例を示す図である。 計算機ノード構成管理テーブルの構成の一例を示す図である。 決定入力管理テーブルの構成の一例を示す図である。 決定済み入力管理テーブルの構成の一例を示す図である。 決定出力管理テーブルの構成の一例を示す図である。 基盤ソフトウェア処理の一例を示すフローチャートである。 処理対象入力パケット選定開始確認処理の一例を示すフローチャートである。 処理対象入力パケット選定処理の一例を示すフローチャートである。 入力決定パケット送信処理の一例を示すフローチャートである。 入力処理状態一致処理の一例を示すフローチャートである。 入力多数決処理の一例を示すフローチャートである。 選定入力パケット処理の一例を示すフローチャートである。 実行結果決定処理の一例を示すフローチャートである。 出力処理状態一致処理の一例を示すフローチャートである。 出力多数決処理の一例を示すフローチャートである。 リーダー選出処理の一例を示すフローチャートである。 リーダー処理状態一致化処理の一例を示すフローチャートである。 ボーター処理の一例を示すフローチャートである。 出力異常処理の一例を示すフローチャートである。 再同期検知処理および再同期処理の一例を示すフローチャートである。 再同期検知処理および再同期処理において用いられるノード間通信パケットの一例を示す図である。 ケースAにおける、各計算機ノードの処理シーケンスの一例を示す図である。 ケースAににおける、各計算機ノードの外部入力パケット管理テーブル、計算機ノード処理状態テーブル、入出力決定処理カウンタの内容を時間別に例示した図である。 ケースAにおける、送信に対する各計算機ノードのノード間通信パケットの内容を時間別に例示した図である。 ケースAにおける、リスト作成に対する各計算機ノードのノード間通信パケットの内容を時間別に例示した図である。 ケースAにおける、任意の計算機ノードの計算機ノード構成管理テーブルの内容を時間別に例示した図である。 ケースAにおける、各計算機ノードの決定入力管理テーブルの内容の一例を示す図である。 ケースAにおける、計算機ノード100Bの決定済み入力管理テーブルの内容の一例を示す図である。 ケースBにおける、各計算機ノードの処理シーケンスの一例を示す図である。 ケースBにおける、各計算機ノードの外部入力パケット管理テーブル、計算機ノード処理状態テーブル、入出力決定処理カウンタの内容を時間別に例示した図である。 ケースBにおける、送信に対する各計算機ノードのノード間通信パケットの内容を時間別に例示した図である。 ケースBにおける、リスト作成に対する各計算機ノードのノード間通信パケットの内容を時間別に示す図である。 ケースBにおける、計算機ノード100A、100Bの計算機ノード構成管理テーブルの内容を時間別に例示した図である。 ケースBにおける、計算機ノード100Cの計算機ノード構成管理テーブルの内容を時間別に示す図である。 ケースBにおける、各計算機ノードの決定入力管理テーブルの内容の一例を示す図である。 ケースBにおける、計算機ノード100Bの決定済み入力管理テーブルの内容の一例を示す図である。 ケースCにおける、各計算機ノードの処理シーケンスの一例を示す図である。 ケースCにおける、時間T1間およびT1'間の送信に対する各計算機ノードのノード間通信パケットの内容の一例を示す図である。 ケースCにおける、時間T2間の送信についての各計算機ノードのノード間通信パケットの内容の一例を示す図である。 ケースCにおける、時間T3間の送信についての各計算機ノードのノード間通信パケットの内容の一例を示す図である。 ケースCにおける、時間T1間のリスト作成についての計算機ノード100A、100Bのノード間通信パケットの内容の一例を示す図である。 ケースCにおける、時間T2間のリスト作成についての各計算機ノードのノード間通信パケットの内容の一例を示す図である。 ケースCにおける、任意の計算機ノードの計算機ノード構成管理テーブルの内容を時間別に示す図である。 ケースCにおける、各計算機ノードの決定出力管理テーブルの内容の一例を示す図である。 新規計算機ノードを追加する場合のシステムの全体構成例を示す図である。
 以下、実施の形態を説明する。説明は実施例1と実施例2とに分けて行う。実施例1では実施形態の詳細について説明を行った後、更に3つの具体的なケースを想定してケース毎に実施態様を説明する。実施例2では、実施例1で説明した内容を踏まえて、多数決同期システムに新たな計算機ノードを加える場合における処理を説明する。尚、図面においては、同じ要素には同じ参照番号を用いる。
 本発明が実施の形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明に含まれる。
<全体構成(図1)>
 図1は多数決同期システムの全体構成の一例を示す図である。多数決同期システムは一つの同期システム1(フォルトトレランスコンピュータとも呼ぶ)と複数の端末2および外部ネットワーク3により構成される。同期システム1は複数台の計算機ノード100と内部ネットワーク4により構成されている。
 同期システム1は外部ネットワーク3を経由して端末2から外部入力パケット500を受信する。端末2から送信される外部入力パケット500の内、因果関係のある複数の外部入力パケット500はその送信順序が守られて同期システム1に到着する。なぜならば、このような外部入力パケット500については、同期システム1が外部入力パケット500を受信した後、当該外部入力パケット500に対する応答を同期システム1から端末2が受け取った後にはじめて、次の外部入力パケット500が端末2から同期システム1に送信されるからである。その他の外部入力パケット500については、端末2における送信順序と同期システム1における受信順序は必ずしも一致しない。従って、順序を守って処理する必要がある外部入力パケット500に関しては、外部入力パケット500に順序を示す情報(タイムスタンプやシーケンス番号)が付与されている。
 尚、外部入力パケット500は端末2から同期システム1へマルチキャスト方式で送信され、これに対する応答(処理結果等)は同期システム1から端末2へマルチキャスト方式で返信される。また、同期システム1で実行されるアプリケーションは内部状態(オープン状態のファイル、ネットワークコネクション等)を持たないものとする。
 計算機ノード100はメモリ101、プロセッサ102、二次記憶装置103、外部通信インタフェース104(図中、インタフェースをI/Fと略記)、ノード間通信I/F105のハードウェアを備え、これらが内部バス等の通信路によって接続されている。計算ノード100を制御するソフトウェアプログラムは、アプリケーション200、基盤ソフトウェア300、オペレーティングシステム400から構成されている。さらに基盤ソフトウェア300は外部入力パケット記憶部301と入出力同期部310に大別され、入出力同期部310は処理状態記憶部311、ノード間通信処理部312、入力同期部313、決定入力記憶部314、入出力決定処理カウンタ315、再同期検知部316、計算機ノード構成管理テーブル317、再同期要求部318、プログラム処理部319、出力同期部320、決定出力管理テーブル321から構成される。同期システム1内の複数の計算機ノード100は、いずれも同様のハードウェア/ソフトウェア構成を有する。図1では3台の端末2A、2B、2Cと3台の計算機ノード100A、100B、100Cの例が示されているが、特に台数は限定されない。またアプリケーション200の個数や種類の数は限定されるものでは無い。
 端末2と計算機ノード100は外部ネットワーク3を介して接続される。計算機ノード100側では、外部ネットワーク3はノード間通信I/F105に接続される。同期システム1内の各計算機ノード100A、100B、100Cは、ノード間通信I/Fに接続された内部ネットワーク4を介して接続される。
 端末2は、外部ネットワーク3を通じて同期システム1に要求を送信し、同期システム1が当該要求を処理して結果を端末2に返信する。同期システム1内の各計算機ノード100は、外部ネットワーク3及び外部通信I/F104を通じて受信した端末2からの要求を、内部ネットワーク4とノード間通信I/F105を介して他の計算機ノード100にも送信し、他の計算機ノードと協調して動作して処理し、処理結果を端末2に返信する。
 計算機ノード100内の二次記憶装置103はアプリケーション200、基盤ソフトウェア300、オペレーティングシステム400を格納している。プロセッサ102は二次記憶装置103からアプリケーション200、基盤ソフトウェア300、オペレーティングシステム400をメモリ101への読み込んで展開し、基盤ソフトウェア300やアプリケーション200、オぺレーションシステム400を実行すると共に、外部通信I/F104やノード間通信I/F105からの割込みも処理する。以降、アプリケーション200やオペレーションシステム400や基盤ソフトウェア300(その構成要素を含む)が実行する処理として説明される動作は、実際にはプロセッサ102がこれらのソフトウェアを実行することによって行われる。外部通信I/F104は外部ネットワーク3を通じて端末2とのパケットの送受信を行う。ノード間通信I/F105は内部ネットワーク4を通じて計算機ノード100間のパケットの送受信を行う。
 メモリ101内に展開されたオペレーティングシステム400は基盤ソフトウェア300やアプリケーション200の動作を制御する。基盤ソフトウェア300の外部入力パケット記憶部301と入出力同期部310は異なるタスクとして動作し、アプリケーション200は必要に応じてプログラム処理部319から実行される。
 外部入力パケット記憶部301は外部入力パケット管理テーブル550を保有し、外部通信I/F104が受信した外部入力パケット500を外部入力パケット管理テーブル550に格納する。外部入力パケット500の詳細は図2と共に後述する。外部入力パケット管理テーブル550の詳細は図3と共に後述する。
処理状態記憶部311は計算機ノード処理状態テーブル700を保有し、計算機ノード100の処理状態が記録される。計算機ノード処理状態テーブル700の詳細は図4と共に後述する。
 ノード間通信処理部312は計算機ノード100間の通信処理を制御し、ノード間通信パケット600の送受信する。ノード間通信パケット600の詳細は図10と共に後述する。
 入力同期部313は処理対象入力パケット選定開始処理S113および処理対象入力パケット選定処理S114を実効する。処理対象入力パケット選定開始処理S113の詳細は図12と共に後述する。処理対象入力パケット選定処理S114の詳細は図13~図16と共に後述する。
 決定入力記憶部314は決定入力管理テーブル800および決定済み入力管理テーブル810を保有し、入力同期部313にて決定され、入出力同期部310が処理する外部入力パケット500の情報を保持する。決定入力管理テーブル800の詳細は図7と共に後述する。決定済み入力管理テーブル810の詳細は図8と共に後述する。
 入出力決定処理カウンタ315は計算機ノード100が実行する処理段階のカウンタ値を保持する。他の計算機ノード100との間で入出力決定処理カウンタ315を比較することで、計算機ノード100が実行する処理の周期ずれを識別する。
 再同期検知部316は複数の計算機ノード100が協調動作している同期システム1に新しく参加しようとする計算機ノード100や、一度協調動作している同期システム1から排除されたが再参加を試みている計算機ノード100を検出して、受入れ処理を行う。再同期検知部316は再同期検知処理S111を実行する。再同期検知処理S111の詳細は図25と共に後述する。
 計算機ノード構成管理テーブル317は処理対象入力パケット選定処理S114を実行し、選定入力パケット処理S115の処理対象となる外部入力パケット500の決定に寄与する計算機ノード100情報を保持するテーブルである。計算機ノード構成管理テーブル317の詳細は図6と共に後述する。
 再同期要求部318は複数の計算機ノード100が協調動作している同期システム1に新しく参加しようとする計算機ノード100や、一度協調動作している同期システム1から排除されたが再参加を試みている計算機ノード100が実行する処理である。サイ同期要求部318は再同期処理S118を実行する。再同期処理S118の詳細は図25と共に後述する。
 プログラム処理部319は端末2からの処理要求に応じてアプリケーション200を選択、起動を実行する処理である。選定入力パケット処理S115を実行する。選定入力パケット処理S115の詳細は図17と共に後述する。
 出力同期部320は、各計算機ノード100のアプリケーション200の実行結果を用いて多数決判定を行い、各計算機ノード100についてリーダーとモニターの役割分けを行い、端末2への実行結果送信処理を行う。出力同期部320は実行結果決定処理S116を実行する。実行結果決定処理S116の詳細は図18~図24と共に後述する。
 決定出力管理テーブル321は実行結果決定処理S116に寄与した計算機ノード100の情報を保持するテーブルである。決定出力管理テーブル321の詳細は図9と共に後述する。
<外部入力パケット(図2)>
 図2は外部入力パケット500の構成の一例を表す図である。端末2は同期システム1へ外部入力パケット500を送信することで要求命令を伝える。
 送信元情報501は送信元端末2を識別する情報である。シーケンス番号502は送信元端末2から発せられた複数の外部入力パケット500各々を一意に識別する情報である。シーケンス番号502の値は、送信元端末2の識別子を含んだ値にすることによって、端末2間で重複しないようにすることができる。送信タイムスタンプ503は送信元端末2が外部入力パケット500を発信した時刻である。順列処理要否フラグ504は送信元端末2が送信した複数の外部入力パケット500間に一連の順序性が存在することを識別する情報である。順列処理ブロック数505は前述の一連の順序性が存在する複数の外部入力パケット500の個数を示す。順列処理開始番号506は前述の一連の順序性が存在する複数の外部入力パケット500の内、先頭に位置する外部入力パケット500のシーケンス番号502である。コンテンツ507はアプリケーション200の実行に関係する情報であるアプリ識別子508とパラメタ509から構成される。アプリ識別子508は計算機ノード100内で実行されるアプリケーション200を指定する情報であり、パラメタ509にはアプリケーション200に引渡されるパラメタ情報である。
<外部入力パケット管理テーブル(図3)>
 図3は外部入力パケット管理テーブル550の構成の一例を示す図である。外部入力パケット管理テーブル550は外部入力パケット記憶部301内に保持され、計算機ノード100が受信した外部入力パケット500を格納するテーブルである。外部入力パケット管理テーブル550に格納される外部入力パケット500数は特に限定されるものではない。
 番号551は格納した外部入力パケット500を一意に特定する管理番号である。外部入力パケット管理テーブル550には、受信した外部入力パケット500が改変されることなく格納されるため、番号551以外の列(要素)は外部入力パケット500の要素と同様である。
<計算機ノード処理状態テーブル(図4)>
 図4は計算機ノード処理状態テーブル700の構成例を示す図である。計算機ノード処理状態テーブル700は処理状態記憶部311内に保持され、計算機ノード100の実行状態情報を格納する。計算機ノード処理状態テーブル700は処理状態識別子701、付加情報702、Penalty703、処理状態704の列から構成される。
 処理状態識別子701と処理状態704は常に有効な値を保持する列であるが、付加情報702とPenalty703は処理状態識別子701に格納される値により有効な場合と無効な場合がある。
 処理状態識別子701は計算機ノード100の処理状態を識別する値である。処理状態識別子として「REJOIN-WAIT」、「REJOIN-REQ」、「REJOIN-ACK」、「JOINED」、「INPUT」、「OUTPUT」がある。
 「REJOIN-WAIT」は当該計算機ノード100が他の計算機ノード100からの再同期要求を待っている状態を表す。この状態の時、処理状態704にも「REJOIN-WAIT」が設定されるが、付加情報702とPenalty703は有効な値を保有しない(行705)。
 「REJOIN-REQ」は当該計算機ノード100が再同期要求を行っている状態を表す。この状態の時、処理状態704にも「REJOIN-REQ」が設定されるが、付加情報702とPenalty703は有効な値を保有しない。(行706)
 「REJOIN-ACK」は当該計算機ノード100が他の計算機ノード100からの再同期要求を受領した状態を表す。この状態の時、処理状態704にも「REJOIN-ACK」が設定されるが、付加情報702とPenalty703は有効な値を保有しない。(行707)
 「JOINED」は当該計算機ノード100が行った再同期要求に対して他の計算機ノード100からの返答を取得し、取得した情報を当該計算機ノード100に反映した状態を表す。この状態の時、処理状態704にも「JOINED」が設定されるが、付加情報702とPenalty703は有効な値を保有しない。(行708)
 「INPUT」は当該計算機ノード100が「入力同期」を行っている状態を表す。「入力同期」とは、計算機ノード100の外部入力パケット管理テーブル550に格納されている外部入力パケット500をアプリケーション200で処理するためにおこなわれる処理である。具体的には、各計算機ノード100間で多数決判定を行い、処理対象の外部入力パケット500と、アプリケーション200を実行する計算機ノード100を決定する処理である。この状態の時、付加情報702とPenalty703が有効になる。付加情報702には入力同期ステップ710情報が格納される。入力同期ステップ710は、外部入力パケット管理テーブル550から取得する外部入力パケット500の個数である。Penalty703は、例えば初期値として「0」、初期値以外の値として「1」のいずれかをとることができ、「1」である場合には当該計算機ノード100が他の計算機ノード100との間で行われる入力同期処理に一時不参加であったことを表す。処理状態704には「BEGIN」もしくは「END」が保持される。「BEGIN」は当該計算機ノード100が「入力同期」を実行している状態を表し、「END」は「入力同期」が完了した状態を表す(行709)。
 「OUTPUT」は当該計算機ノード100が「出力同期」を行っている状態を表す。「出力同期」とは、他の計算機ノード100との間でアプリケーション200の処理結果を用いて多数決判定を行い、処理結果を確定すると共に、端末2へ結果を出力する役割を担う「リーダー」計算機ノード100と「リーダー」の結果出力状態を監視する役の「モニター」計算機ノード100とを決定して、端末2へアプリケーション200の処理結果を出力する処理である。この状態の時、付加情報702は有効な値となり、「OUTPUT」、「LEADER」、「VOTER」の何れかの値を保持する。
 付加情報702が「OUTPUT」の時は、当該計算機ノード100はアプリケーション200の処理結果を他の計算機ノード100との間で共有する処理を行う段階であることを表し、共有処理が実行中の間は処理状態704に「BEGIN」が保持され、共有処理が完了すると処理状態704に「END」が保持される。またPenalty703は、例えば初期値として「0」、初期値以外の値として「1」をとる有効な列となり、「1」である場合には当該計算機ノード100が出力同期処理に一時不参加であったことを表す。
 付加情報702が「LEADER」の時は、当該計算機ノード100は「リーダー」役と「モニター」役の計算機ノード100の決定処理及び他の計算機ノード100との間で決定結果を共有する処理を実行する状態であることを表し、処理を実行中の間は処理状態704に「BEGIN」が保持され、役割決定処理が完了すると処理状態704に「END」が保持される。
 付加情報702が「VOTER」の時は、当該計算機ノード100は「リーダー」または「モニター」役としてアプリケーション200の処理結果を出力する処理を行う状態であることを表し、「リーダー」役で出力処理を行う場合は処理状態704に「LEADER」が保持され、「モニター」役で出力処理を行う場合は処理状態704に「MONITOR」が保持される(行711)。
<計算機ノード処理状態遷移図(図5)>
 図5は計算機ノード100の処理状態遷移の一例を示す図である。図5中のREJOIN-WAIT705、REJOIN-REQ706、REJOIN-ACK707、JOINED708、INPUT709、OUTPUT711は計算機ノード処理状態テーブル700の処理状態識別子701に設定される識別子と一致する。
 REJOIN-WAIT706処理状態の計算機ノード100は、REJOIN-ACK707処理状態に遷移した後INPUT709処理状態に遷移する、もしくは直接INPUT709処理状態に遷移する。REJOIN-REQ705処理状態の計算機ノード100はJOINED708処理状態に遷移した後、INPUT709処理状態に遷移する。INPUT709処理状態の計算機ノード100はOUTPUT711処理状態もしくはREJOIN-REQ705処理状態に遷移する。OUTPUT711処理状態の計算機ノード100はREJOIN-WAIT706処理状態もしくはREJOIN-REQ705処理状態に遷移する。
<ノード間通信パケット(図6)>
 図6はノード間通信パケット600の構成の一例を示す図である。ノード間通信パケット600は計算機ノード100の間で情報通信を行う際に使用される通信パケットである。ノード間通信パケット600は計算機ノード識別子601、入出力決定処理カウンタ602、計算機ノード処理状態603、計算機ノード処理状態個別詳細情報604から構成される。
 計算機ノード識別子601は同期システム1内で計算機ノード100を一意に識別する情報であり、当該ノード間通信パケット600を作成した計算機ノード100の識別子が設定される。入出力決定処理カウンタ602は当該ノード間通信パケット600を作成した計算機ノード100の入出力決定処理カウンタ315の値である。計算機ノード処理状態603は計算機ノード処理状態テーブル700と同様の構成を有しており、当該ノード間通信パケット600を作成した計算機ノード100の処理状態を保持する。計算機ノード処理状態個別詳細情報604は特定の構成を持たず、ノード間通信パケット600を送信する時々の用途に応じた情報が設定される。
<計算機ノード構成管理テーブル(図7)>
 図7は計算機ノード構成管理テーブル317の構成の一例を示す図である。計算機ノード構成管理テーブル317は入力同期処理に寄与した計算機ノード100の情報を保持するテーブルである。計算機ノード構成管理テーブル317は入力同期時計算機ノード総数317Aと計算機ノード識別子601、入出力決定処理カウンタ602、計算機ノード処理状態603の列から構成される。
 計算機ノード識別子601、入出力決定処理カウンタ602、計算機ノード処理状態603の列には、ノード間通信パケット600内の同名の列と同様の情報が格納される。計算機ノード構成管理テーブル317は、複数計算機ノード分の情報を保持することが可能で、計算機ノード構成管理テーブル317に情報が登録されている計算機ノード100の総数は入力同期時計算機ノード総数317Aに保持される。
<決定入力管理テーブル(図8)>
 図8は決定入力管理テーブル800の構成の一例を示す図である。決定入力管理テーブル800は入力同期処理の結果、アプリケーション200の処理対象に決定された外部入力パケット500の情報を保持する。決定入力管理テーブル800は決定入力総数801と、外部入力パケット500と同様の構成である送信元情報501列、シーケンス番号502列、送信タイムスタンプ503列、順列処理要否フラグ504列、順列処理ブロック数505列、順列処理開始番号506列、コンテンツ507内のアプリ識別子508列、パラメタ509列から構成される。外部入力パケット500の情報は複数個保持することが可能で、保持数は決定入力総数801に保持される。
<決定済み入力管理テーブル(図9)>
 図9は決定済み入力管理テーブル810の構成の一例を示す図である。入力同期処理では、ある外部入力パケット500を取得した計算機ノード100が同期システム1内で多数派を占める場合に、当該外部入力パケット500を取得していない少数派となった計算機ノード100にも当該外部入力パケット500情報を共有させて当該計算機ノード100のアプリケーション200にも当該外部入力パケットに基づく処理を実行させる。このとき少数派の計算機ノード100は、アプリケーション200実行後に当該外部入力パケット500を外部ネットワーク3を介して自ら取得する可能性がある。従って、外部入力パケット500の二重処理を避けるために、処理対象から外したい外部入力パケット500を決定済み入力管理テーブル810に記録する。
 決定済み入力管理テーブル810は決定済み入力総数811と、外部入力パケット500と同様の構成である送信元情報501列、シーケンス番号502列、送信タイムスタンプ503列、順列処理要否フラグ504列、順列処理ブロック数505列、順列処理開始番号506列、コンテンツ507内のアプリ識別子508列、パラメタ509列から構成される。外部入力パケット500の情報は複数個保持することが可能で、保持数は決定済み入力総数811に保持される。
<決定出力管理テーブル(図10)>
 図10は決定出力管理テーブル321の構成例を示す図である。決定出力管理テーブル321は出力同期処理に寄与した計算機ノード100の情報を保持するテーブルである。決定出力管理テーブル321は出力同期時計算機ノード総数321Aと順位321B、ノード間通信パケット600内に含まれる列と同一である計算機ノード識別子321C、入出力決定処理カウンタ321D、計算機ノード処理状態321Eと、計算機ノード処理結果321Fから構成される。順位321Bは複数の計算機ノード100から「リーダー」役になる計算機ノード100が選択される際の優先順位を意味し、計算機ノード処理結果321Fはアプリケーション200の実行結果を保持する。
 決定出力管理テーブル321は複数の計算機ノード100の情報を保持することが可能であり、保持数は出力同期時計算機ノード総数321Aに保持される。
 以下、同期システム1が外部入力パケット500を外部入力パケット管理テーブル550に取り込むための処理、及び取り込んだ外部入力パケット500に対する一連の処理を図11を用いて説明する。取り込んだ外部入力パケット500に対する一連の処理の内、処理対象外部入力パケットの選定を開始する処理を図12を用いて、処理対象外部入力パケットの選定を行う処理を図13、図14、図15、図16を用いて、選定した外部入力パケットに対してアプリケーション200を起動する処理を図17を用いて、アプリケーション200の実行結果を決定する処理を図18、図19、図20、図21、図22、図23、図24を用いて説明する。更に計算機ノード100の再同期検知処理、再同期処理について図25、図26を用いて説明する。なお、各フローチャートの説明ではステップを「S」と略記する。
<基盤ソフトウェア処理のフローチャート(図11)>
 図11は基盤ソフトウェア処理の一例を示すフローチャートである。基盤ソフトウェア300は外部入力パケット記憶部301と入出力同期部310に大別され、それぞれ異なるタスクとしてオペレーティングシステム400から起動され、両者は独立して動作する。図11は、外部入力パケット記憶部301と入出力同期部310、それぞれによって実行される処理のフローチャートを示す。
 外部入力パケット記憶部301は、初めに外部通信I/F104による外部入力パケット500の受信を検出する(S101)。
 次に外部入力パケット記憶部301は受信した外部入力パケット500の情報を外部入力パケット管理テーブル550に格納する(S102)。
 外部入力パケット保存処理(S102)が終了すると、外部入力パケット記憶部301は再び外部入力パケット受信(S101)の実行に移り、前述の処理を繰返す。
 一方入出力同期部310は、初めに再同期要求を行っている他の計算機ノード100の検出と当該計算機ノード100についての同期処理を行う。詳細は図25、図26と共に後述する(S111)。
 次に入出力同期部310は、処理状態記憶部311の計算機ノード処理状態テーブル700の処理状態識別子701に「INPUT」値を設定する。同時に、付加情報702には入力同期ステップ710としての初期値を設定し、Penalty703にも初期値を設定する。入力同期ステップ710の初期値には例えば「2」以上の値、一方Penalty703の初期値として例えば「0」値が与えられる(S112)。
 次に入出力同期部310は、処理対象となる外部入力パケット500の選定を開始できるか否かを判別する処理を行う。詳細は図12と共に後述する(S113)。
 次に入出力同期部310は、処理対象となる外部入力パケット500を選定する処理を行う。詳細は図13及び図14、図15、図16と共に後述する(S114)。
 次に入出力同期部310は、アプリケーション200を実行し、処理対象入力パケット選定処理S114で選定した外部入力パケット500の処理を行う。詳細は図17と共に後述する(S115)。
 次に入出力同期部310は、アプリケーション200による外部入力パケット500の処理結果を計算機ノード100間で共有し、端末2へ処理結果を出力する「リーダー」役と出力状態を監視する「モニター」役の計算機ノード100を決定し、「リーダ」役の計算機ノード100は端末2へ処理結果を出力する。詳細は図18及び図19、図20、図21、図22、図23、図24と共に後述する(S116)。
 実行結果決定処理S116が終了すると、入出力同期部310は再び再同期検知処理S111を再び実行じ、前述の処理を繰返す。
<処理対象入力パケット選定開始確認処理のフローチャート(図12)>
 図12は、入出力同期部310の処理対象入力パケット選定開始確認処理S113の一例を示すフローチャートである。
 入出力同期部310は処理対象入力パケット選定開始確認処理S113を開始すると、自計算機ノード100に、他の計算機ノード100から処理対象となる外部入力パケット500を選定するためのノード間通信パケット600が到着しているか否かをを確認する(S201及びS202)。ノード間通信パケット600が到着している場合(S202の結果が「Y」)、S114を実行する。ノード間通信パケット600が到着していない場合(S202の結果が「N」)、S203を実行する。
 S203及びS204では、入出力同期部310は自計算機ノード100に到着している外部入力パケット500の確認を、外部入力パケット管理テーブル550を参照することで行う。外部入力パケット500の存在が確認できる場合(S204の結果が「Y」)、S205で計算機ノード処理状態テーブル700の処理状態識別子701に「INPUT」を設定し、また入力同期ステップ710として付加情報702に値(例えば2)を設定した後、S114を実行する。
 外部入力パケット500の存在が確認できない場合(S204の結果が「N」)、処理対象となる外部入力パケット500が存在しないため、入出力同期部310は初期実行処理である再同期検知処理S111を実行する。
 処理対象入力パケット選定処理S114は、図13、図14、図15、図16に分割して説明する。処理対象入力パケット選定処理S114の開始部分を図13で説明し、S114に続いて実行される入力決定パケット送信処理S400を図14で説明し、S400に続いて実行される入力処理状態一致処理S500を図15で説明し、S500に続いて実行される入力多数決処理S600を図16で説明する。
<処理対象入力パケット選定処理のフローチャート(図13)>
 図13は入出力同期部310が実行する処理対象入力パケット選定処理S114の一例を示すフローチャートである。
 入出力同期部310は処理対象入力パケット選定処理S114を開始すると、初めに決定入力記憶部314の決定入力管理テーブル800に未処理の外部入力パケット500の情報が登録されているか否かを確認する(S311)。
 S311で外部入力パケット500の情報が保持されている場合(S311の結果が「N」)、当該外部入力パケット500の情報を優先的に処理するために、選定入力パケット処理S115を実行する。
 外部入力パケットの500の情報が決定入力管理テーブル800に保持されていない場合(S311の結果が「Y」)、決定入力記憶部314の決定入力管理テーブル800へ新たな外部入力パケット500の情報を取り込む処理に移るためにS301を起動する。
 S301では、入力同期部310は処理状態記憶部311内の計算機ノード処理状態テーブル700の処理状態識別子701から自計算機ノード100状態値「INPUT」(S709)を取得する。
 次に入力同期部310は処理状態記憶部311内の計算機ノード処理状態テーブル700の付加情報702から入力同期ステップ710の値を取得する(S302)。
 次に入力同期部310は入出力決定処理カウンタ315の値を取得する(S303)。
 次に入力同期部310はノード間通信パケット600に値を設定する。計算機ノード識別子601には自計算機ノード100の識別子を設定し、入出力決定処理カウンタ602にはS303で取得した入出力決定処理カウンタ315を設定し、計算機ノード処理状態603にはS301とS302で取得した計算機ノード処理状態テーブル700の計算機ノード状態情報を設定する(S304)。
 次に入力同期部310は外部入力パケット記憶部301の外部入力パケット管理テーブル550から入力同期ステップ710数分の外部入力パケット500の情報を取得する(S305)。
 S305で入力同期部310は、取得した外部入力パケット500の情報の中に決定済み入力管理テーブル810内に保持されている外部入力パケット500の情報と一致するものが存在しないことを確認する(S306およびS307)。
 S305で入力同期部310は、取得した外部入力パケット500の情報と同じ情報が決定済み入力管理テーブル810内に存在する場合(S307の結果が「N」)、外部入力パケット管理テーブル550から当該外部入力パケット500の情報を削除し(S308)、削除した分と同数の外部入力パケット5000の情報を外部入力パケット管理テーブル550から取り出す(S305)。
 S305で入力同期部310が取得した外部入力パケット500の情報と同じ情報が決定済み入力管理テーブル810内に存在しない場合(S307の結果が「Y」)、S309を実行する。
 S309で入力同期部310は、取得した外部入力パケット500の情報をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定する。以上でノード間通信パケット600の作成が完了すると、入力決定パケット送信処理S400を実行する。
<入力決定パケット送信処理のフローチャート(図14)>
 図14は、入出力同期部310の処理対象入力パケット選定処理S114の一部分である、入力決定パケット送信処理S400の一例を示すフローチャートである。
 入出力同期部310は入力決定パケット送信処理S400を開始すると、初めに処理状態記憶部311内の計算機ノード処理状態テーブル700の処理状態704の値を「BEGIN」に設定する(同時に自計算機ノード100状態をコピーしたノード間通信パケット600の計算機ノード処理状態603の値も更新する)(S401)。
 次に入出力同期部310は、作成したノード間通信パケット600をノード間通信I/F105を介して他の計算機ノード100にマルチキャストで送信する(S402)。
 次に入出力同期部310は、他の計算機ノード100からノード間通信パケット600が到着することを期待して、タイムアウト時間までWaitする(S403)。
 次に入出力同期部310は、他の計算機ノード100から送信されたノード間通信パケット600を受信する(S404)。
 次に入出力同期部310は、自計算機ノード100で作成したノード間通信パケット600情報と、S404で受信した他計算機ノード100のノード間通信パケット600情報を結合し、「受信結果リスト」を作成する。「受信結果リスト」はノード間通信パケット600と同様の列情報を持つ(S405)。各計算機ノードの結果を結合処理することで、一部の内部通信経路の障害により通信不可能な計算機ノードが存在した場合でも通信可能な経路より全計算機ノードの情報が共有可能となる。
 次に入出力同期部310は、S405で作成した受信結果リスト中の、計算機ノード識別子601、入出力決定処理カウンタ602、計算機ノード処理状態603の列情報を計算機ノード構成管理テーブル317の同じ列にコピーする。この時、入力同期時計算機ノード総数317Aを更新する。(S406)
 以上で入力決定パケット送信処理S400が完了すると、入力処理状態一致処理S500を実行する。
<入力処理状態一致処理のフローチャート(図15)>
 図15は、入出力同期部310の処理対象入力パケット選定処理S114の一部分である、入力処理状態一致処理S500の一例を示すフローチャートである。
 入力処理状態一致処理S500では、各計算機ノード100間で「入力同期」処理における状態を一致させる処理を行う。同期システム1は各計算機ノード100の演算結果を多数決判定することで端末2への出力情報の信頼性を確保するが、各計算機ノード100は独立した計算機であるため、各自が異なる計算機ノード状態で稼動している。演算結果の多数決判定を実施するためには、複数の各計算機ノード100の演算結果を必要とする。演算結果の多数決判定に参加する計算機ノード100の数を最大化するために、演算処理の入力段階で一度計算機ノード100間の同期を取る。入力処理状態一致処理S500の方針は、処理周期が明らかに異なる計算機ノード100は排除するが、僅かな計算機ノード処理状態の遅れはこれを修正することで演算処理、演算結果の多数決判定に参加する計算機ノード100数を最大化する。
 入出力同期部310は入力処理状態一致処理S500を開始すると、初めに入出力決定処理カウンタ315と、S404で他の計算機ノード100から受信したノード間通信パケット600の入出力決定処理カウンタ602を比較し、自他計算機ノード100の入出力決定処理カウンタ315の値が一致しているかを判定する。計算機ノード100は複数の他の計算機ノード100と送受信を行っている場合があるため、受信したノード間通信パケット600も複数個になることがある。S502での「比較」とは、入出力決定処理カウンタ315値と受信した一又は複数の入出力決定処理カウンタ602値に基づいて自他計算機ノード100を分類し、自計算機ノード100が多数派または少数派のいずれに分類されるかを決定する、「多数決判定」のことである(S501およびS502)。
 尚「多数決判定」において、分類の結果3つ以上のグループが生成された場合には、最も多くの計算機ノードが属するグループに自計算機ノードが分類された場合に、自計算機ノードが「多数派」に分類されたと判定してもよい。これは、以降の処理において実行される様々な「多数決判定」においても同様である。
 自計算機ノード100が少数派に分類される場合(S502の結果が「N」)、多数派の計算機ノード100と処理周期が異なるため、再同期処理S118を実行する。
 自計算機ノード100が多数派に分類される場合(S502の結果が「Y」)、処理周期が一致しているとして、継続するS504を実行する。
 次に自計算機ノード100が他の計算機ノード100と計算機ノード処理状態が一致しているかを比較する。ここでの「比較」も「多数決判定」のことである。計算機ノード処理状態の比較は、他計算機ノード100から受信したノード間通信パケット600の計算機ノード処理状態603(計算機ノード処理状態603の構成列は計算機ノード処理状態テーブル700と同じ)と自計算機ノード100の計算機ノード処理状態テーブル700の値(処理状態識別子701、処理状態704)を比較することで行う(S504およびS505)。
 S505で自計算機ノード100が少数派に分類される場合(S505の結果が「N」)、計算機ノード処理状態が多数派の計算機ノード処理状態と一致していないため、S506を実行する。S506では自計算機ノード100の計算機ノード処理状態を多数派の計算機ノード処理状態と合わせるために、計算機ノード処理状態テーブル700(処理状態識別子701、付加情報702、処理状態704)を多数派の計算機ノード処理状態値(計算機ノード処理状態603)で更新し、また計算機ノード処理状態テーブル700のPenalty703を設定(例えば「1」を設定)する。
 次に自計算機ノード処理状態テーブル700の処理状態704に値が、「BEGIN」の場合(S507の結果が「Y」)はS508を実行し、「END」の場合(S507の結果が「N」)は入力処理状態一致処理S500を終了して入力多数決処理S600を実行する(S506およびS507)。
 S505で自計算機ノード100が多数派に分類される場合(S505の結果が「Y」)、S508を実行する。
 S508では、自計算機ノード処理状態テーブル700の処理状態704を「END」に変更する。各計算機ノード100は、それぞれの計算機ノード100の入出力同期部310が処理候補として取得した外部入力パケット500の情報(受信結果リスト)の共有が完了した状態となる(S508)。
 次にノード間通信パケット600に設定した計算機ノード処理状態テーブル700値、及び「受信結果リスト」を、ノード間通信I/F105経由で他計算機ノード100にマルチキャストで送信する(S509)。
 次に他計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S510)。
 Wait終了で、入力処理状態一致処理S500を完了し、次の入力多数決処理S600を実行する。
<入力多数決処理のフローチャート(図16)>
 図16は入出力同期部310の処理対象入力パケット選定処理S114の一部分である、入力多数決処理S600の一例を示すフローチャートである。入力多数決処理S600ではアプリケーション200の処理対象となる外部入力パケット500を決定する。
 入出力同期部310は入力多数決処理S600を開始すると、初めに「受信結果リスト」を参照して、過半数の計算機ノード100に共通して取得されている外部入力パケット500(「多数決同意入力パケット」と称する)の有無を確認する(S601)。ここで過半数とは、現時点で計算機ノード構成管理テーブルに情報が登録されている計算機ノードの数の過半数であっても良いし、同期システム1に存在する計算機ノードの数の過半数であっても良い。
 多数決同意入力パケットが存在しない場合(S601の結果が「N」)、S602を実行して処理状態記憶部311の計算機ノード処理状態テーブル700の付加情報702(入力同期ステップ710)の値を「1」増加し、処理対象入力パケット選定処理S114の開始位置(S300)に実行を移す。
 多数決同意入力パケットが存在する場合(S601の結果が「Y」)、次処理S604を実行する。
 次にS601で選定された外部入力パケット500情報の順序の並び替えを行う。並び替えた外部入力パケット500を「決定入力パケット」と称する。並び替えは外部入力パケット500のシーケンス番号502の値を基に行う(S604)。
 次にS604で並び替えた外部入力パケット500の情報を決定入力記憶部314の決定入力管理テーブル800に保存し、決定入力総数801を更新する(S605)。
 次にS605で決定入力管理テーブル800に保存された各外部入力パケット500の情報について、過半数の計算機ノード100が図13のS305で取得した外部入力パケット500情報と同一の情報を自計算機ノード100が取得を行ったかどうかの多数決判定を行う(S606)。
 自計算機ノード100が同一の情報を取得していない場合(S606の結果が「N」)、S607で当該外部入力パケット500の情報を決定入力記憶部314の決定済み入力管理テーブル810に設定し、決定済み入力総数811を更新して、S609を起動する。当該外部入力パケット500の情報はアプリケーション200の処理対象であるが、自計算機ノード100が自ら外部ネットワーク3から取得した情報では無い為、後の演算周期で遅れて到着した当該外部入力パケット500を外部ネットワーク3から取得する可能性がある。同一外部入力パケット500に対する多重処理を回避するため、当該外部入力パケット500の情報を決定済み入力管理テーブル810に設定しておく。
 自計算機ノード100が同一の情報取得している場合(S606の結果が「Y」)、S606を起動して「決定入力パケット」のうち、自計算機ノード100が自ら外部ネットワーク3経由で取得した外部入力パケット500の情報を、外部入力パケット記憶部301の外部入力パケット管理テーブル550から削除し、続いてS609を起動する。
 S609は入出力決定処理カウンタ315を「1」増加する。
 次に決定入力パケットをノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定する(S610)。
 次にS610で作成したノード間通信パケット600を、ノード間通信I/F105経由で他の計算機ノード100にマルチキャストで送信する(S611)。
 次に他計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S612)。
 Wait終了で、入力多数決処理S600を完了し、次の選定入力パケット処理S115を実行する。
<選定入力パケット処理のフローチャート(図17)>
 図17は、入出力同期部310の処理対象入力パケット選定処理S114の一部分である、選定入力パケット処理S115の一例を示すフローチャートである。選定入力パケット処理S115ではアプリケーション200を起動し、「決定入力パケット」を処理する。
 入出力同期部310は選定入力パケット処理S115を開始すると、初めに決定入力記憶部314の決定入力管理テーブル800から外部入力パケット500情報を取り出す(S701)。
 S701で取得した外部入力パケット500の情報うち、コンテンツ507のアプリ識別子508から、処理を実行すべきアプリケーション200を決定し、パラメタ509を付加して該当アプリケーション200の開始処理(S702-A)を起動する。アプリケーション200の起動後、選定入力パケット処理S115は当該アプリケーション200の処理終了待ちとなる。(S702)
 S702で起動されたアプリケーション200は付加パラメタ509を取得して処理を開始し(S702-A)、アプリケーション200処理を実行し(S702-B)、終了時には処理結果を選定入力パケット処理S115に出力する(S702-C)。
 アプリケーション200処理終了後、選定入力パケット処理S115は処理結果を取得する(S703)。
 外部入力パケット500の情報に応じたアプリケーション200の起動と処理結果の取得で選定入力パケット処理S115を完了し、次の実行結果決定処理S116を実行する。
 実行結果決定処理S116は、本書では図18、図19、図20、図21、図22、図23、図24に分割して説明する。実行結果決定処理S116の開始部分を図18で説明し、S116に続いて実行される出力処理状態一致処理S900を図19で説明し、S900に続いて実行される出力多数決処理S1000を図20で説明し、S1000に続いて実行されるリーダー選出処理S1100を図21で説明し、S1100に続いて実行されるリーダー処理状態一致化処理S1200を図22で説明し、S1200に続いて実行されるボーター処理S1300を図23で説明し、S1300に続いて実行される出力異常処理S1400を図24で説明する。
<実行結果決定処理のフローチャート(図18)>
 図18は入出力同期部310の実行結果決定処理S116の一例を示すフローチャートである。
 入出力同期部310は実行結果決定処理S116を開始すると、初めに処理状態記憶部311の計算機ノード処理状態テーブル700の処理状態識別子701を「OUTPUT」に、付加情報702を「OUTPUT」に、処理状態704を「BEGIN」に更新する(S801)。
 次に入出力同期部310は、入出力決定処理カウンタ315の値を確認する(S802)。
 次に入出力同期部310は、S703で取得したアプリケーション200の処理結果を、ノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定する。この時、S801で更新した計算機ノード処理状態テーブル700値を計算機ノード処理状態603に設定し、S802で取得した入出力決定処理カウンタ315値を入出力決定処理カウンタ602にも設定する。(S803)
 次に入出力同期部310は、S803で作成したノード間通信パケット600をノード間通信I/F105経由で他の計算機ノード100にマルチキャストで送信することで、アプリケーション200の処理結果を他の計算機ノード100との間で共有する(S804)。
 次に入出力同期部310は、他の計算機ノード100からのノード間通信パケット600が到着を待つために、タイムアウトまでWaitする(S805)。
 S806で入出力同期部310は、他の計算機ノード100から到着したノード間通信パケット600を取得し、S807で自他計算機ノード100のノード間通信パケット600を結合して「受信結果リスト」を作成する。
 更に入出力同期部310は、受信結果リスト(構成列はノード間通信パケット600に同じ)に登録されている計算機ノード識別子601、入出力決定処理カウンタ602、計算機ノード処理状態603の列情報を計算機ノード構成管理テーブル317に設定する。ただし入力同期時計算機ノード総数317Aの値は更新しない。(S808)
 計算機ノード100間でのアプリケーション200の処理結果の交換を行ったところで、実行結果決定処理S116を完了し、次の出力処理状態一致処理S900を実行する。
<出力処理状態一致処理のフローチャート(図19)>
 図19は入出力同期部310の実行結果決定処理S116の一部分である、出力処理状態一致処理S900の一例を示すフローチャートである。
 出力処理状態一致処理S900では、各計算機ノード100間で「出力同期」処理における状態を一致させる処理を行う。同期システム1は各計算機ノード100の演算結果を多数決判定することで端末2への出力情報の信頼性を確保するが、各計算機ノード100は独立した計算機であるため、各自が異なる計算機ノード状態で稼動している。出力処理状態一致処理S900の方針は、処理周期が明らかに異なる計算機ノード100は排除するが、僅かな計算機ノード処理状態の遅れはこれを修正することで演算結果の多数決判定に参加する計算機ノード100数を最大化する。
 入出力同期部310は出力処理状態一致処理S900を開始すると、初めに入出力決定処理カウンタ315と、S806で他の計算機ノード100から受信したノード間通信パケット600の入出力決定処理カウンタ602を比較し、自他計算機ノード100の入出力決定処理カウンタ315の値が一致しているかを判定する。計算機ノード100は複数の他の計算機ノード100とノード間通信パケット600を送受信する場合があるため、受信したノード間通信パケット600も複数個になることがある。S901での「比較」とは、入出力決定処理カウンタ315値と複数の入出力決定処理カウンタ602値とに基づき、自他計算機ノード100を分類し、自計算機ノード100が多数派または少数派のいずれに分類されるかを決定する、「多数決判定」のことである(S901およびS902)。
 自計算機ノード100が少数派に分類される場合(S902の結果が「N」)、多数派の計算機ノード100と処理周期が異なるため、入出力同期部310は再同期処理S118を実行する。
 自計算機ノード100が多数派に分類される場合(S902の結果が「Y」)、処理周期が一致しているとして、入出力同期部310は継続するS904を実行する。
 次に自計算機ノード100が他の計算機ノード100と計算機ノード処理状態が一致しているかを比較する。ここでの「比較」も「多数決判定」のことである。計算機ノード処理状態の比較は、他計算機ノード100から受信したノード間通信パケット600の計算機ノード処理状態603(構成列は計算機ノード処理状態テーブル700と同じ)と自計算機ノード100の計算機ノード処理状態テーブル700の値(処理状態識別子701、付加情報702、処理状態704)を比較することで行う。(S904およびS905)
S905で自計算機ノード100が少数派に分類される場合(S905の結果が「N」)、計算機ノード処理状態が多数派の計算機ノード処理状態と一致していないため、入出力同期部310はS906を実行する。
 S906では、他計算機ノード100から受信したノード間通信パケット600の計算機ノード処理状態603(構成列は計算機ノード処理状態テーブル700と同じ)の付加情報702を参照し、多数派の計算機ノード100の計算機ノード処理状態が「LEADER」にあるかを判別する。多数派の計算機ノード処理状態が「LEADER」にある場合(S906の結果が「Y」)、「出力同期」中の一つ先の処理で行われる、端末2へ処理結果を出力する候補の計算機ノード100が決定済みであるため、自計算機ノード100は監視役として動作するために入出力同期部310はボーター処理S1300を起動する。多数派の計算機ノード処理状態が「LEADER」にない場合(S906の結果が「N」)、入出力同期部310はS907を起動する。また、多数派の計算機ノード100の付加情報702の値の如何に関わらず、入出力同期部310は自計算機ノード100の計算機ノード処理状態テーブル700のPenalty703を設定(例えば「1」を設定)する。
 S906の判定において、多数派の計算機ノード100の計算機ノード処理状態が「VOTER」であるケースもあり得る。しかしS906においては「LEADER」のみを検出対照とする。多数派の計算機ノード100の計算機ノード処理状態が「VOTER」である場合、これら多数派の計算機ノード100は自計算機ノード処理状態「OUTPUT」よりも「出力同期」処理において二つ先の、端末2に結果出力を行う処理状態にある。多数派計算機ノード100の処理状態が「VOTER」であることを確認した後に、自計算機ノード100の処理状態を「VOTER」に補正して出力監視役である「モニター」に切替えたとしても、端末2への結果出力を見逃す可能性があることから、S906の判定は「LEADER」のみを検出対象とする。つまり、「出力同期」の処理段階における「OUTPUT」から「VOTER」への二段階の同期ずれの補正は行わない。
 S907とS908では多数派の計算機ノード処理状態の比較を行い、付加情報702が「OUTPUT」あり(S907の結果が「Y」)、更に処理状態704が「END」である場合(S908の結果が「Y」)は計算機ノード100間でアプリケーション200の処理結果を一致化させる処理が完了しているため、入出力同期部310は出力多数決処理S1000を起動して出力処理状態一致処理S900を完了する。
 一方付加情報702が「OUTPUT」でない場合(S907の結果が「N」)、または付加情報702は「OUTPUT」ある(S907の結果が「Y」)が処理状態704が「END」でない場合(S908の結果が「N」)は、入出力同期部310はタイムアウトまでWaitした後(S909)、S806の他計算機ノード100からのアプリケーション200処理結果受信処理から、出力処理状態一致処理S900を再実行する。
 一方、S905で自計算機ノード100が多数派に分類される場合(S905の結果が「Y」)、入出力同期部310は次のS911を起動する。
 S911では自計算機ノード処理状態テーブル700の処理状態704を「END」に変更する。各計算機ノード100は、それぞれの計算機ノード100のアプリケーション200の処理結果の共有が完了した状態となる。
 次にノード間通信パケット600に設定した計算機ノード処理状態テーブル700値をノード間通信I/F105経由で他計算機ノード100にマルチキャストで送信する(S912)。
 次に他計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S913)。
 Wait終了で、出力処理状態一致処理S900を完了し、次の出力多数決処理S1000を実行する。
<出力多数決処理のフローチャート(図20)>
 図20は入出力同期部310の実行結果決定処理S116の一部分である、出力多数決処理S1000の一例を示すフローチャートである。出力多数決処理S1000では、各計算機ノード100が算出したアプリケーション200の処理結果の多数決判定を行う。
 入出力同期部310は出力多数決処理S1000を開始すると、初めに「受信結果リスト」中の各計算機ノード100が算出したアプリケーション200の処理結果の中に、過半数の計算機ノード100に共通して存在する処理結果(「多数決同意出力」と称する)が存在するか、その有無を判定する(S1001)。ここで過半数とは、計算機ノード構成テーブル317に現時点で登録されている計算機ノードの数の過半数であっても良いし、同期システム1に存在する計算機ノードの数の過半数であっても良い。
 多数決同意出力が存在しない場合(S1001の結果が「N」)、アプリケーション200の処理結果の多数決判定が不能ということになり、入出力同期部310はS1002を起動する。
 S1002は「受信結果リスト」中の計算機ノード100総数と、計算機ノード構成管理テーブル317の入力同期時計算機ノード総数317Aを比較する。総数が一致する場合(S1002の結果が「Y」)、各計算機ノード100が算出したアプリケーション200の処理結果に二つとして同じものが無かったという事になり、入出力同期部310はS1003を起動して基盤ソフトウェア300の処理を終了させる。総数が一致しない場合(S1002の結果が「N」)、まだアプリケーション200の処理結果を受信していない計算機ノード100が存在するため、入出力同期部310はS806の他計算機ノード100からのアプリケーション200処理結果の受信処理から、出力処理状態一致処理S900を再開する。
 一方、多数決同意出力が存在する場合(S1001の結果が「Y」)、入出力同期部310はS1005を起動して自計算機ノード100のアプリケーション200の処理結果が多数派に属するかを判定する。自計算機ノード100が多数派に属する場合(S1005の結果が「Y」)、入出力同期部310は出力多数決処理S1000を完了し、次のリーダー選出処理S1100を実行する。自計算機ノード100が少数派に属する場合(S1005の結果が「N」)、自計算機ノード100は多数派の計算機ノード100とは異なる処理結果を導いたという事になり、端末2への結果出力を行う「リーダー」にも結果出力の監視を行う「モニター」にもなり得ないため入出力同期部310は今周期の処理からは外れ、次周期に向けて再同期処理S118を起動する。
<リーダー選出処理のフローチャート(図21)>
 図21は入出力同期部310の実行結果決定処理S116の一部分である、リーダー選出処理S1100の一例を示すフローチャートである。リーダー選出処理S1100は、端末2への結果出力を行う「リーダー」候補となる計算機ノード100の選出を行う。
 入出力同期部310はリーダー選出処理S1100を開始すると、初めに処理状態記憶部311の計算機ノード処理状態テーブル700の付加情報702を「LEADER」に、処理状態704を「BEGIN」に変更する(S1101)。
 次に入出力同期部310は、受信結果リストより「リーダー」候補となる計算機ノード100を選出し、順位を決定し、「リーダー選出結果」を作成する。選出及び順位の決定方法は、一例として、計算機ノード処理状態テーブル700のPenalty703の値が0でありノード間通信パケット600の計算機ノード識別子601が最も大きな値を持つ順に「リーダー」候補を決定する方法があげられる。(S1102)
 次に入出力同期部310は、入出力決定処理カウンタ315を取得しノード間通信パケット600の入出力決定処理カウンタ602に設定する(S1103)。またS1102の「リーダー選出結果」をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定する(S1104)。
 次に入出力同期部310は、S1104で作成したノード間通信パケット600をノード間通信I/F105経由で他の計算機ノード100にマルチキャストで送信する(S1105)。
 次に入出力同期部310は、他計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S1106)。
 S1107で他計算機ノード100からのノード間通信パケット600を取得すると、入出力同期部310はS1108で自他計算機ノード100のノード間通信パケット600を結合し、「受信結果リスト」を作成する。「受信結果リスト」は自他計算機ノード100が決定した「リーダー選出結果」を含む。
 S1109で入出力同期部310は、計算機ノード構成管理テーブル317に「受信結果リスト」内容を反映して、リーダー選出処理S1100を完了し、次のリーダー処理状態一致化処理S1200を実行する。
<リーダー処理状態一致化処理のフローチャート(図22)>
 図22は入出力同期部310の実行結果決定処理S116の一部分である、リーダー処理状態一致化処理S1200の一例を示すフローチャートである。リーダー処理状態一致化処理S1200は、計算機ノード100間でリーダー選出処理の完了状態を一致させる処理を行う。
 入出力同期部310はリーダー処理状態一致化処理S1200を開始すると、初めに入出力決定処理カウンタ315と、S1107で他の計算機ノード100から受信したノード間通信パケット600の入出力決定処理カウンタ602を比較し、自他計算機ノード100の入出力決定処理カウンタ315の値が一致しているかを判定する。受信したノード間通信パケット600は複数個になることがあるため、S1202は「多数決判定」を行う(S1201およびS1202)。
 自計算機ノード100が少数派に分類される場合(S1202の結果が「N」)、多数派の計算機ノード100と処理周期が異なるため、入出力同期部310は再同期処理S118を実行する。
 自計算機ノード100が多数派に分類される場合(S1202の結果が「Y」)、処理周期が一致しているとして、入出力同期部310は継続するS1204を実行する。
 次に入出力同期部310は入出力同期部310は自計算機ノード100が他の計算機ノード100と計算機ノード処理状態が一致しているかを比較する。ここでの「比較」も「多数決判定」のことである。計算機ノード処理状態の比較は、他計算機ノード100から受信したノード間通信パケット600の計算機ノード処理状態603(構成列は計算機ノード処理状態テーブル700と同じ)と自計算機ノード100の計算機ノード処理状態テーブル700の値(処理状態識別子701、付加情報702、処理状態704)を比較することで行う(S1204およびS1205)。
 自計算機ノード100が少数派に分類される場合(S1205の結果が「N」)、他の計算機ノード100と共にアプリケーション200の処理結果を端末2に出力し得る状態に遷移出来ないため、入出力同期部310は処理周期を離れて再同期処理S118を実行する。
 自計算機ノード100が多数派に分類される場合(S1205の結果が「Y」)、入出力同期部310は次のS1206を実行する。
 次に入出力同期部310は自計算機ノード処理状態テーブル700の処理状態704を「END」に変更する。各計算機ノード100は、それぞれの計算機ノード100の入出力同期部310が「リーダー選出結果」の共有が完了した状態となる(S1206)。
 次に入出力同期部310は、計算機ノード処理状態テーブル700値及び「受信結果リスト」を設定したノード間通信パケット600を、ノード間通信I/F105経由で他計算機ノード100にマルチキャストで送信する(S1207)。
 次に入出力同期部310は他計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S1208)。
 Wait終了で、入出力同期部310はリーダー処理状態一致化処理S1200を完了し、次のボーター処理S1300を実行する。
<ボーター処理のフローチャート(図23)>
 図23は入出力同期部310の実行結果決定処理S116の一部分である、ボーター処理S1300の一例を示すフローチャートである。
 ボーター処理S1300では、リーダー選出処理S1100で決定した「リーダー選出結果」に従い「リーダー」役と「モニター」役の計算機ノード100を決定する。「リーダー」役の計算機ノード100は出力多数決決定処理S1000で得た「多数決同意出力」を端末2に出力し、出力状態を「モニター」役の計算機ノード100が監視する。出力状態に異常が認められた場合、「モニター」役の計算機ノード100の中から新たな「リーダー」計算機ノード100を決定し、「多数決同意出力」の端末2への出力を再実行する(出力異常処理S1400)。出力異常処理S1400の詳細は図24と共に後述する。
 入出力同期部310はボーター処理S1300を開始すると、初めにS1207で送受信した「リーダー選出結果」の「受信結果リスト」内容で、決定出力管理テーブル321の構成列(出力同期時計算機ノード総数321A、順位321B、計算機ノード識別子321C、入出力決定処理カウンタ321D、計算機ノード処理状態321E)及び出力同期時計算機ノード総数321Aの値を更新する(S1301)。
 次に入出力同期部310は、決定出力管理テーブル321の順位321B及び計算機ノード識別子321Cの値より、自計算機ノード100が「リーダー」であるかを判定する(S1302)。
 自計算機ノード100が「リーダー」であると判定される場合(S1302の結果が「Y」)、「リーダー」として動作するために、入出力同期部310はS1304を実行する。自計算機ノード100が「リーダー」であると判定されない場合(S1302の結果が「N」)、「モニター」として動作するために、入出力同期部310はS1303を実行する。
 「リーダー」計算機ノード100は、処理状態記憶部311の計算機ノード処理状態テーブル700の付加情報702を「VOTER」に更新し、また処理状態704を「LEADER」に更新することで、「リーダー」動作を開始する(S1304)。そして入出力決定処理カウンタ315の値を「1」増加させる(S1305)。
 次にノード間通信パケット600の入出力決定処理カウンタ602にS1305で更新した入出力決定処理カウンタ315値を設定し、計算機ノード処理状態603にはS1304で更新した計算機ノード処理状態テーブル700値を設定する(S1306)。
 次にノード間通信パケット600をノード間通信I/F105経由で他の計算機ノード100にマルチキャストで送信し、自計算機ノード100が「リーダー」であることを通知する(S1307)。そして他の計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S1308)。
 Wait終了後、アプリケーション200の処理結果を外部通信I/F104経由で端末2にマルチキャストで送信する。マルチキャストによる送信であるため、アプリケーション200の処理結果は、「モニター」計算機ノード100の外部通信I/F104にも到達する(S1309)。
 「リーダー」計算機ノード100は、端末2に送信することで「リーダー」動作を終了し、以上でボーター処理S1300を完了して次の再同期検知処理S111を実行する。
 「モニター」計算機ノード100は、処理状態記憶部311の計算機ノード処理状態テーブル700の付加情報702を「VOTER」に更新して、また処理状態704を「MONITOR」に更新することで、「モニター」動作を開始する(S1311)。そして入出力決定処理カウンタ315の値を「1」増加させる(S1312)。
 次にノード間通信パケット600の入出力決定処理カウンタ602にS1312で更新した入出力決定処理カウンタ315値を設定し、計算機ノード処理状態603にはS1311で更新した計算機ノード処理状態テーブル700値を設定する(S1313)。
 次にノード間通信パケット600をノード間通信I/F105経由で他の計算機ノード100にマルチキャストで送信し、自計算機ノード100が「モニター」であることを通知する(S1314)。そして他の計算機ノード100からのノード間通信パケット600の到着を待つために、タイムアウトまでWaitする(S1315)。
 Wait終了後、「リーダー」計算機ノード100によるアプリケーション200の処理結果送信状態を、「モニター」計算機ノード100の外部通信I/F104経由で監視し、異常が発生していないかを判別する(S1316およびS1317)。
 「リーダー」計算機ノード100の処理結果送信に異常が確認できる場合(S1317の結果が「Y」)、出力異常処理S1400を起動し、端末2へのアプリケーション200の処理結果送信をリトライする。
 「リーダー」計算機ノード100の処理結果送信に異常が確認できない場合(S1317の結果が「N」)、「モニター」動作を終了し、ボーター処理S1300を完了して次の再同期検知処理S111を実行する。
<出力異常処理のフローチャート(図24)>
 図24は入出力同期部310の実行結果決定処理S116の一部分である、出力異常処理S1400の一例を示すフローチャートである。出力異常処理S1400は、ボーター処理S1300のS1316で端末2へのアプリケーション200の処理結果送信に異常が認められた場合に起動される。
 出力異常処理S1400はボーター処理S1300のリトライ処理であるため、ほぼボーター処理S1300と同様の処理を実行する。しかしリトライ処理であるため、「リーダー」計算機ノード100、「モニター」計算機ノード100共に入出力決定処理カウンタ315の値は変更しない。
 入出力同期部310は出力異常処理S1400を開始すると、初めに決定出力管理テーブル321から「リーダー」計算機ノード100(ボーター処理S1300で「リーダー」と判定された計算機ノード100)の情報を削除する(S1401)。
 次に入出力同期部310は、更新された決定出力管理テーブル321の順位321B及び計算機ノード識別子321Cの値より、自計算機ノード100が次の「リーダー」であるかを判定する(S1402およびS1403)。
 自計算機ノード100が「リーダー」であると判定される場合(S1403の結果が「Y」)、「リーダー」として動作するために、入出力同期部310はS1405を実行する。自計算機ノード100が「リーダー」であると判定されない場合(S1403の結果が「N」)、「モニター」として動作するために、入出力同期部310はS1404を実行する。
 「リーダー」計算機ノード100としての動作(S1405からS1410までの処理、及び再同期検知処理S111の起動)は、ボーター処理S1300の「リーダー」動作(S1304からS1309までの処理、及び再同期検知処理S111の起動)と基本的に同様であるが、S1406とS1305のみ異なる。出力異常処理S1400では入出力決定処理カウンタ315値は変更しない(S1406の点線枠は実行しないことを意味する)。
 「モニター」計算機ノード100としての動作(S1404以降の処理)も、ボーター処理S1300の「モニター」動作(S1303からS1317までの処理、及び出力異常処理S1400または再同期検知処理S111の起動)と基本的に同様であるが、S1411とS1312のみ異なる。出力異常処理S1400では入出力決定処理カウンタ315値は変更しない(S1411の点線枠は実行しないことを意味する)。
<再同期検知処理および再同期処理のフローチャート(図25)>
 図25は再同期検知処理S111および再同期処理S118の一例を示すフローチャートである。再同期検知処理S111は同期システムとして協調動作している系の中に居る計算機ノード100の入出力同期部310が、協調動作の系への参入を要求する計算機ノード100を検出し、参入を受け入れる処理を行う。再同期処理S118は同期システムとして協調動作している系の外に居る計算機ノード100の入出力同期部310が、協調動作の系への参入を要求し、参入を果たすまでの処理を行う。協調動作の系への参入を要求することを「再同期要求」と称する。
 再同期検知処理S111と再同期処理S118はそれぞれがREJOIN-REQのノード間通信パケット(詳細は図26に示す)、REJOIN-ACKのノード間通信パケット(詳細は図26に示す)、JOINEDのノード間通信パケット(詳細は図26に示す)を送受信することで、歩調を合わせて処理を進める。
 図26に一例として示す「REJOIN-REQのノード間通信パケット」は、再同期要求を行う計算機ノード100が送信するノード間通信パケット600の例である。計算機ノード処理状態603である計算機ノード処理状態テーブル700の処理状態識別子701と処理状態704には「REJOIN-REQ」が設定される。入出力決定処理カウンタ602は初期値(例えば「0」)のままで、入出力決定処理カウンタ315値は設定されない。
 図26に一例として示す「REJOIN-ACKのノード間通信パケット」は再同期要求を受領した計算機ノード100が要求側に返信するノード間通信パケット600の例である。計算機ノード処理状態603である計算機ノード処理状態テーブル700の処理状態識別子701と処理状態704には「REJOIN-ACK」が設定される。また再同期要求を受領した計算機ノード100が保持する入出力決定処理カウンタ315値が入出力決定処理カウンタ602に設定され、決定入力管理テーブル800情報と外部入力パケット記憶部301の外部入力パケット管理テーブル550情報が計算機ノード処理状態個別詳細情報604に設定される。
 図26に一例として示す「JOINEDのノード間通信パケット」は「REJOIN-ACKのノード間通信パケット」を受取った計算機ノード100が同期システムとして協調動作している系への参入を果たした事を、他の計算機ノード100に通知するために送信するノード間通信パケット600の例である。計算機ノード処理状態603である計算機ノード処理状態テーブル700の処理状態識別子701と処理状態704には「JOINED」が設定される。
 図25に戻って、再同期検知処理S111の詳細を示す。
 入出力同期部310は再同期検知処理S111を開始すると、初めに決定出力管理テーブル321の出力同期時計算機ノード総数321Aで、計算機ノード構成管理テーブル317の入力同期時計算機ノード総数317Aを更新する(S1111)。
 次に入出力同期部310は、処理状態記憶部311の計算機ノード処理状態テーブル700の処理状態識別子701を「REJOIN-WAIT」に設定し、処理状態704を「REJOIN-WAIT」に設定することで、再同期要求を受付ける処理状態になる(S1112)。
 次に入出力同期部310は、他の計算機ノード100からの再同期要求である、再同期処理S118のS1183により送信された「REJOIN-REQのノード間通信パケット」の到着を期待して、タイムアウトまでWaitする(S1113)。
 再同期要求が検出されなかった場合(S1114の結果が「N」)、再同期検知処理S111を終了して入力同期処理を開始するために入出力同期部310はS112を起動する。再同期要求を検出した場合(S1114の結果が「Y」)、再同期要求に応答するために入出力同期部310はS1115を起動する。
 S1115では、入出力同期部310は、処理状態記憶部311の計算機ノード処理状態テーブル700の処理状態識別子701を「REJOIN-ACK」に設定し、処理状態704を「REJOIN-ACK」に設定する。計算機ノード100は再同期要求に応答する計算機ノード処理状態に遷移する。
 次に入出力同期部310は、「REJOIN-ACKのノード間通信パケット」を作成するために、入出力決定処理カウンタ315値をノード間通信パケット600の入出力決定処理カウンタ602に設定し、計算機ノード処理状態テーブル700情報を計算機ノード処理状態603に設定する(S1116)。また決定入力管理テーブル800情報と外部入力パケット記憶部301の外部入力パケット管理テーブル550情報を計算機ノード処理状態個別詳細情報604に設定する(S1117)。
 作成した「REJOIN-ACKのノード間通信パケット」はノード間通信I/F105経由でマルチキャストで送信される。当該「REJOIN-ACKのノード間通信パケット」は、再同期要求を行った計算機ノード100で処理中の、再同期処理S118のS1185で受信されることを期待する。(S1118)
 次に入出力同期部310は、再同期要求を行った計算機ノード100の再同期処理S118のS11810から「JOINEDのノード間通信パケット」が到着することを期待して、タイムアウトまでWaitする(S1119)。
 「JOINEDのノード間通信パケット」が受信されなかった場合(S1120の結果が「N」)、再同期要求を行った計算機ノード100の再同期処理S118は失敗したと判断して、入出力同期部310は再同期検知処理S111を終了して入力同期処理を開始するためにS112を起動する。
 「JOINEDのノード間通信パケット」が受信された場合(S1120の結果が「Y」)、入出力同期部310はS1121で計算機ノード構成管理テーブル317の入力同期時計算機ノード総数317Aを更新した後、再同期検知処理S111を終了して入力同期処理を開始するためにS112を起動する。
 再同期処理S118の詳細を示す。
 再同期要求を行う計算機ノード100の入出力同期部310は、初めに処理状態記憶部311の計算機ノード処理状態テーブル700の処理状態識別子701に「REJOIN-REQ」を設定し、処理状態704に「REJOIN-REQ」を設定設定することで、再同期要求を行う処理状態になる(S1181)。
 次に入出力同期部310は、「REJOIN-REQのノード間通信パケット」を作成するために、ノード間通信パケット600の計算機ノード処理状態603に計算機ノード処理状態テーブル700情報を設定する(S1182)。
 作成した「REJOIN-REQのノード間通信パケット」はノード間通信I/F105経由でマルチキャストで送信される。当該「REJOIN-REQのノード間通信パケット」は協調動作している系の中に居る計算機ノード100が実行している再同期検知処理S111のS1114で受信されることを期待する。(S1183)
 次に再同期要求に対する「REJOIN-ACKのノード間通信パケット」が返信されてくることを期待して、入出力同期部310はタイムアウトまでWaitする(S1184)。
 「REJOIN-ACKのノード間通信パケット」が受信されない場合(S1185の結果が「N」)、再同期要求をリトライするため、入出力同期部310はS1181を起動する。「REJOIN-ACKのノード間通信パケット」が受信される場合(S1185の結果が「Y」)、入出力同期部310はS1186を起動する。
 S1186では入出力同期部310は、「REJOIN-ACKのノード間通信パケット」の入出力決定処理カウンタ602値を入出力決定処理カウンタ315に設定し、他計算機ノード100と処理周期を一致させる(S1186)。
 次に入出力同期部310は、「REJOIN-ACKのノード間通信パケット」の計算機ノード処理状態個別詳細情報604に設定された決定入力管理テーブル800情報を取得して自計算機ノード100の決定入力記憶部314の決定入力管理テーブル800に設定し、同じく外部入力パケット管理テーブル550情報を取得して外部入力パケット記憶部301の外部入力パケット管理テーブル550に設定する(S1187)。
 次に入出力同期部310は、処理状態記憶部311の計算機ノード処理状態テーブル700の処理状態識別子701を「JOINED」に更新し、処理状態704を「JOINED」に更新して、自計算機ノード100は再同期が完了した計算機ノード処理状態に遷移する(S1188)。
 次に入出力同期部310は、「JOINEDのノード間通信パケット」を作成するために、ノード間通信パケット600の計算機ノード処理状態603に計算機ノード処理状態テーブル700情報を設定する(S1189)。
 作成した「JOINEDのノード間通信パケット」はノード間通信I/F105経由でマルチキャストで送信される。当該「JOINEDのノード間通信パケット」は「REJOIN-ACKのノード間通信パケット」を返信した計算機ノード100が実行している再同期検知処理S111のS1120で受信されることを期待する。(S1190)
 「JOINEDのノード間通信パケット」を送信した後、入出力同期部310は再同期処理S118を完了して入力同期処理を開始するためにS112を起動する。
<ケースを想定した実施態様>
 以降の説明では、処理対象入力パケット選定処理S114(入力多数決処理S600までの一連の処理)と実行結果決定処理S116(および出力異常処理S1400までの一連の処理)について、想定されるケースを当てはめることで、これまでの説明を補足する。具体的には、計算機ノード処理状態の経過に伴う計算機ノード100の内部に保持される各テーブル状態や計算機ノード100間で送受信されるノード間通信パケット600情報内容の変化を示す。
 補足説明における同期システム1は、三台の計算機ノード100A、計算機ノード100B、計算機ノード100Cから構成されるものとするがこれは一例に過ぎない。
 処理対象入力パケット選定処理S114(入力多数決処理S600までの一連の処理)については、二つのケースを当てはめて補足説明する。実行結果決定処理S116(出力異常処理S1400までの一連の処理)については、一つケースを当てはめて補足説明する。
 処理対象入力パケット選定処理S114の一つ目の補足説明では、計算機ノード100Bにだけ端末2からの外部入力パケット500の到達が遅延(「外部遅延」と称する)したケース(以下ケースAと称す)を想定し、この結果一回目の外部入力パケット500の情報の取り出しでは「多数決同意入力パケット」が決定できず、二回目の外部入力パケット500の情報の取り出しで「多数決同意入力パケット」が決定できて、以降の処理が実行される例を説明する。
 処理対象入力パケット選定処理S114の二つ目の補足説明では、計算機ノード100Bへの外部遅延の発生に加えて、計算機ノード100Cの処理開始契機が他の計算機ノード100A、100Bより遅れる(「内部遅延」と称する)ケース(以下ケースBと称す)を想定し、この結果一回目の外部入力パケット500の情報の取り出しにおける「多数決同意入力パケット」の決定処理には計算機ノード100Cは参加せず、なおかつ計算機ノード100A、100Bの間でも「多数決同意入力パケット」の決定が出来ず、二回目の外部入力パケット500の情報の取り出しで「多数決同意入力パケット」が決定出来て、以降の処理が実行される例を説明する。
 実行結果決定処理S116の補足説では、計算機ノード100Cの処理開始契機が遅れるケース(以下ケースCと称す)を想定し、この結果アプリケーション200の実行結果を計算機ノード100A、100B、100Cの間で共有させる処理(計算機ノード処理状態が「OUTPUT」)に計算機ノード100Cは途中参加することとなり、S116~S1400の処理が実行される例を説明する。
<外部遅延発生時の処理対象入力パケット選定処理(ケースA)>
 ケースAにおける補足説明は図27、図28、図29、図30、図31、図32、図33を用いて行う。
 図27は各計算機ノード100A、100B、100Cの処理シーケンスの一例を示す。時間T1は処理対象入力パケット選定処理のS300からS602に対応し、時間T2は次の処理周期におけるS300からS509に対応し、時間T3は時間T2の処理結果を受けて実行されるS601からS611に対応する。また送信901はS402に対応し、TO902はS403に対応し、リスト作成903はS404からS508に対応し、TO904はS509に対応し、送信905はS402に対応し、TO906はS403に対応し、リスト作成907はS404からS508に対応し、TO908はS509に対応し、多数決定909はS601に対応し、状態更新910はS604からS609に対応し、送信911はS611に対応する。
 図28は各計算機ノードの外部入力パケット管理テーブル、計算機ノード処理状態テーブル、入出力決定処理カウンタの時間別の内容を示す。列912は計算機ノード100Aの状態であり、構成列のSEQ915は外部入力パケット管理テーブル550のシーケンス番号502を示し、WS916は計算機ノード処理状態テーブル700の入力同期ステップ710を示し、ST917は計算機ノード処理状態テーブル700の処理状態704を示し、CNT918は入出力決定処理カウンタ315を示す。列913は計算機ノード100Bの状態を示し、列914は計算機ノード100Cの状態を示し、構成列は計算機ノードAの情報と同様である。行920は時間T1における状態を示し、行921は時間T2における状態を示し、行922は時間T3における状態を示す。
 図29は図27に示す「送信」に対する各計算機ノードのノード間通信パケット600の時間別内容を示す。行940は時間T1の送信901に対するノード間通信パケット600内容を示し、構成行の行943は計算機ノード100Aの送信内容を示し、行944は計算機ノード100Bの送信内容を示し、行945は計算機ノード100Cの送信内容を示す。行941は時間T2の送信905に対するノード間通信パケット600内容を示し、行942は時間T3の送信911に対するノード間通信パケット600内容を示し、構成行は行940と同様である。
 図30は図27に示す「リスト作成」に対する各計算機ノードのノード間通信パケット600の時間別内容を示す。行960は時間T1のリスト作成903に対するノード間通信パケット600内容を示し、これは「送信」処理にて送受信したノード間通信パケット600を結合した「受信結果リスト」を表す。構成行の行962は計算機ノード100Aの「送信」内容を示し、行963は計算機ノード100Bの「送信」内容を示し、行964は計算機ノード100Cの「送信」内容を示す。行961は時間T2のリスト作成907に対するノード間通信パケット600内容を示し、構成行は行960と同様である。
 図31は任意の計算機ノードの計算機ノード構成管理テーブル317の時間別内容を示す。時間別内容は、計算機ノード100A、100B、100Cにおいて同一である。行980は時間T1における計算機ノード構成管理テーブル317の計算機ノード識別子601列、入出力決定処理カウンタ602列、計算機ノード処理状態603列の状態を示す。行981は時間T2における計算機ノード構成管理テーブル317の保持情報を示し、行982はT3における計算機ノード構成管理テーブル317の保持情報を示す。
 図32は各計算機ノードの決定入力管理テーブル800の内容を示す。図33は計算機ノード100Bの決定済み入力管理テーブル810の内容を示す。
 次に図27の処理シーケンスを追って、各計算機ノード100A、100B、100Cの処理状態変化を説明する。
 時間T1において、各計算機ノード100A、100B、100Cは図28の行920の状態で処理を開始する。計算機ノード100Aは、WS924として「2」、ST925として「BEGIN」、CNT926として「C010」の値を保持する。計算機ノード100B、100Cにおいても同値である。しかし外部入力パケット管理テーブル550のに保存している外部入力パケットの情報が異なる。具体的には計算機ノード100Aはシーケンス番号が「2A-1」と「2B-1」である外部入力パケット500を受信して外部入力パケット管理テーブル550に当該パケットの情報を登録しているのに対し(枠930)、計算機ノード100Bには外部入力パケット500が到達していないので外部入力パケット管理テーブル550には外部入力パケットの情報が登録されておらず(枠931)、計算機ノード100Cはシーケンス番号が「2C-1」である外部入力パケットのみを受信しているので、当該パケットの情報のみを外部入力パケット管理テーブル550に保持している(枠932)。尚、外部入力パケット500の情報が登録されていない状態は「0」で示す。
 送信901では、各計算機ノード100A、100B、100Cは各々、自身が外部ネットワーク3から取得(受信)した外部入力パケット500の情報をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定して送出する。送出されたノード間通信パケット600の内容は図29の時間T1に示す(行940)。計算機ノード100AはWS924の値に従い二つの外部入力パケット500(シーケンス番号「2A-1」と「2B-1」の外部入力パケット)の情報を取得してノード間通信パケット600に設定する(行943)。計算機ノード100B、100Cも二つの外部入力パケット500の情報を取得しようとする。しかし、計算機ノード100Bは外部入力パケットを受信していないため外部入力パケット500の情報無しを示す「0」を二つノード間通信パケット600に設定し(行944)、計算機ノード100Cは取得できた一つの外部入力パケット500(シーケンス番号「2C-1」の外部入力パケット)の情報ともう一つは「0」をノード間通信パケット600に設定する(行945)。 
 リスト作成903では送信901で送受信したノード間通信パケット600を結合して「受信結果リスト」を作成し、各計算機ノード100A、100B、100C間で送受信することで計算機ノード間で保持する「受信結果リスト」内容を一致化させる。送受信されるノード間通信パケット600の内容は図30の時間T1に示す(行960)。
 時間T1内で実行されるS601では「多数決同意入力パケット」の有無を判定するが、枠965には「多数決同意入力パケット」は存在しないため、各計算機ノード100A、100B、100CはS602で計算機ノード処理状態テーブル700の入力同期ステップ710WSの値を「3」に変更して、次の周期(時間T2)のS300を起動する。この時の計算機ノード構成管理テーブル317の状態を図31の時間T1に示す(行980)。
 時間T2開始状態の各計算機ノード100A、100B、100Cの状態を図28の時間T2に示す(行921)。計算機ノード100AのWS924は、時間T1におけるS602の実行により、値が「3」に変化しているが、これは計算機ノード100B、100Cも同様である。時間T1の処理を実行中に新たな外部入力パケット500が到着し、時間T2開始時点で計算機ノード100Aにはシーケンス番号「2C-1」の外部入力パケット500の情報が外部入力パケット管理テーブル550に新たに追加され(枠933)、計算機ノード100Bの外部入力パケット管理テーブル550にはシーケンス番号「2B-1」の外部入力パケット500の情報が追加され(枠934)、計算機ノード100Cの外部入力パケット管理テーブル550にはシーケンス番号「2B-1」の外部入力パケット500の情報が追加される(枠935)。
 送信905では各計算機ノード100A、100B、100Cはそれぞれ三つの外部入力パケット500の情報の取得を試みて、取得された外部入力パケット500の情報をノード間通信パケット600に設定して送出する。送出されるノード間通信パケット600の内容を 図29の時間T2に示す(行941)。入力同期ステップ710の値の変化が計算機ノード処理状態603の付加情報702に反映され(枠936)、計算機ノード処理状態個別詳細情報604には三つ分の外部入力パケット500の情報が設定される(枠937)。
 またこの時の計算機ノード構成管理テーブル317の状態を図31の時間T2に示す(行981)。付加情報702の値が「3」に変更される(枠983)。
 リスト作成907では送信905で送受信されたノード間通信パケット600の内容に基づき各計算機ノードが「受信結果リスト」を作成し、計算機ノード100A、100B、100C間で「受信結果リスト」を送受信することで「受信結果リスト」の内容を一致させる。この時に送受信されるノード間通信パケット600の内容を図30の時間T2に示す(行961)。S601での「多数決同意入力パケット」の有無の判定において、時間T2では、シーケンス番号が「2B-1」と「2C-1」の外部入力パケットが「多数決同意入力パケット」として判定される(枠966)。「多数決同意入力パケット」を確認したことにより、時間T3の処理へと移る。
 時間T3での多数決定909では「多数決同意入力パケット」としてシーケンス番号が「2B-1」と「2C-1」の外部入力パケット500が選出される。
 状態更新910では各計算機ノードは「多数決同意入力パケット」を基に決定入力管理テーブル800と入出力決定処理カウンタ315の更新を行う。各計算機ノード100A、100B、100Cはシーケンス番号「2B-1」と「2C-1」の外部入力パケット500の情報を決定入力管理テーブル800に設定する。この時の決定入力管理テーブル800内容は図32に示す。また同時にシーケンス番号「2B-1」と「2C-1」の外部入力パケット500の情報を外部入力パケット管理テーブル550から削除する。「多数決同意入力パケット」の内、シーケンス番号が「2B-1」の外部入力パケット500を外部ネットワーク3経由で自ら受信していない計算機ノード100Bは、決定済み入力管理テーブル810にシーケンス番号が「2B-1」の外部入力パケット500の情報をを設定する。この時の決定済み入力管理テーブル810の内容は図33に示す。また各計算機ノード100A、100B、100Cは入出力決定処理カウンタ315の値を「C011」に更新し、これが計算機ノード構成管理テーブル317に反映される(図31の枠984)。状態更新910により、計算機ノード100A、100B、100Cの状態は、図28の時間T3(行922)の様に変化する。
 送信911では各計算機ノード100A、100B、100Cがそれぞれ決定したアプリケーション200の処理対象となる外部入力パケット500の情報を送受信して、各計算機ノード100A、100B、100C間で共有する。この時送受信されるノード間通信パケット600の内容は、図29の時間T3(行942)に示す。
<処理対象入力パケット選定処理の内部遅延発生の実行例(ケースB)>
 説明は図34、図35、図36、図37、図38、図39、図40、図41を用いて行う。
 図34は処理対象入力パケット選定処理の内部遅延発生の実行例における各計算機ノード100A、100B、100Cの処理シーケンスを示す。時間T1は計算機ノード100A、100Bの処理対象入力パケット選定処理のS300からS602の実行時間に対応し、時間T1’計算機ノード100Cの処理対象入力パケット選定処理のS300からS602の実行時間に対応する。時間T2はその次の実行周期におけるS300からS509の実行時間に対応し、時間T3は時間T2の処理結果に基き実行されるS601からS611の実行時間に対応する。また送信1001および送信1012はS402に対応し、TO1002およびTO1013はS403に対応し、リスト作成1003はS404からS508に対応し、TO1004はS509に対応し、送信1005はS402に対応し、TO1006はS403に対応し、リスト作成1007はS404からS508に対応し、TO1008はS509に対応し、多数決定1009はS601に対応し、状態更新1010はS604からS609に対応し、送信1011はS611に対応する。
 図35はケースBにおける各計算機ノードの外部入力パケット管理テーブル、計算機ノード処理状態テーブル、入出力決定処理カウンタの時間別内容を示す。列および行の構成は、図28と同様である。
 図36はケースBにおいて計算機ノード間で各計算機ノードが受信した外部入力パケット500の内容を交換するために送受信されるノード間通信パケット600の時間別内容を示す。列構成と行1042と行1043の行構成は図29と同様であるが、時間T1および時間T1’ の行構成のみ異なっている。行1040は時間T1の送信1001に対する計算機ノード100A、100Bのノード間通信パケット600内容を示し、行1041は時間T1’ の送信1012に対する計算機ノード100Cのノード間通信パケット600内容を示す。
 図37はケースBにおいて計算機ノード間で各計算機ノードが作成したリストを交換するために送受信されるノード間通信パケット600の時間別内容を示す。列構成と行1061の行構成は図30と同様であるが、行1060の行構成が異なる。行1060は時間T1のリスト作成1003に対する計算機ノード100A、100Bのノード間通信パケット600内容を示す。行1064の空行は、計算機ノード100Cがノード間通信を行っていないことを意味する。
 図38はケースBにおける計算機ノード100A、100Bの計算機ノード構成管理テーブル317の時間別内容を示す。列構成と行1081と行1082の行構成は図31と同様であるが、行1080の行構成が異なる。行1080は時間T1における計算機ノード構成管理テーブル317の内容を表し、計算機ノード100A、100Bの情報のみ保持することを示す。行1085の空行は、計算機ノード100Cが計算機ノード構成管理テーブル内に情報を保持していないことを意味する。
 図39はケースBにおける計算機ノード100Cの計算機ノード構成管理テーブル317の時間別内容を示す。列構成と行1091と行1092の行構成は図31と同様であるが、行1090の行構成が異なる。行1090は時間T1’ における計算機ノード構成管理テーブル317の内容を表し、計算機ノード100Cの情報のみ保持することを示す。行1093および行1094の空白は、計算機ノード100A、100Bが計算機ノード構成管理テーブルに情報を保持していないことを意味する。
 図40はケースBにおける各計算機ノードの決定入力管理テーブル800の内容を示す。図41はケースBにおける計算機ノード100Bの決定済み入力管理テーブル810の内容を示す。
 次に図34の処理シーケンスを追って、各計算機ノード100A、100B、100Cの処理状態変化を説明する。
 時間T1において、各計算機ノード100A、100B、100Cは図28の行1020の状態で処理を開始する。計算機ノード100AはWS1025は「2」、ST1026は「BEGIN」、CNT1027は「C010」の値を保持する。計算機ノード100B、100Cにおいても同値である。しかし外部入力パケット管理テーブル550に保存されている情報の内容が異なり、計算機ノード100Aはシーケンス番号「2A-1」と「2B-1」の外部入力パケットの情報を保持し(枠1031)、計算機ノード100Bはシーケンス番号「2C-1」の外部入力パケットの情報のみを保持する(枠1032)。外部入力パケット500の情報を保存していない場合は「0」で示す。計算機ノード100Cは外部入力パケット500情報を保持していない(枠1033)。
 送信1001では、計算機ノード100A、100Bは取得した外部入力パケット500の情報をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定して送出する。尚時間T1で計算機ノード100Cには起動契機となる外部入力パケット500が到着していないため、計算機ノード100Cは送信1001は行わない。送出されたノード間通信パケット600の状態は図36の時間T1に示す(行1040)。計算機ノード100AはWS1025の値に従い二つの外部入力パケット500の情報(シーケンス番号が「2A-1」と「2B-1」の外部入力パケットの情報)を取得してノード間通信パケット600に設定する(行1044)。計算機ノード100Bも二つの外部入力パケット500の情報を取得しようとするが、取得できるのは1つの外部入力パケット500だけなので、取得できた一つの外部入力パケット500の情報(シーケンス番号「2C-1」の外部入力パケットの情報)ともう一つは「0」を設定する(行1045)。
 時間T1’ になって、外部入力パケット500を受信した計算機ノード100Cは、当該外部入力パケット500のシーケンス番号を用いて送信1012を行う。送出されたノード間通信パケット600の内容を図36の時間T1’ に示す(行1046)。
 計算機ノード100Cが送信1012を行っている間に、計算機ノード100A、100Bは「受信結果リスト」を作成し、計算機ノード間で送信する(リスト作成1003)。このリスト作成1003で送受信するノード間通信パケット600の内容を図37の時間T1に示す(行1060)。「受信結果リスト」に計算機ノード100Cが取得した外部入力パケット500の情報は含まれていない(行1064)。
 TO1004で計算機ノード100A、100Bは双方が送信1012で送信した「受信結果リスト」を取得し、S601で「多数決同意入力パケット」の有無を判定するが、枠1065に「多数決同意入力パケット」は存在しないため、計算機ノード100A、100BはS602で計算機ノード処理状態テーブル700の入力同期ステップ710の値を「3」に変更して時間T2内のS300を起動する。
 一方計算機ノード100Cは、計算機ノード100A、100Bから送信1001で送信されるノード間通信パケット600の受信を期待してTO1013を実行するが、代わりにリスト作成1003で送信された「受信結果リスト」を受信する。そして計算機ノード100Cは、S504およびS505で計算機ノード処理状態の不一致を検出し、S506で計算機ノード処理状態テーブル700のPenalty703の値を「1」に更新する。 計算機ノード100A、100Bから計算機ノード100Cが受信した「受信結果リスト」中に「多数決同意入力パケット」をが存在しないため、計算機ノード100CはS602で計算機ノード処理状態テーブル700の入力同期ステップ710の値を「3」に変更して時間T2内のS300を起動する。
 時間T1における計算機ノード100A、100Bの計算機ノード構成管理テーブル317の内容を図38に示す(行1080)。計算機ノード100A、100Bは計算機ノード100Cの情報を計算機ノード構成管理テーブルに保持していない(行1085の空行)。また時間T1’ における計算機ノード100Cの計算機ノード構成管理テーブル317の状態を図39に示す(行1090)。計算機ノード100Cは計算機ノード100A、100Bの情報は計算機ノード構成管理テーブルに保持していない(行1093、行1094の空行)。
 時間T2の開始時点における各計算機ノード100A、100B、100Cの状態を図35の時間T2に示す(行1029)。計算機ノード100AのWS1023は、時間T1におけるS602の実行により、値が「3」に変化しているが、これは計算機ノード100B、100Cも同様である。計算機ノード100Cには、時間T1’ の処理中に到着した新たな外部入力パケット500の情報(シーケンス番号「2A-1」の外部入力パケットの情報)が保持される(枠1034)。
 送信1005では各計算機ノード100A、100B、100Cはそれぞれ三つの外部入力パケット500情報の取得を試みて、取得された外部入力パケット500情報をノード間通信パケット600に設定して送出する。送出されるノード間通信パケット600の状態を図36の時間T2に示す(行1042)。計算機ノード100Cが送出したノード間通信パケット600には、時間T1’ のS506で更新されたPenalty703の値「1」が保持される(枠1047)。
 リスト作成1007では送信1005で送受信されたノード間通信パケット600から「受信結果リスト」を作成し、各計算機ノード100A、100B、100C間で「受信結果リスト」内容を一致化させる。この時に送受信されるノード間通信パケット600の内容を図37の時間T2に示す(行1061)。S601での「多数決同意入力パケット」の有無を判定において、時間T2では、シーケンス番号「2A-1」の外部入力パケットが「多数決同意入力パケット」として判定される(枠1065と枠1066)。「多数決同意入力パケット」を確認したことにより、時間T3の処理へと移る。
 時間T2における計算機ノード100A、100Bの計算機ノード構成管理テーブル317の状態を図38に示す(行1081)。計算機ノード100A、100Bは同期した計算機ノード100Cの情報を計算機ノード構成管理テーブルに反映させる(行1086)。また計算機ノード100Cの計算機ノード構成管理テーブル317の状態を図39に示す(行1091)。計算機ノード100Cは計算機ノード100A、100Bの情報を新たに計算機ノード構成管理テーブルに保持する(行1096と行1097)。
 時間T3での多数決定909では「多数決同意入力パケット」としてシーケンス番号が「2A-1」の外部入力パケットを選出する。状態更新910では「多数決同意入力パケット」を基に決定入力管理テーブル800と入出力決定処理カウンタ315の更新を行う。各計算機ノード100A、100B、100Cはシーケンス番号が「2A-1」の外部入力パケット500の情報を決定入力管理テーブル800に設定する。この時の決定入力管理テーブル800内容は図40に示す。また同時にシーケンス番号が「2A-1」の外部入力パケット500の情報を外部入力パケット管理テーブル550から削除する。
 「多数決同意入力パケット」となったシーケンス番号「2A-1」の外部入力パケット500を自ら受信していない計算機ノード100Bは、決定済み入力管理テーブル810にシーケンス番号「2A-1」の外部入力パケット500の情報をを設定する。この時の決定済み入力管理テーブル810内容は図41に示す。また各計算機ノード100A、100B、100Cは入出力決定処理カウンタ315の値を「C011」に更新し、これが計算機ノード構成管理テーブル317に反映される(図38の枠1087と図39の枠1098)。状態更新910により、計算機ノード100A、100B、100Cの状態は、図35の時間T3(行1030)の様に変化する。
 送信911では各計算機ノード100A、100B、100Cがそれぞれ決定したアプリケーション200の処理対象となる外部入力パケット500情報を送受信して、各計算機ノード100A、100B、100C間で共有する。この時送受信されるノード間通信パケット600の内容は、図36の時間T3(行1043)に示す。
<実行結果決定処理(ケースC)>
 説明は図42、図43、図44、図45、図46、図47、図48、図49を用いて行う。
 図42は各計算機ノードの処理シーケンスを示す。
 時間T1は計算機ノード100A、100Bの実行結果決定処理のS801からS913に対応し、時間T1’ は計算機ノード100Cの実行結果決定処理のS801からS913に対応する。時間T2はS1001からS1208に対応する。計算機ノード100Bでは時間T3はS1301からS1308に対応し、時間T4はS1309以降の処理に対応する。計算機ノード100A、100Cでは時間T3はS1301からS1315に対応し、時間T4はS1316およびS1317以降の処理に対応する。また送信1101および送信1105はS804に対応し、TO1102およびTO1106はS805に対応し、リスト作成1103はS806からS912に対応し、TO1104はS913に対応する。多数決定1107はS1001からS1105に対応し、状態更新1108はS1101からS1104に対応し、送信1109はS1105に対応し、TO1110はS1106に対応し、リスト作成1119はS1107からS1208に対応する。状態更新1120はS1301からS1305に対応し、送信1121はS1306とS1307に対応し、TO1122はS1308に対応し、出力1123はS1309に対応する。状態更新1124はS1301からS1312に対応し、送信1125はS1313とS1314に対応し、TO1126はS1315に対応し、監視1127はS1316とS1317以降の処理に対応する。
 図43は時間T1およびT1'における送信(1101、1105)で送受信されるノード間通信パケットの内容を示す。計算機ノード処理状態個別詳細情報604には、各計算機ノード100A、100B、100Cで実行したアプリケーション200の演算結果を保持する。行1131は時間T1の送信1101において送受信されたノード間通信パケット600の内容を示し、具体的には構成行の行1133は計算機ノード100Aの送信内容を示し、行1134は計算機ノード100Bの送信内容を示すが、行1135の空行は時間T1に計算機ノード100Cは送信を行わなかったことを意味する。行1132は時間T1’ の送信1105において送受信される通信パケット600の内容を示し、具体的には構成行の行1138は計算機ノード100Cの送信内容を示すが、行1136と行1137の空行は計算機ノード100A、100Bは送信していないことを意味する。
 図44は時間T2にて送信1109で各計算機ノード100A、100B、100C間で送受信されるノード間通信パケットの内容を示す。計算機ノード処理状態個別詳細情報604には、各計算機ノード100A、100B、100Cが決定した「リーダー選出結果」を保持する。行1140は時間T2の送信1109において送受信されるノード間通信パケット600の内容を示し、具体的には構成行の行1141は計算機ノード100Aの送信内容を示し、行1142は計算機ノード100Bの送信内容を示し、行1143は計算機ノード100Cの送信内容を示す。
 図45は時間T3にて送信1121および1125で各計算機ノードが送受信するノード間通信パケットの内容を示す。
 行1150は時間T3の送信1121および送信1125において送受信されるノード間通信パケット600内容を示し、具体的には構成行の行1151は計算機ノード100Aの送信内容を示し、行1152は計算機ノード100Bの送信内容を示し、行1153は計算機ノード100Cの送信内容を示す。
 図46は時間T1のリスト作成1103において、計算機ノード100A、100Bが送受信するノード間通信パケットの内容を示す。行1160は時間T1のリスト作成1103において計算機ノード100A、100Bの間で送受信されるノード間通信パケット600内容を示し、これは「送信」処理にて送受信したノード間通信パケット600を結合した「受信結果リスト」を表す。構成行の行1161は計算機ノード100Aの「送信」内容を示し、行1162は計算機ノード100Bの「送信」内容を示す。行1163の空行は、計算機ノード100Cからはノード間通信パケット600を受取っていないため、「受信結果リスト」に計算機ノード100Cから受信したノード間通信パケットが含まれていないことを意味する。
 図47は時間T2のリスト作成1119において、各計算機ノード間で送受信されるノード間通信パケットの内容を示す。行1170はリスト作成1119において各計算機ノード100A、100B、100Cの間で送受信されるノード間通信パケット600内容を示し、これは「送信」処理にて送受信したノード間通信パケット600を結合した「受信結果リスト」を表す。構成行の行1171は計算機ノード100Aの「送信」内容を示し、行1172は計算機ノード100Bの「送信」内容を示し、行1173は計算機ノード100Cの「送信」内容を示す。
 図48は任意計算機ノードの計算機ノード構成管理テーブルの時間別内容を示す。時間別内容は、計算機ノード100A、100B、100Cにおいて同一である。行1180は時間T1における計算機ノード構成管理テーブル317の計算機ノード識別子601列、入出力決定処理カウンタ602列、計算機ノード処理状態603列の状態を示す。行1181は時間T2における計算機ノード構成管理テーブル317の保持情報を示し、行1182はT3における計算機ノード構成管理テーブル317の保持情報を示す。入力同期時計算機ノード総数317Aは入力同期完了時に設定された値(図48中では「3」)であり、出力同期処理中は変更されない。
 図49は実行結果決定処理の実行例における任意計算機ノードの各計算機ノードの決定出力管理テーブルの内容を示す。
 次に図42の処理シーケンスを追って、各計算機ノード100A、100B、100Cの処理状態変化を説明する。
 送信1101で計算機ノード100A、100Bは選定入力パケット処理S115によるアプリケーション200の演算結果「X」をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定して送出する。送出されたノード間通信パケット600の内容は図43の時間T1に示す(行1131)。計算機ノード100Cは実行結果決定処理の開始が遅れているため、時間T1での送信は行っていない(行1135の空行)。
 リスト作成1103では計算機ノード100A、100Bは送信1101で送受信したノード間通信パケット600を結合して「受信結果リスト」を作成し、各計算機ノード100A、100B、100Cに対して送信する。送出されたノード間通信パケット600の内容を図46に示す。「受信結果リスト」には、計算機ノード100A、100Bから受信した情報は含まれるが(行1161と行1162)、計算機ノード100Cから受信した情報は含まれない(行1163の空行)。
 計算機ノード100A、100BはTO1104で双方の「受信結果リスト」を取得し、多数決定1107の処理を開始する。
 一方計算機ノード100Cは時間T1’ で実行結果決定処理を開始し、送信1105でアプリケーション200の演算結果「X」をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定して送出する。時間T1’ における送出されたノード間通信パケット600の内容を図43の時間T1’ に示す(行1132)。時間T1’ で送信を行っているは計算機ノード100Cのみで(行1138)、計算機ノード100A、100Bは送信していない(行1137と行1138の空行)。
 計算機ノード100CはTO1106で計算機ノード100A、100Bからそれぞれの計算機ノードのアプリケーション200による演算の演算結果を受信することを期待するが、代りにリスト作成1103で送信された「受信結果リスト」を受信する。S904およびS905で計算機ノード100Cは計算機ノード処理状態の不一致を検出し、S906で計算機ノード100Cha計算機ノード処理状態テーブル700のPenalty703の値を「1」に更新する。計算機ノード100Cは受信した「受信結果リスト」に自身のアプリケーション200の演算結果を加えて「受信結果リスト」を作成し、多数決定1107の処理を開始する。
 多数決定1107では、計算機ノード100A、100Bはリスト作成1103で共有した「受信結果リスト」を基にアプリケーション200の演算結果の多数決判定を行う。 計算機ノード100CはTO1106で取得、作成した「受信結果リスト」を基に多数決判定を行う。本例では計算機ノード100A、100B、100Cのアプリケーション200の演算結果は全て同一の「X」であるため、「受信結果リスト」に含まれる全ての計算機ノードが「多数派」として判断される。
 状態更新1108では「受信結果リスト」に含まれる計算機ノードから、リーダー候補となる計算機ノードを選出し、リーダー選出の順位付けを行う。計算機ノード100A、100Bが保持する「受信結果リスト」には「計算機ノード100A、100B」が含まれているため、何れもS1102で「計算機ノード100A、100B」を選出し、「計算機ノード100B」を一位、「計算機ノード100A」を二位と順位付けする(本例では計算機ノード識別子の値の降順で順位付けを行う)。一方計算機ノード100Cが保持する「受信結果リスト」には「計算機ノード100A、100B、100C」が含まれているため、「計算機ノード100A、100B、100C」を選出し、「計算機ノード100B」を一位、「計算機ノード100A」を二位、「計算機ノード100C」を三位と順位付けする。「計算機ノード100C」は最も大きな計算機ノード識別子の値を持つが、Penalty703に「1」が設定されているため最下位の三位に順位付けされる。
 送信1109では各計算機ノード100A、100B、100Cは状態交信1108のリーダー選出結果をノード間通信パケット600の計算機ノード処理状態個別詳細情報604に設定して送出する。送信されるノード間通信パケット600の内容を図44に示す。計算機ノード100A、100Bは「計算機ノード100C」のリーダー選出順位は決定せずに送信する(枠1144と枠1145)。一方計算機ノード100Cは自身のリーダー選出順位を付加して送信する(枠1146)。
 リスト作成1119では計算機ノード100A、100B、100C間で交換したリーダ選出順位を照合して結合した「受信結果リスト」の作成と共有を行う。「受信結果リスト」が設定された、リスト作成1119で送受信されるノード間通信パケット600の内容を図47に示す。計算機ノード100A、100Bが作成した「受信結果リスト」には、計算機ノード100Cのリーダー選出順位が補完され、反映される(枠1174と枠1175)。
 時間T3以降は、計算機ノード100A、100B、100Cはリーダー選出順位に基き「リーダー」と「モニター」に分かれ、それぞれ異なる処理を行う。計算機ノード100Bは「リーダー」になり、計算機ノード100A、100Cは「モニター」となる。
 状態更新1120で計算機ノード100Bは、リーダー選出順位により自身を「リーダー」と判断し、計算機ノード処理状態テーブル700の処理状態704に「LEADER」を設定し、入出力決定処理カウンタ315の値を変更する。計算機ノード100A、100Cについては「モニター」と判断する。
 一方状態更新1124で計算機ノード100A、100Cは、リーダー選出順位により自身を「モニター」と判断し、計算機ノード処理状態テーブル700の処理状態704に「MONITOR」を設定し、入出力決定処理カウンタ315の値を変更する。計算機ノード100Bについては「リーダー」と判断する。
 状態更新1120および状態更新1124は、自他計算機ノードの情報および「リーダー/モニター」判断結果を計算機ノード構成管理テーブル317と決定出力管理テーブル321に反映する。時間T3における計算機ノード構成管理テーブル317の内容を図48の時間T3(行1182)に、決定出力管理テーブル321の内容を図49に示す。
 送信1121および送信1125で、各計算機ノード100A、100B、100Cは自身の計算機ノード処理状態を送信する。送信1121および送信1125で送信されるノード間通信パケット600の内容を図45に示す。各計算機ノード100A、100B、100Cの更新された入出力決定処理カウンタ602値(枠1154)と、「リーダー/モニター」を示す処理状態704(枠1155)が通知される。
 出力1123で「リーダー」である計算機ノード100BはS1309を実行し、アプリケーション200の演算結果である信号を外部に送信する。
 監視1127において「モニター」である計算機ノード100A、100Cは、S1316およびS1317を実行して出力1123の信号送出を監視することで「リーダー」である計算機ノード100Bの外部出力の正常/異常を判断し、再同期検知処理S111または出力異常処理S1400を実行する。
 次に別の実施形態として、既存の稼動中の多数決同期システムの系に新たな計算機ノードを加えた場合の動作説明を行う。
 図50は本発明の実施の形態の、新規計算機ノード追加における多数決同期システムの全体構成例である。同期システム1Aは、計算機ノード100A、100B、100Cから構成される、既存稼動中の多数決同期システムの系を示す。計算機ノード100Dは同期システム1Aに新たに追加される計算機ノードであり、図1の計算機ノード100Aと同様のハードウェア構成、ソフトウェア構成を保持する。外部ネットワーク3は計算機ノード100A、100B、100Cおよび計算機ノード100Dと端末2A、2B、2Cを接続し、内部ネットワーク4は計算機ノード100A、100B、100Cおよび計算機ノード100Dの間を接続する。同期システム1Bは計算機ノード100D追加後の、計算機ノード100A、100B、100C、100Dから構成される多数決同期システムの系を示す。
 次に同期システム1Aに計算機ノード100Dを追加する時の動作説明を行う。なお動作説明は、外部ネットワーク3と内部ネットワーク4への計算機ノード100D接続操作は省略し、接続が完了した状態から始める。
 計算機ノード100Dで基盤ソフトウェア300の入出力同期部310が動作を開始すると、計算機ノード100Dの入出力同期部310は再同期処理S118を実行し、S1183で「REJOIN-REQのノード間通信パケット」を内部ネットワーク4に接続された計算機ノード100A、100B、100Cに対してマルチキャストで送信する。そしてS1184で「REJOIN-ACKのノード間通信パケット」の到着を期待してタイムアウトまでWaitする。
 計算機ノード100A、100B、100Cは、再同期検知処理S111のS1114で計算機ノード100Dからの「REJOIN-REQのノード間通信パケット」を検出し、S1118で「REJOIN-ACKのノード間通信パケット」を計算機ノード100Dを含む他の計算機ノードに対してマルチキャストで送信する。そして算機ノード100Dからの「JOINEDのノード間通信パケット」の到着を期待してタイムアウトまでWaitする。
 計算機ノード100Dは計算機ノード100A、100B、100Cからの「REJOIN-ACKのノード間通信パケット」を受信すると、S11810で「REJOIN-REQのノード間通信パケット」を計算機ノード100A、100B、100Cに対してマルチキャストで送信し、入力同期処理を開始するためにS112を起動する。
計算機ノード100A、100B、100Cは計算機ノード100Dからの「REJOIN-REQのノード間通信パケット」の受信を確認すると、入力同期処理を開始するためにS112を起動する。
 これ以降、多数決同期システムは計算機ノード100-Dを加えた系(同期システム1-B)で端末2-A、2-B、2-Cからの外部入力パケット500を処理する。
1:同期システム
2A、2B、2C:端末
100A、100B、100C:計算機ノード
101:メモリ
102:プロセッサ
103:記憶装置
104:外部通信I/F
105:ノード間通信I/F
200:アプリケーション
300:基盤ソフトウェア
301:外部入力パケット記憶部
310:入出力同期部
400:オペレーティングシステム
500:外部入力パケット
600:ノード間通信パケット

Claims (12)

  1.  複数の計算機ノードを有する計算機システムであって、
     各計算機ノードは、処理要求を受信する外部通信部と、当該処理要求に従って処理を実行するアプリケーション部と、各計算機ノードのアプリケーション部で実行される処理の他の計算機ノードとの間での同期を制御する同期部と、他の計算機ノードとの間で情報の送受信を実行するノード間通信部とを有し、 
     前記各計算機ノードの前記同期部は、前記外部通信部が受信した処理要求識別情報が付与された処理要求に、当該計算機ノードの識別情報を送信元計算機ノード識別情報として付与して前記ノード間通信部を介して他の計算機ノードに送信し、
     前記各計算機ノードの前記同期部は、前記ノード間通信部を介して他の計算機ノードから当該他の計算機ノードの識別情報が付与された処理要求を受信し、
     前記各計算機ノードの前記同期部は、同じ処理要求識別情報が付与された処理要求を外部通信部を経由して受信した計算機ノードの数に基づく第一の所定の判断基準に従って、前記ノード間通信部が他の計算機ノードから受信した処理要求と前記外部通信部が受信した処理要求の中から、前記アプリケーション部に実行させる処理要求を選択し、
     前記アプリケーション部は選択された前記処理要求を実行することを特徴とする計算機システム。
  2.  請求項1記載の計算機システムであって、
     前記第一の所定の判断基準とは、前記複数の計算機ノードの過半数が同じ処理要求識別情報が付与された処理要求を外部通信部を経由して受信しているか否かであることを特徴とする計算機システム。
  3.  請求項1記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記アプリケーション部が選択された前記処理要求を実行した実行結果を、前記ノード間通信部を介して他の計算機ノードに送信し、
     前記各計算機ノードの前記同期部は、前記ノード間通信部を介して他の計算機ノードから実行結果を受信し、
     前記各計算機ノードの前記同期部は、同じ実行結果を取得した計算機ノードの数に基く第二の所定の判断基準に従って、前記ノード間通信部が他の計算機ノードから受信した実行結果と前記アプリケーション部の実行結果の中から、出力結果を選択し、
     前記各計算機ノードの前記同期部は、選択された前記出力結果を前記アプリケーション部から実行結果として受け取っていた場合に、選択された前記出力結果をアプリケーション部の実行結果として送信した他の計算機および自計算機ノードの中から、予め定められた基準に従ってリーダ計算機ノード候補を選出して、当該リーダ計算機ノード候補の識別情報を、前記ノード間通信部を介して他の計算機ノードに送信し、
     前記各計算機ノードの前記同期部は、前記ノード間通信部を介して、他の計算機ノードから当該他の計算機ノードが選出したリーダ計算機ノード候補の識別情報を受信し、
     同じ識別情報で識別される計算機ノードをリーダ計算機ノード候補として選出した計算機ノードの数に応じて、自計算機ノードが選出した前記リーダ計算機ノード候補をリーダ計算機ノードとするか否かを判断し、
     自計算機ノードが選出した前記リーダ計算機ノード候補をリーダ計算機ノードとした場合であって、自計算機ノードが前記リーダ計算機ノードに選出された場合には、選択された前記出力結果を出力することを特徴とする計算機システム。
  4.  請求項3記載の計算機システムであって、
     前記第二の所定の判断基準とは、前記複数の計算機ノードの過半数が、同じ実行結果をアプリケーション処理部から受け取っているか否かであることを特徴とする計算機システム。
  5.  請求項3記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記自計算機ノードが選出した前記リーダ計算機ノード候補をリーダ計算機ノードとした場合であって、前記自計算機ノードが前記リーダ計算機ノードに選出されなかった場合に、前記リーダ計算機ノードに選出された他の計算機ノードが出力する出力結果を監視し、
     前記リーダ計算機ノードに選出された他の計算機が出力した出力結果が、前記自計算機ノードが選択した出力結果とは異なる場合に、前記自計算機ノードが選出した出力結果と同じ出力結果を選択した他の計算機ノードおよび自計算機ノードの中から別のリーダ計算機ノードを選出することを特徴とする計算機システム。
  6.  請求項3記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、当該同期部が実行する処理の進捗状況を示す処理状態情報を有しており、
     前記各計算機ノードの前記同期部は、前記外部通信部が受信した処理要求に更に前記処理状態情報を付与して前記ノード間通信部を介して前記他の計算機ノードに送信し、
     前記各計算機ノードの前記同期部は、前記ノード間通信部を介して他の計算機から当該他の計算機の処理状態情報が付与された処理要求を受信し、
     前記各計算機ノードの前記同期部は、前記自計算機ノードの処理状態情報と前記他の計算機から受信した処理状態情報とを比較し、前記自計算機ノードの同期部による処理の進捗の遅れが所定の基準以上である場合に、前記アプリケーション部に実行させる処理要求を選択するための処理を実行せずに、前記他の計算機ノードとの間で同期をとるよう再同期要求を当該他の計算機ノードに送信することを特徴とする計算機システム。
  7.  請求項6記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記自計算機ノードと同期をとっている計算機ノードの数を管理しており、
     前記各計算機ノードの前記同期部は、他の計算機ノードから再同期要求を受信した場合に、前記処理状態情報を当該他の計算機ノードに送信し、当該他の計算機ノードからの応答を受信すると、前記計算機ノードの数を更新することを特徴とする計算機システム。
  8.  請求項6記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記自計算機ノードの処理状態情報と前記他の計算機から受信した処理状態情報とを比較し、前記自計算機ノードの同期部による処理の遅れが所定の基準以内である場合には、前記アプリケーション部に実行させる処理要求を選択するための処理を実行することを特徴とするシステム。
  9.  請求項項3記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、当該同期部が実行する処理の進捗状況を示す処理状態情報を有しており、
     前記各計算機ノードの前記同期部は、前記アプリケーション部の実行結果に更に前記処理状態情報を付与して前記ノード間通信部を介して前記他の計算機ノードに送信し、
     前記各計算機ノードの前記同期部は、前記ノード間通信部を介して他の計算機から当該他の計算機の処理状態情報が付与された実行結果を受信し、
     前記各計算機ノードの前記同期部は、前記自計算機ノードの処理状態情報と前記他の計算機から受信した処理状態情報とを比較し、前記自計算機ノードの同期部による処理の進捗の遅れが所定の基準以上である場合に、前記出力結果を選択するための処理を実行することなく、前記他の計算機ノードとの間で同期をとるよう再同期要求を当該他の計算機ノードに送信することを特徴とする計算機システム。
  10.  請求項9記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記自計算機ノードと同期をとっている計算機ノードの数を管理しており、
     前記各計算機ノードの前記同期部は、他の計算機ノードから再同期要求を受信した場合に、前記処理状態情報を当該他の計算機ノードに送信し、当該他の計算機ノードからの応答を受信すると、前記計算機ノードの数を更新することを特徴とする計算機システム。
  11.  請求項9記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記自計算機ノードの処理状態情報と前記他の計算機から受信した処理状態情報とを比較し、前記自計算機ノードの同期部による処理の遅れが所定の基準以内である場合には、前記出力結果を選択するための処理を実行することを特徴とするシステム。
  12.  請求項3記載の計算機システムであって、
     前記各計算機ノードの前記同期部は、前記自計算機ノードと同期をとっている計算機ノードの数を管理しており、
     前記各計算機ノードの前記同期部は、他の計算機ノードから前記自計算機ノードと同期をとるための同期要求を受信した場合に、当該同期部の処理の進捗状況を示す処理状態情報を当該他の計算機ノードに送信し、当該他の計算機ノードからの応答を受信すると、前記計算機ノードの数を更新することを特徴とする計算機システム。
PCT/JP2010/006290 2010-10-25 2010-10-25 計算機システム WO2012056487A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012540539A JP5596793B2 (ja) 2010-10-25 2010-10-25 計算機システム
PCT/JP2010/006290 WO2012056487A1 (ja) 2010-10-25 2010-10-25 計算機システム
US13/881,044 US9942107B2 (en) 2010-10-25 2010-10-25 Computer system including plural computer nodes synchronized with each other

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/006290 WO2012056487A1 (ja) 2010-10-25 2010-10-25 計算機システム

Publications (1)

Publication Number Publication Date
WO2012056487A1 true WO2012056487A1 (ja) 2012-05-03

Family

ID=45993247

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/006290 WO2012056487A1 (ja) 2010-10-25 2010-10-25 計算機システム

Country Status (3)

Country Link
US (1) US9942107B2 (ja)
JP (1) JP5596793B2 (ja)
WO (1) WO2012056487A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015045589A1 (ja) * 2013-09-26 2015-04-02 株式会社 日立製作所 フォールトトレラントシステム及びフォールトトレラントシステム制御方法
JP2020113032A (ja) * 2019-01-11 2020-07-27 富士通株式会社 通信装置、通信プログラム、および分散処理方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140075170A1 (en) * 2012-09-12 2014-03-13 International Business Machines Corporation Automated firmware voting to enable multi-enclosure federated systems
CN105808469B (zh) * 2016-03-21 2018-12-25 北京小米移动软件有限公司 数据处理方法、装置、终端及智能设备
DE102016211286A1 (de) * 2016-06-23 2017-12-28 Siemens Aktiengesellschaft Verfahren zum synchronisierten Betrieb von Mehrkernprozessoren
US10671482B2 (en) * 2017-09-12 2020-06-02 Cohesity, Inc. Providing consistency in a distributed data store
US11221612B2 (en) * 2018-07-27 2022-01-11 Rockwell Automation Technologies, Inc. System and method of communicating data over high availability industrial control systems
US11927950B2 (en) 2018-07-27 2024-03-12 Rockwell Automation Technologies, Inc. System and method of communicating safety data over high availability industrial control systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067214A (ja) * 2001-08-27 2003-03-07 Nippon Telegr & Teleph Corp <Ntt> サーバシステム、仲介装置、クライアントサーバ型システムにおける誤り隠蔽方法
JP2009217503A (ja) * 2008-03-10 2009-09-24 Hitachi Ltd 計算機システム、計算機制御方法及び計算機制御プログラム
JP2010113495A (ja) * 2008-11-06 2010-05-20 Nomura Research Institute Ltd クラスタシステムおよびクラスタ制御方法
JP2010198442A (ja) * 2009-02-26 2010-09-09 Toshiba Corp フェイルオーバ機能を持つ分散システムおよび同システムにおけるフェイルオーバ方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802295A (en) * 1994-09-12 1998-09-01 Canon Kabushiki Kaisha Information processing method and system therefor
US6308201B1 (en) * 1999-04-08 2001-10-23 Palm, Inc. System and method for sharing data among a plurality of personal digital assistants
US6553037B1 (en) * 1999-04-08 2003-04-22 Palm, Inc. System and method for synchronizing data among a plurality of users via an intermittently accessed network
JP4167089B2 (ja) * 2003-01-17 2008-10-15 日本電信電話株式会社 サーバシステム及びクライアントサーバ型システムにおける誤り隠蔽方法
US7814231B2 (en) * 2004-05-24 2010-10-12 Apple Inc. Method of synchronizing between three or more devices
JP3897047B2 (ja) 2005-01-31 2007-03-22 横河電機株式会社 情報処理装置および情報処理方法
US7542432B2 (en) * 2005-10-27 2009-06-02 Alcatel Lucent Resource matched topology database synchronization in communications networks having topology state routing protocols
US9596301B2 (en) * 2006-09-18 2017-03-14 Hewlett Packard Enterprise Development Lp Distributed-leader-election service for a distributed computer system
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US7738503B2 (en) * 2007-02-02 2010-06-15 Palm, Inc. Multi-way, peer-to-peer synchronization
US8428065B2 (en) * 2007-06-18 2013-04-23 International Business Machines Corporation Group communication system achieving efficient total order and state synchronization in a multi-tier environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067214A (ja) * 2001-08-27 2003-03-07 Nippon Telegr & Teleph Corp <Ntt> サーバシステム、仲介装置、クライアントサーバ型システムにおける誤り隠蔽方法
JP2009217503A (ja) * 2008-03-10 2009-09-24 Hitachi Ltd 計算機システム、計算機制御方法及び計算機制御プログラム
JP2010113495A (ja) * 2008-11-06 2010-05-20 Nomura Research Institute Ltd クラスタシステムおよびクラスタ制御方法
JP2010198442A (ja) * 2009-02-26 2010-09-09 Toshiba Corp フェイルオーバ機能を持つ分散システムおよび同システムにおけるフェイルオーバ方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015045589A1 (ja) * 2013-09-26 2015-04-02 株式会社 日立製作所 フォールトトレラントシステム及びフォールトトレラントシステム制御方法
JP2015064833A (ja) * 2013-09-26 2015-04-09 株式会社日立製作所 フォールトトレラントシステム及びフォールトトレラントシステム制御方法
JP2020113032A (ja) * 2019-01-11 2020-07-27 富士通株式会社 通信装置、通信プログラム、および分散処理方法
JP7181663B2 (ja) 2019-01-11 2022-12-01 富士通株式会社 通信装置、通信プログラム、および分散処理方法

Also Published As

Publication number Publication date
US20130275626A1 (en) 2013-10-17
JPWO2012056487A1 (ja) 2014-02-24
JP5596793B2 (ja) 2014-09-24
US9942107B2 (en) 2018-04-10

Similar Documents

Publication Publication Date Title
JP5596793B2 (ja) 計算機システム
JP6382454B2 (ja) 分散ストレージ及びレプリケーションシステム、並びに方法
US8055711B2 (en) Non-blocking commit protocol systems and methods
KR101503202B1 (ko) 데이터 동기화
US9934242B2 (en) Replication of data between mirrored data sites
US9154553B2 (en) Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment
WO2016150066A1 (zh) 一种主节点选举方法、装置及存储系统
CN111368002A (zh) 一种数据处理方法、系统、计算机设备和存储介质
US7738504B1 (en) Method of establishing and updating master node in computer network
CN104615598B (zh) 元数据服务器的迁移处理方法及装置
US20180027048A1 (en) File transmission method, apparatus, and distributed cluster file system
EP3373514B1 (en) User terminal grouping method, conference server, and conference system
EP3817338B1 (en) Method and apparatus for acquiring rpc member information, electronic device and storage medium
KR20100099319A (ko) 노드 시스템, 서버 절환 방법, 서버 장치, 및 데이터 인수 방법
EP3713195B1 (en) Log processing method, related device, and system
JPH11212818A (ja) 分散シミュレーションシステム
JP2010152591A (ja) データベースシステム、データ処理方法及びデータ処理プログラム
JP2010086137A (ja) メッセージキューイング方法及びプログラム
CN108881452B (zh) 一种数据同步的方法、装置及存储介质
EP3404914A1 (en) Information processing apparatus, information processing system, and information processing method
US20090106781A1 (en) Remote call handling methods and systems
CN113127271A (zh) 交易系统的部署方法、装置、计算机设备和存储介质
CN113032477A (zh) 基于gtid的长距离数据同步方法、装置及计算设备
CN113037797A (zh) 数据处理方法及其装置
JP6000608B2 (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: 10858884

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012540539

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13881044

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10858884

Country of ref document: EP

Kind code of ref document: A1