Abstract:
In an approach for determining a location of failure between interconnects/controller, a computer collects debug information simultaneously at a plurality of nodes coupled to an interconnect. Subsequent to collecting debug information, the computer analyzes the debug information collected simultaneously thereby determining which end of the interconnect caused the failure.

Description:
CROSS REFERENCE TO RELATED APPLICATION 
       [0001]    This application is a Continuation Application of pending U.S. patent application Ser. No. 14/066,722 filed Oct. 30, 2013. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present disclosure relates to distributed computer systems, and more specifically to failure data for distributed computer systems. 
       BACKGROUND OF THE INVENTION 
       [0003]    A combination of hardware and software components in computer systems today has progressed to a point such that these computer systems can be highly reliable. Reliability in computer systems may be provided by using redundant components. In some computer systems, for example, components such as node controllers that manage hardware error requests that nodes of the computer system are provided in redundant pairs—one primary node controller and one redundant (backup) node controller. When such a primary node controller fails, the redundant node controller takes over the primary node controller&#39;s operations. Redundant pairs can also be used for system controllers for the same purpose. Node controllers and system controllers may also be referred to as service processors. A service processor is the component in a distributed computer system that provides operation tasks such as initialization, configuration, run-time error detection, diagnostics and correction, as well as closely monitoring other hardware components for failures. 
         [0004]    A system dump is the recorded state of the working memory of a redundant node controller at a specific time, such as when a program running on the redundant node controller has determined a loss of communications with the system controller. First failure data capture (FFDC) is a minimum set of information related to a certain error detected by a node and/or system controller. Debug dump data is a superset of FFDC, and it includes all information from the controller, including information that may not be directly relevant to the specific error investigation. When an error occurs in one of the nodes, the dump of debug information is captured immediately from the primary node controller for further analysis. However, the backup node controller may become aware of the error only if the primary fails and consequently the backup takes over as primary. This process is called failover. Waiting for the failover process to be completed to capture the dump may delay the dump of the debug information and negatively impact the ability to analyze the error. 
       SUMMARY 
       [0005]    Embodiments of the present invention disclose a method, computer program product, and system for determining a location of failure between interconnects/controller. The method includes a computer collecting debug information simultaneously at a plurality of nodes coupled to an interconnect. Subsequent to collecting debug information, the computer analyzes the debug information collected simultaneously thereby determining which end of the interconnect caused the failure. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         [0006]      FIG. 1  is a functional block diagram illustrating a distributed computer system environment, including a server computer, in accordance with an embodiment of the present invention. 
           [0007]      FIG. 2  is a data flow diagram depicting the intercommunications of components within the distributed computer system environment of  FIG. 1 , for synchronizing debug information generation, in accordance with an embodiment of the present invention. 
           [0008]      FIG. 3  illustrates examples of scenarios for synchronizing debug information generation according to a predetermined map, in accordance with an embodiment of the present invention. 
           [0009]      FIG. 4  depicts a block diagram of components of the server computer of  FIG. 1 , in accordance with an embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0010]    During normal operation within a distributed computer system, a particular node controller may detect an error. That error may include many different types of failures, such as communication failure errors, application or process failure errors, crashes or locking up of a particular node or node controller operation, as well as other errors. When a node controller detects an error in a distributed computer system, resources of the distributed computer system attempt to store error information relevant to that error for later retrieval. The distributed computer system monitors processes, applications, and other resources with a high priority on keeping those resources available to the user and other entities at all times. The distributed computer system may employ one or more system controllers that monitor operations of the node controllers and other devices of the distributed computer system and manage node controller error information. When a node controller detects an error, that error may cause communication failures within the distributed computer system. Communication failures may present a challenge to system controllers in retrieving node controller error detection information. 
         [0011]    In system architectures with multiple service processors configured in a hierarchical architecture, collecting debug information simultaneously from more than one service processors upon encountering any error condition may improve error analysis. For example, if an intra-node interconnect experiences a failure, there is not a reliable method to determine which end of the interconnect is the cause of failure. Collecting debug information from service processors on both of the nodes between which the interconnect failure was seen, at the same time, provides additional data for error analysis. Another example of a failure that may benefit from collecting simultaneous debug information is when a node controller fails. When this occurs, the primary system controller can not communicate with the failed node controller. Gathering failure data simultaneously from both the backup system controller and the backup node controller in the node that experienced the failure may be beneficial. Yet another example of a failure that may benefit from collecting simultaneous debug information is when a primary node controller has difficulty accessing hardware within the node. At that time, failure data collected from both primary and backup node controllers simultaneously may give the system administrator additional insight into the error. 
         [0012]    Embodiments of the present invention recognize analysis of errors within a distributed computer system can be improved if the first failure data capture (FFDC) and debug dump data are captured from all of the involved service processors, i.e. node controllers and system controllers, simultaneously. Embodiments of the present invention detect an error in a distributed computer system, determine from which service processors the debug information is collected, and aggregate the data into a single report. Implementation of embodiments of the invention may take a variety of forms, and exemplary implementation details are discussed subsequently with reference to the Figures. 
         [0013]    As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer-readable medium(s) having computer readable program code/instructions embodied thereon. 
         [0014]    Any combination of computer-readable media may be utilized. Computer-readable media may be a computer-readable signal medium or a computer-readable storage medium. A computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of a computer-readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0015]    A computer-readable signal medium may include a propagated data signal with computer-readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer-readable signal medium may be any computer-readable medium that is not a computer-readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0016]    Program code embodied on a computer-readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
         [0017]    Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java® (note: the term(s) “Java” may be subject to trademark rights in various jurisdictions throughout the world and are used here only in reference to the products or services properly denominated by the marks to the extent that such trademark rights may exist), Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on a user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0018]    Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0019]    These computer program instructions may also be stored in a computer-readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0020]    The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer-implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0021]    The present invention will now be described in detail with reference to the Figures.  FIG. 1  is a functional block diagram illustrating a distributed computer system environment, generally designated  100 , in accordance with one embodiment of the present invention. The term “distributed” as used in this specification describes a computer system that includes multiple, physically distinct devices that operate together as a single computer system.  FIG. 1  provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made. 
         [0022]    Distributed computer system environment  100  includes server computer  102 . Server computer  102  may be a management server, a web server, or any other electronic device or computing system capable of receiving and sending data. In other embodiments, server computer  102  may represent a server computing system utilizing multiple computers as a server system, such as in a cloud computing environment. In another embodiment, server computer  102  may be a laptop computer, tablet computer, netbook computer, personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device capable of communicating with other electronic devices. In another embodiment, server computer  102  represents a computing system utilizing clustered computers and components to act as a single pool of seamless resources. Server computer  102  includes nodes  104 ,  106 ,  108  and  110 , as well as system controller  112  and system controller  114 . Server computer  102  may include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 4 . 
         [0023]    Each of nodes  104  through  110  is a processing device that executes user applications and is contained in server computer  102 . Each such node may be a web server, a database, or any other computing device. The embodiment illustrated in  FIG. 1  depicts each node containing a processor (e.g. processor  118  of node  104 , etc.), memory (e.g. memory  120  of node  104 , etc.), and two node controllers (e.g. node controllers  116   a  and  116   b  of node  104 , etc.). Each node controller can be a type of service processor. Although not all shown in  FIG. 1 , nodes may include any number of devices such as additional computer processors, additional computer memory, disk drive adapters, disk drives, communication adapters, bus adapters, and so on as will occur to those of skill in the art. As depicted in  FIG. 1 , server computer  102  is configured with four nodes ( 104 ,  106 ,  108 ,  110 ), but readers of skill in the art will recognize that computer systems useful in administering a system dump on a redundant node controller of a computer according to embodiments of the present invention may include any number of nodes. In various embodiments of the present invention, for example, a computer system may include from one to eight nodes. 
         [0024]    Each node ( 104 ,  106 ,  108 ,  110 ) in server computer  102  includes two node controllers configured in a redundant relationship, capable of taking over certain responsibilities from one another. A node controller is a device contained in a node that attends to any hardware error requests of the node that occur during operation of the computer system. A pair of node controllers in a node provides, as a group, reliable node controller operations due to redundancy—when one node controller fails, the redundant node controller takes over node controller operations for the node of the computer system. Only one node controller in a pair is configured as a primary node controller at one time. The primary node controller is the node controller in which all node controller operations are carried out for a node of the computer system. A redundant node controller, in contrast, carries out no node controller operations for the node of the computer system until the primary node controller fails. For example, in the context of server computer  102 , in node  104 , node controller  116   a  is the primary node controller and node controller  116   b  is the backup node controller. In node  106 , node controller  122   a  is the primary node controller and node controller  122   b  is the backup node controller. In node  108 , node controller  128   a  is the primary node controller and node controller  128   b  is the backup node controller. In node  110 , node controller  134   a  is the primary node controller and node controller  134   b  is the backup node controller. 
         [0025]    Server computer  102  includes two system controllers ( 112 ,  114 ). Each system controller can be a type of service processor. A system controller is a controller that manages nodes in a computer system. System controllers may collect error and operational status information from nodes during the operation of the computer system as well as direct operations of the nodes. In an embodiment of the present invention, server computer  102  includes a redundant system controller to provide reliability. In particular, in server computer  102 , system controller  112  is the primary system controller and system controller  114  is the backup system controller. 
         [0026]    Each system controller includes nonvolatile memory storage ( 140 ,  142 ), such as a hard disk drive, CD drive, DVD drive or other nonvolatile storage. Nonvolatile memory storage is used to aggregate all debug information generated during a failure situation, as discussed in detail below. 
         [0027]      FIG. 2  is a data flow diagram depicting the intercommunications of components within the distributed computer system environment of  FIG. 1 , for synchronizing debug information generation, in accordance with an embodiment of the present invention. 
         [0028]    Upon detecting an error, a service processor, such as a node controller or another system controller, signals the primary system controller that a failure has occurred (step  202 ). In the illustrated embodiment, node controller  116   a  signals system controller  112  that a failure has occurred. For example, node controller  116   a  may observe a loss of communication with node controller  122   a . The primary system controller determines the failure conditions (step  204 ). As noted in the previous example, system controller  112  determines that a communications failure has occurred between node  104  and node  106  due to the loss of communication between node controller  116   a  and node controller  122   a . In another embodiment, the primary system controller may determine failure conditions without receiving a signal from a node controller that a failure has occurred. For example, the primary system controller may determine a loss of communication with a particular node controller without the node controller sending an alert. 
         [0029]    The primary system controller determines whether or not the failure conditions require a simultaneous dump of debug information (decision block  206 ). A simultaneous dump is when multiple service processors working in parallel provide debug information at the same time. Debug information may include first failure data capture (FFDC) as well as debug dump data, where debug dump data is a superset of FFDC that includes all information from the controller, including information that may not be directly relevant to the specific error investigation. A simultaneous dump of debug information may improve the analysis of errors within a distributed computer system by providing information from different service processors at the same instant that the error occurs. For example, capturing data from a backup node controller and/or system controller at the time of a failure of a primary node controller may provide valuable information regarding the system performance at that time. A simultaneous dump of debug information may be required if, for example, the primary system controller detects that interconnect issues arise between multiple nodes. If the primary system controller determines the failure conditions do not require a simultaneous dump of debug information from multiple service processors, no additional actions are taken (no branch, decision block  206 ). 
         [0030]    If the primary system controller determines that the failure conditions do require a simultaneous dump of debug information (yes branch, decision block  206 ), then the primary system controller selects the service processors to alert (step  208 ). For example, in the depicted embodiment, if the interconnect between node  104  and node  106  fails, system controller  112  selects the primary and backup node controllers from each of the two nodes between which an interconnect fail has been detected, specifically, node controller  116   a , node controller  116   b , node controller  122   a  and node controller  122   b , to alert to the error. In one embodiment, a map is created during system design. The map defines scenarios of one or more possible failure conditions and the service processors selected to be alerted for each of the associated failure conditions, as depicted and described in further detail with respect to  FIG. 3 . 
         [0031]    Subsequent to selecting which service processors to alert, the primary system controller broadcasts an alert to the selected node controllers and the backup system controller (step  210 ). The alert is a request to generate a dump of debug information. In the example discussed above where a communications failure has been detected between node  104  and node  106 , system controller  112  alerts node controller  116   a , node controller  116   b , node controller  122   a , node controller  122   b , and system controller  114  that a dump of debug information is required to be generated. 
         [0032]    A plurality of techniques is introduced herein by which the primary system controller may broadcast an alert to the selected service processors from which a simultaneous dump of debug information is required. According to one such technique, in one embodiment the service processors from which a simultaneous dump of debug information is required are alerted by utilizing a programmable interrupt generator in server computer  102  that can communicate with the system controllers and all of the node controllers. A programmable interrupt generator is a device that generates interrupts to one or more selected service processors to which it is connected. For example, if system controller  112  selects node controller  116   a  and node controller  122   a  to alert, system controller  112  signals the interrupt generator (not shown) to interrupt node controller  116   a  and node controller  122   a . According to another such technique, in another embodiment the service processors from which a simultaneous dump of debug information is required are alerted by having the primary system controller broadcast the error on the ethernet transport (not shown) on which all of the selected service processors reside. According to a third technique, in another embodiment, where an inter-node error is detected by only one service processor, one of the service processors can inform another service processor through a functional subsystem interface (FSI). The use of the FSI (not shown) may be implemented if, for example, the receiving end of an inter-node bus experiences an error, but the transmission end of the inter-node bus is not affected by the error. An FSI is a one-level interface which provides two way communications. 
         [0033]    Responsive to receiving the alert from the primary system controller, the selected node controllers and the backup system controller generate a dump of debug information (step  212 ). Continuing the example from the illustrated embodiment, node controller  116   a , node controller  116   b , node controller  122   a , node controller  122   b , and system controller  114  each generate a dump of debug information. 
         [0034]    Once the dumps have been generated, the selected node controllers and the backup system controller transmit the dumps of debug information to the primary system controller (step  214 ). From the previous example, node controller  116   a , node controller  116   b , node controller  122   a , node controller  122   b , and system controller  114  each transmit the associated dump to system controller  112 . 
         [0035]    Responsive to receiving the dumps of debug information from each of the selected node controllers and the backup system controller, the primary system controller aggregates the various dumps into a single dataset (step  216 ). The aggregated dataset may be used by a system administrator to analyze the error and determine the root cause and corrective action to take. Continuing the example from the illustrated embodiment, system controller  112  aggregates the data dumps received from node controller  116   a , node controller  116   b , node controller  122   a , node controller  122   b , and system controller  114 . The aggregated dataset may be stored in memory of the primary system controller, or in the memory of any of the service processors providing that the data is accessible to a system administrator of server computer  102 . In this example, the aggregated data set is stored in memory  140  of system controller  112 . 
         [0036]      FIG. 3  illustrates examples of scenarios for synchronizing debug information generation according to a predetermined map, in accordance with an embodiment of the present invention. As mentioned previously with regard to  FIG. 2 , in one embodiment of the present invention, the primary system controller may determine that failure conditions require a simultaneous dump of debug information from multiple service processors by means of a map created at the time of system design. The map defines scenarios of one or more possible failure conditions and the service processors selected to be alerted for each of the associated failure conditions. In various embodiments, a map, or a collection of scenarios, is stored on one or more service processors. In the depicted embodiment, the primary system controller takes note of service processors that are functioning correctly, as well as service processors that experience an error. Scenario 1 depicts the occurrence of an inter-node failure where there is a loss of communication between node  104  and node  106 . In this scenario, the primary system controller, system controller  112 , alerts and requests debug information from the primary and backup node controllers of both node  104  and node  106 , specifically, node controller  116   a , node controller  116   b , node controller  122   a  and node controller  122   b . Scenario 2 depicts the occurrence of a failure of a backup node controller, specifically node controller  122   b  in node  106 . In this scenario, the primary system controller, system controller  112 , alerts and requests debug information from the node controller that experienced the error, i.e. node controller  122   b , as well as the redundant node controller of that node, node controller  122   a , and the backup system controller, system controller  114 . The backup system controller has an equal view of the system as the primary system controller. A failure experienced in a node controller may be, for example, a communication failure between the primary system controller and the failed node controller. In this case, the backup system controller may have a different view of the failure since the backup system controller did not experience the failure. Therefore the debug information dumped by the backup system controller may assist in the failure analysis. Scenario 3 depicts the occurrence of a failure of a backup node controller, specifically node controller  116   b  in node  104 . In this scenario, the primary system controller, system controller  112 , alerts and requests debug information from the node controller that experienced the error, i.e. node controller  116   b , as well as the redundant node controller of that node, node controller  116   a , and the backup system controller, system controller  114 . It should be appreciated that the scenarios depicted in  FIG. 3  are examples of the many scenarios that may exist in a complex, distributed computer system, and do not imply any limitations with regard to scenarios for simultaneous debug information generation for server computer  102 . 
         [0037]      FIG. 4  depicts a block diagram of components of server computer  102  in accordance with an illustrative embodiment of the present invention. It should be appreciated that  FIG. 4  provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made. 
         [0038]    Server computer  102  includes communications fabric  402 , which provides communications between computer processor(s)  404 , memory  406 , persistent storage  408 , communications unit  410 , and input/output (I/O) interface(s)  412 . Communications fabric  402  can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric  402  can be implemented with one or more buses. 
         [0039]    Memory  406  and persistent storage  408  are computer-readable storage media. In this embodiment, memory  406  includes random access memory (RAM)  414  and cache memory  416 . In general, memory  406  can include any suitable volatile or non-volatile computer-readable storage media. 
         [0040]    Aggregated debug datasets are stored in persistent storage  408  for execution and/or access by one or more of the respective computer processors  404  via one or more memories of memory  406 . In this embodiment, persistent storage  408  includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage  408  can include a solid state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer-readable storage media that is capable of storing program instructions or digital information. 
         [0041]    The media used by persistent storage  408  may also be removable. For example, a removable hard drive may be used for persistent storage  408 . Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer-readable storage medium that is also part of persistent storage  408 . 
         [0042]    Communications unit  410 , in these examples, provides for communications with other data processing systems or devices, including resources of server computer  102 . In these examples, communications unit  410  includes one or more network interface cards. Communications unit  410  may provide communications through the use of either or both physical and wireless communications links. Aggregated debug datasets may be downloaded to persistent storage  408  through communications unit  410 . 
         [0043]    I/O interface(s)  412  allows for input and output of data with other devices that may be connected to server computer  102 . For example, I/O interface  412  may provide a connection to external devices  418  such as a keyboard, keypad, a touch screen, and/or some other suitable input device. External devices  418  can also include portable computer-readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention can be stored on such portable computer-readable storage media and can be loaded onto persistent storage  408  via I/O interface(s)  412 . I/O interface(s)  412  also connect to a display  420 . 
         [0044]    Display  420  provides a mechanism to display data to a user and may be, for example, a computer monitor. 
         [0045]    The programs described herein are identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular program nomenclature herein is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. 
         [0046]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.