Correlating multiple disjoint events via an operation identifier

A system and method for correlating asynchronous operations via an operation identifier comprises receiving an originating operation from a first system that indicates a change in the first system and generating a first message with respect to the originating operation. The first message is associated with the operation identifier. The system and method further propagates the first message to a second system, which causes a subsequent operation being associated with the operation identifier to be performed by the second system, and correlates the originating operation and the subsequent operation via the operation identifier.

BACKGROUND

The disclosure relates generally to operation identifiers, and more specifically, to correlating multiple disjoint events executing across a sysplex by use of operation identifiers.

In general, for a multi-system, interconnected environment or sysplex, there are often events and/or operations that cause separate but related synchronous and asynchronous events and/or operations. Today, there is no easy way to identify that these events and/or operations are directly linked together from a functional standpoint. For example, synchronous duplexed primary commands of the sysplex and their resulting secondary commands are generally not identified by their relationship, despite being directly linked. Similarly, secondary commands and secondary operations are also not identified by their relationship.

The inability to identify which events and/or operations are related and correlate those events and/or operations together prevents an identification of root causes of system problems in the sysplex, as well as validating operations of particular system functions, particularly when large numbers of systems are involved in the sysplex.

SUMMARY

According to one embodiment of the present invention, a method for correlating asynchronous operations via an operation identifier that comprises receiving an originating operation from a first system that indicates a change in the first system; generating, by a coupling facility, a first message with respect to the originating operation, the first message being associated with the operation identifier; propagating the first message to a second system, the propagating of the first message causing a subsequent operation to be performed by the second system, the subsequent operation being associated with the operation identifier; and correlating the originating operation and the subsequent operation via the operation identifier.

DETAILED DESCRIPTION

As indicated above, the inability to identify which events and/or operations are related and correlate those events and/or operations together prevents an identification of root causes of system problems in the sysplex. Thus, what is needed is an operation identifier mechanism for correlating multiple disjoint events and/or operations executing across a sysplex.

In general, the operation identifier mechanism is added to the sysplex and used for operations that are asynchronous and occurring on other systems of the sysplex. That is, because the asynchronous operations are related but not really connected to an originating operation, the operation identifier mechanism is carried along through the sysplex such that the full scope of the originating operation may be traced (e.g., the resulting generation of multiple other operation and/or events which were disjoint may be traced). As the operation identifier mechanism propagates through the sysplex, a value of the operation identifier mechanism may be modified to assist in indicating a type of the resulting operation and/or events.

For example, when a first system of a sysplex communicates information to a coupling facility, the coupling facility manages the information that all other systems of the sysplex work with the same information (e.g., the coupling facility employs controls that prevents multiple systems from accessing and updating the same information, such that there is consistency to that information). In this way, the coupling facility understands when a piece of information is in the first system and communicates that change to all other systems. Further, along with keeping the information consistent, the coupling facility has the responsibility of invalidating the information (locally) in the other systems that also have an interest in that information.

With respect to the operation identifier mechanism, when the coupling facility receives an originating operation from the first system that indicates a change in the system, the coupling facility associates an Operation Identifier (“OID”) with that change. Next, based on the responsibility of invalidating, the coupling facility informs all other systems that they have obsolete information via resulting communication to those other systems, with each communication carries the OID for that change. Those communications in turn trigger subsequent operations and/or events, each of which is disjoint, internal to those systems. Yet, those further operations and/or events also include the OID. In this way, despite the originating change operation, resulting communications, and subsequent operations and/or events being asynchronous, the OID correlates these occurrences such that the full scope of the originating change operation may be traced.

Systems and/or computing devices, such as identification sysplex, may employ any of a number of computer operating systems, including, but by no means limited to, versions and/or varieties of the AIX UNIX and z/OS operating system distributed by International Business Machines Corporation of Armonk, N.Y., the Microsoft Windows operating system, the Unix operating system (e.g., the Solaris operating system distributed by Oracle Corporation of Redwood Shores, Calif.), the Linux operating system, the Mac OS X and iOS operating systems distributed by Apple Inc. of Cupertino, Calif., the BlackBerry OS distributed by Research In Motion of Waterloo, Canada, and the Android operating system developed by the Open Handset Alliance. Examples of computing devices include, without limitation, a computer workstation, a server, a desktop, a notebook, a laptop, a network device, or handheld computer, or some other computing system and/or device (e.g., personal digital assistant (PDA) or cellular telephone54A, desktop computer54B, laptop computer54C, and automobile computer system54N ofFIG. 2).

In general, computing devices further may include a processor (e.g., processor114ofFIG. 1) and a computer readable storage medium (e.g., memory128ofFIG. 1), where the processor receives computer readable program instructions, e.g., from the computer readable storage medium, and executes these instructions, thereby performing one or more processes, including one or more of the processes described herein (e.g., identification process).

Computer readable program instructions may be compiled or interpreted from computer programs created using assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the computing device (e.g., a user's computer), partly on the computing device, as a stand-alone software package, partly on a local computing device and partly on a remote computer device or entirely on the remote computer device. In the latter scenario, the remote computer may be connected to the local computer through any type of network (as further described below), 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). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. Computer readable program instructions described herein may also be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network (e.g., any combination of computing devices and connections that support communication). For example, a network may be the Internet, a local area network, a wide area network, a network of interconnected nodes, and/or a wireless network and comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers, and utilize a plurality of communication technologies, such as radio technologies, cellular technologies, etc.

Thus, identification sysplex and method and/or elements thereof may be implemented as computer readable program instructions on one or more computing devices (e.g., computer workstation, server, desktop, etc.), stored on computer readable storage medium associated therewith. A computer program product may comprise such computer readable program instructions stored on computer readable storage medium for carrying and/or causing a processor to carry out the of identification sysplex and method.

The identification sysplex and method and/or elements thereof may also be implemented in a cloud computing architecture; however, it is understood in advance that although this disclosure includes a detailed description on cloud computing, implementation of the teachings recited herein are not limited to a cloud computing environment. Rather, embodiments of the present invention are capable of being implemented in conjunction with any other type of computing environment now known or later developed.

Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources, such as networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service. This cloud model may include at least five characteristics (e.g., on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service), at least three service models (e.g., Software as a Service, Platform as a Service, and Infrastructure as a Service), and at least four deployment models (e.g., private cloud, community cloud, public cloud, and hybrid cloud).

On-demand self-service is an example of a cloud model characteristic where a cloud consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with the service's provider. Broad network access is an example of a cloud model characteristic where capabilities are available over a network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., computing systems as described above). Resource pooling is an example of a cloud model characteristic where the provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to demand. Further, resource pooling provides a sense of location independence in that the consumer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Rapid elasticity is an example of a cloud model characteristic where capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the rapid elasticity capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time. Measured service is an example of a cloud model characteristic where cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported providing transparency for both the provider and consumer of the utilized service.

Platform as a Service (PaaS) is an example of a service model where the capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but has control over the deployed applications and possibly application hosting environment configurations.

Infrastructure as a Service (IaaS) is an example of a service model where the capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).

Private cloud is a cloud infrastructure that is operated solely for an organization. Private cloud may be managed by the organization or a third party and may exist on-premises or off-premises. Community cloud is a cloud infrastructure that is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). Community cloud may be managed by the organizations or a third party and may exist on-premises or off-premises. Public cloud is a cloud infrastructure that is made available to the general public or a large industry group and is owned by an organization selling cloud services. Hybrid cloud is a cloud infrastructure that is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load balancing between clouds).

As shown inFIG. 1, computer system/server112in cloud computing node100is shown in the form of a general-purpose computing device. The components of computer system/server112may include, but are not limited to, one or more processors or processing units (e.g., processor114), a system memory116, and a bus118that couples various system components including memory118to processor114.

Computer system/server112typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server112, and it includes both volatile and non-volatile media, removable and non-removable media.

A program/utility126, having a set (at least one) of program modules128, may be stored in memory116by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules128generally carry out the operations and/or methodologies of embodiments of the invention as described herein.

Computer system/server112may also communicate via Input/Output (I/O) interfaces130and network adapters132, such as with one or more external devices140such as a keyboard, a pointing device, a display142, etc.; one or more devices that enable a user to interact with computer system/server112; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server112to communicate with one or more other computing devices. Such communication can occur. Still yet, computer system/server112can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter132. As depicted, network adapter132communicates with the other components of computer system/server112via bus118. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server112. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archival storage systems, etc.

Referring now toFIG. 2, illustrative cloud computing environment250is depicted. As shown, cloud computing environment250comprises one or more cloud computing nodes100with which local computing devices used by cloud consumers, such as, for example, personal digital assistant (PDA) or cellular telephone254A, desktop computer254B, laptop computer254C, and/or automobile computer system254N may communicate. Nodes100may communicate with one another. They may be grouped (not shown) physically or virtually, in one or more networks, such as private, community, public, or hybrid clouds as described hereinabove, or a combination thereof. This allows cloud computing environment250to offer IaaS, PaaS, and/or SaaS for which a cloud consumer does not need to maintain resources on a local computing device. It is understood that the types of computing devices254A-N shown inFIG. 2are intended to be illustrative only and that computing nodes100and cloud computing environment250can communicate with any type of computing system or computerized device over any type of network and/or network addressable connection (e.g., using a web browser).

Referring now toFIG. 3, a set of operational abstraction layers provided by cloud computing environment250(FIG. 2) is shown. It should be understood in advance that the components, layers, and operations shown inFIG. 3are intended to be illustrative only and embodiments of the invention are not limited thereto.FIG. 3includes a hardware and software layer360, a virtualization layer362, a management layer364, and workloads layer366.

Virtualization layer362provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers; virtual storage; virtual networks, including virtual private networks; virtual applications and operating systems; and virtual clients. In one example, management layer364may provide the operations described below. Resource provisioning provides dynamic procurement of computing resources and other resources that are utilized to perform tasks within the cloud computing environment. Metering and Pricing provide cost tracking as resources are utilized within the cloud computing environment, and billing or invoicing for consumption of these resources. In one example, these resources may comprise application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal provides access to the cloud computing environment for consumers and system administrators. Service level management provides cloud computing resource allocation and management such that required service levels are met. Service Level Agreement (SLA) planning and fulfillment provide pre-arrangement for, and procurement of, cloud computing resources for which a future requirement is anticipated in accordance with an SLA.

Workloads layer366provides examples of operability for which the cloud computing environment may be utilized. Examples of workloads and operations which may be provided from this layer include: mapping and navigation; software development and lifecycle management; virtual classroom education delivery; data analytics processing; transaction processing; and identification processing.

The identification sysplex will be described with reference toFIG. 4, which illustrates an example of a schematic of the identification sysplex400. The identification sysplex includes a first system405(e.g., a z/OS System) that, in accordance with a change to local information413, provides and assigns an OID at an origination of a Send Message (“SMSG”) command407that informs a coupling facility410of the change. The OID is then passed with the SMSG command407across channels of the identification sysplex400to the coupling facility410. Note that the SMSG command407is directed at the coupling facility114, which is at the remote end of a coupling channel from the first system413issuing the SMSG command407.

The coupling facility410is to provide added data (e.g., OID) to an SMSG, and the data may be used by the identification sysplex400for tracing. The OID may also be uniquely described operations and be carried through traces (e.g., SMSG(s), completion operations (e.g., Message Response Block (MRB) is response information provided on completion of that Send Message operation), secondary operations generated due to SMSG(s), and internal events generated due to SMSG(s)/secondary operations. Further, in accordance with the OID, the coupling facility may now utilize operands for the SMSG command/instruction and the MRB operations. Continuing withFIG. 4, the coupling facility410then updates412the information413that is being managed by the coupling facility410for the identification sysplex400in accordance with the SMSG command407(e.g., the originating message). That is, the coupling facility utilizes a Coupling Facility Control Code (“CFCC”) to analyze the SMSG command407. The coupling facility410next originates secondary commands414(e.g., signal channel buffer (“SCB”) instructions) that include and pass along the OID to a second system415accordance with the now current information413. For instance, the coupling facility417uses the SCB instruction to return the response as well as initiating other operations that involved sending information to other systems (e.g., system415) connected via the coupling channels.

For instance, based on who the first system405is, where the originating SMSG command407came from, and what the originating SMSG command407instructs the coupling facility to do, the coupling facility410propagates information413to other systems (e.g.,415) via SCB instructions414that include the OID. The second system415in response to receiving the secondary command414, as a result, updates417local information418and assigns the OID to those resulting operations.

The identification sysplex will be described with reference toFIG. 5, which illustrates an example of a process flow500of the identification sysplex400.

The process flow500starts in block505where at the initiation of an operation at a first system405by the SMSG instruction407, a new field is defined in an operand Message Operation Block (“MOB”) and set with an identifier (e.g., OID) for the operation by the identification sysplex400. At block510, on execution of the SMSG instruction407, a value of this field is passed across the channel interface and delivered to the Channel Buffer Operation Block (“CBOB”) of the coupling facility410at the receiving side of the channel interface. Next, at block515, the coupling facility410utilizes a CFCC to read and place the value in potentially multiple additional SCB instruction operands (e.g., SCB instructions414).

Further, at block520, the OID is passed bask across the channels to the first system405and is utilize for information that can be placed in numerous element traces. Examples of traces include z/OS traces, millicode level traces for coupling operations and events, i390/iop code traces for coupling related operations and events, and CFCC traces. For instance, the SCB is used to respond to the original SMSG operation where the value is passed back across the channel to complete the initiating SMSG operation at the first system and to initiate one or more secondary operations by the CFCC to either additional systems or other coupling facility systems. In both cases, the operation identifier value is passed across the channels allowing elements at both the originator end of the channel and the recipient end of the channel to have access to this value for use in saving within tracing information. By having this information available within these traces, operations that are directly related to one another but otherwise distinctly independent, asynchronous, and across many interconnected but otherwise independent systems can be readily identified as directly associated with each other by having the common operation identifier value within the trace.

The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein. For instance, by selection and use of the operation identifier mechanism, originating and/or primary operations and all secondary operations associated with the primary are traceable to enable the acquisition of the full scope of the originating and/or primary operations, such that each trace further sortable via operation identifier mechanism to access all information.