Parallel Task Initialization on Dynamic Computing Resources

The method for parallel task initialization on dynamic computational resources addresses the challenges of scheduling and initializing jobs by enabling efficient communication and execution across dynamic resources, thereby reducing job initialization time and improving resource utilization efficiency.

JP7663299B2Active Publication Date: 2025-04-16INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023515690
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-10-13
Filing Date
2021-10-12
Publication Date
2025-04-16
Estimated Expiration
2041-10-12

AI Technical Summary

Technical Problem

Current orchestration frameworks face challenges in efficiently scheduling and initializing jobs on dynamic computing resources, leading to increased latency and job initialization time due to the need for extensive computational resource configuration and communication between tasks.

Method used

The proposed solution involves a method for parallel task initialization on dynamic computational resources, where a root process manager monitors the availability of computational resources and generates local process managers to trigger task execution, providing connection information for tasks across resources to enable efficient communication and reduce waiting times.

Benefits of technology

This approach reduces the overall job initialization time by allowing tasks to execute in parallel and communicate effectively, even as new computational resources become available, thereby improving the efficiency of dynamic resource utilization.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007663299000001
    Figure 0007663299000001
  • Figure 0007663299000002
    Figure 0007663299000002
  • Figure 0007663299000003
    Figure 0007663299000003
Patent Text Reader

Abstract

Execution of a first task is triggered on a first computational resource, and execution of a portion of the first task is conditional on execution of a second task on a second computational resource. A status indicator of the second task is monitored, the status indicator indicating whether the second task is currently executing on the second computational resource. In response to the status indicator indicating that the second task is not currently executing, execution of the portion of the first task is paused. A change in the status indicator is determined to have occurred. In response to the determination, received connection information for the second task is forwarded to the first task. Execution of the portion of the first task is retriggered on the first computational resource.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to methods, systems, and computer program products for using dynamic computing resources, and more particularly, to methods, systems, and computer program products for parallel task initialization on dynamic computing resources.

[0002] Computational resources provide data processing power. Some non-limiting examples of computational resources include a physical computer system, a virtual machine (VM) or logical partition that virtualizes a physical computer system, a container running on a VM, a virtual or physical cluster of computer systems, and a virtual or physical resource pool.

[0003] A computing environment often includes multiple computing resources and software that runs on these resources. In computer system administration, orchestration is the automated configuration, coordination, and management of computer systems and software. Orchestration automates a process or workflow that typically involves many steps across multiple heterogeneous systems. An orchestration framework is a software tool that performs orchestration. One of the functions of an orchestration framework is to configure and provide computing resources for use when the resources are needed, and to remove or reconfigure computing resources when the resources are no longer needed. Reconfigurable computing resources that are provided on demand are also called dynamic computing resources. Kubernetes is a non-limiting example of an orchestration framework; other orchestration frameworks are currently available. (Kubernetes is a registered trademark of the Linux Foundation in the United States and other countries.)

[0004] A job is a unit of data processing work. Jobs are often executed using parallel processing, where parts of a job are distributed across multiple computing resources and run in parallel with each other. A task is a single program instance running on a single computing resource. Thus, a job is executed as multiple tasks. During the execution of a job, tasks communicate status and processed data to each other. Message Passing Interface (MPI) and Process Management Interface-eXascale (PMIx) are two non-limiting examples of interfaces by which tasks communicate with each other; other task communication interfaces are currently available.

[0005] A process manager manages tasks within a job, including initializing tasks on a computing resource and transferring communication information between tasks. In some implementations, a local process manager manages tasks that run on a particular computing resource, and a root process manager manages one or more local process managers, each of which manages tasks that run on a different computing resource. The root process manager and the one or more local process managers form a process manager network. The process managers in a process manager network communicate with each other. Summary of the Invention

[0006] Exemplary embodiments provide methods, systems, and computer program products. One embodiment includes a method for triggering execution of a first task on a first computational resource, where execution of a portion of the first task is conditional on a second computational resource being executed on the second computational resource. One embodiment monitors a status indicator of the second task, where the status indicator indicates whether the second task is currently executing on the second computational resource. One embodiment pauses execution of the portion of the first task in response to the status indicator indicating that the second task is not currently executing. One embodiment determines that a change in the status indicator has occurred. In response to determining, one embodiment forwards the received connection information related to the second task to the first task. One embodiment retriggers execution of the portion of the first task on the first computational resource.

[0007] One embodiment includes a computer usable program product that includes one or more computer readable storage devices and program instructions stored in at least one of the one or more storage devices.

[0008] One embodiment includes a computer system including one or more processors, one or more computer readable memories, and one or more computer readable storage devices, and program instructions stored in at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more memories. [Brief description of the drawings]

[0009] BRIEF DESCRIPTION OF THE DRAWINGS Certain novel features which are believed to be characteristic of the invention are set forth in the appended claims, however the invention itself, together with its preferred mode of use, further objects and advantages, will best be understood by reference to the following detailed description of illustrative embodiments when read in conjunction with the accompanying drawings.

[0010] [Figure 1]1 illustrates a block diagram of a network of data processing systems in which illustrative embodiments may be implemented;

[0011] [Diagram 2] 1 illustrates a block diagram of a data processing system in which illustrative embodiments may be implemented;

[0012] [Diagram 3] 1 illustrates a block diagram of an exemplary configuration for parallel task initialization on dynamic computing resources according to an exemplary embodiment;

[0013] [Figure 4] 1 illustrates a block diagram of an exemplary configuration for parallel task initialization on dynamic computing resources according to an exemplary embodiment;

[0014] [Diagram 5] 1 illustrates an example of parallel task initialization on a dynamic computing resource according to an exemplary embodiment;

[0015] [Figure 6] 1 illustrates an example of parallel task initialization on a dynamic computing resource according to an exemplary embodiment;

[0016] [Figure 7] 1 illustrates a flowchart of an exemplary process for parallel task initialization on dynamic computing resources according to an exemplary embodiment;

[0017] [Figure 8] 1 illustrates a flowchart of an exemplary process for parallel task initialization on dynamic computing resources according to an exemplary embodiment;

[0018] [Figure 9] 1 illustrates a cloud computing environment in accordance with an embodiment of the present invention; and

[0019] [Figure 10] 3 illustrates abstraction model layers according to one embodiment of the present invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0020] The exemplary embodiments recognize that an orchestration framework currently schedules a job for execution and assigns computational resources to the job. In a data processing environment where computational resources are configured and available only as needed, the computational resources assigned to a scheduled job may need to be configured and initialized before being used to execute a task. Once all of the assigned computational resources are ready for task execution, the task is started on each computational resource. The tasks are executed in parallel and communicate with each other. The exemplary embodiments also recognize that the more computational resources required to execute a job, the longer the latency until all computational resources are available and the job actually starts executing. As a result, there is a need to reduce the time between scheduling a job for execution and the job actually starts executing on the assigned computational resources.

[0021] The illustrative embodiments recognize that currently available tools or solutions do not address or provide adequate solutions to these needs. The illustrative embodiments used to describe the present invention generally address and solve the above problems, as well as other problems associated with parallel task initialization on dynamic computing resources.

[0022] An embodiment may be implemented as a software application. An application implementing an embodiment may be configured as a modification to an existing process manager, as a separate application that operates in conjunction with an existing process manager, as a standalone application, or any combination thereof.

[0023] In particular, some example embodiments provide a method for triggering execution of a first task on a first computational resource and monitoring the execution status of the second task without waiting for the execution of the second task to begin on the second computational resource, such that when the execution of the first task reaches a portion that requires the second task to be executed, the first task waits, if necessary, until the second task is executed and then continues execution.

[0024] First, the orchestration framework schedules the execution of a job, allocates a set of computing resources to the job, and transfers data about the job and the allocated set of computing resources to the root process manager. In a data processing environment where computing resources are configured and available only when needed, the allocated computing resources may need to be configured and initialized before being used to execute tasks. Thus, the orchestration framework configures and initializes the computing resources allocated to the job and notifies the embodiment implemented in the root process manager when each computing resource is available to execute tasks within the job.

[0025] An embodiment implemented in the root process manager receives event notifications that computational resources are available for task execution. In one embodiment, the root process manager subscribes to computational resource discovery events by notifying the orchestration framework of certain types of events that the root process manager should be notified of. Another embodiment does not employ a subscription implementation, and instead the root process manager receives broadcast notifications regarding the availability of allocated computational resources. Another embodiment receives computational resource notifications from a source other than the orchestration framework.

[0026] When an embodiment implemented in a root process manager receives an event notification that a computational resource is available for task execution, the embodiment spawns a local process manager on the newly available computational resource to provide connection information for tasks that are part of the current job and are already running on other computational resources. In an embodiment, the connection information for the tasks varies depending on the networking environment and other factors. As one non-limiting example, in an InfiniBand network, task connection information between two tasks includes a queue pair (communication endpoints) and a local ID (assigned device identifier). (InfiniBand is a registered trademark of System I / O, Inc. in the United States and other countries.) The availability of connection information for a particular task serves as a status indicator that the task is currently running on the computational resource. Conversely, the absence of connection information for a particular task serves as a status indicator that the task is not currently running on the computational resource.

[0027] An embodiment implemented in the newly created local process manager triggers at least one local task for execution on the newly available computational resource. The embodiment provides the local task with connection information about tasks already running on other computational resources, and provides other process managers running on other computational resources with connection information about the local task. As a result, all tasks in the currently running job can communicate data with each other using the connection information.

[0028] At a later point during the computational resource configuration, an embodiment implemented in the root process manager receives an event notification that a new computational resource is available for task execution and spawns a second local process manager on the new computational resource. The second local process manager provides task connection information for its local tasks to a process manager network that includes the first local process manager. In this manner, tasks executing on the first computational resource can communicate data with tasks currently executing on the new computational resource. As a result, tasks executing on the first computational resource do not need to wait for the new computational resource to become available before they can begin execution, reducing overall job initialization time.

[0029] At a later point during the computational resource configuration, the task running on the first computational resource needs to communicate with the third task to continue execution. If the first task has communication information for the third task, then the third task is running on the computational resource (local or remote) and can communicate with the first task. Thus, the first task continues to execute. On the other hand, if the first task does not have communication information for the third task, then the third task is not yet running on the computational resource and cannot communicate with the first task. As a result, the first task pauses execution. Then, at a later point during the computational resource configuration, the embodiment implemented in the root process manager receives an event notification that a third new computational resource is available for task execution and creates a third local process manager on the third computational resource. The third local process manager provides task connection information for its local tasks, including the third task that the first task is waiting for, to the process manager network. The first local process manager receives the communication information for the third task and forwards the information to the first task to re-trigger execution of the first task since the third task is available. As a result, the task running on the first computational resource had to wait for the third new computational resource to become available before continuing, but the first task was able to perform some processing, reducing the overall job initialization time.

[0030] At a later point during the computational resource configuration, the task executing on the first computational resource needs to communicate with the fourth task to continue execution. If the first task has communication information for the fourth task, then the first task continues to execute. On the other hand, if the first task does not have communication information for the fourth task, then the fourth task is not yet executing on the computational resource. As a result, the first task pauses execution until connection information for the fourth task executing on the fourth computational resource becomes available. As a result, depending on the need for the task to execute on the first computational resource and when additional computational resources are available, the task may need to pause and resume execution zero or more times while waiting for computational resources to become available.

[0031] The approach of parallel task initialization on dynamic computational resources described herein is not available in currently available methods in the art of task and computational resource management related endeavors. The method of the embodiments described herein, when implemented to execute on a device or data processing system, comprises a significant advance in the capabilities of that device or data processing system in triggering execution of a first task on a first computational resource without waiting for the second task to begin execution on the second computational resource, and in monitoring the execution status of the second task. When the execution of the first task reaches a portion that requires the second task to be executed, the first task waits, if necessary, until the second task is executed, and then continues execution.

[0032] The exemplary embodiments are described by way of example only with respect to particular types of computing resources, orchestration frameworks, process managers, jobs, tasks, inter-task communication information, responses, devices, data processing systems, environments, components, and applications. Any particular manifestations of these and other similar artifacts are not intended as limitations of the invention. Any suitable manifestations of these and other similar artifacts may be selected within the scope of the exemplary embodiments.

[0033] Furthermore, the exemplary embodiments may be implemented with respect to any type of data, data source, or access to a data source via a data network. Within the scope of the present invention, any type of data storage device may provide data to an embodiment of the present invention, either locally at a data processing system or via a data network. Where an embodiment is described using a mobile device, within the scope of the exemplary embodiments, any type of data storage device suitable for use with a mobile device may provide data to such an embodiment, either locally at the mobile device or via a data network.

[0034] Exemplary embodiments are described using specific code, designs, architectures, protocols, layouts, diagrams, and tools for example purposes only, and are not limited to the exemplary embodiments. Furthermore, exemplary embodiments are described in some instances using specific software, tools, and data processing environments for clarity of explanation, for example purposes only. Exemplary embodiments may be used with other equivalent or similar purpose structures, systems, applications, or architectures. For example, other equivalent mobile devices, structures, systems, applications, or architectures therefor may be used with such embodiments of the present invention within the scope of the present invention. Exemplary embodiments may be implemented in hardware, software, or a combination thereof.

[0035] The examples in this disclosure are used for clarity of explanation only and are not intended to be limiting of the exemplary embodiments. Additional data, operations, actions, tasks, activities, and operations are contemplated by this disclosure and are contemplated within the scope of the exemplary embodiments.

[0036] Any advantages listed herein are examples only and are not intended to limit the example embodiments. Additional or different advantages may be realized depending on the particular example embodiment. Moreover, a particular example embodiment may have some, all, or none of the advantages listed above.

[0037] Although this disclosure includes detailed descriptions of cloud computing, it should be understood that implementation of the teachings described herein is not limited to a cloud computing environment. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0038] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0039] The characteristics are as follows:

[0040] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider.

[0041] Broad network access: The capabilities are available across the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (eg, cell phones, laptops, and PDAs).

[0042] Resource Pooling: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. There is location independence in that consumers generally have no control or knowledge over the exact location of the provided resources, but it may be possible to specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0043] Rapid Elasticity: This capacity can be rapidly and elastically provisioned, in some cases automatically, to rapidly scale out, and rapidly released and rapidly scale in. To the consumer, it often feels like there is unlimited capacity available to provision, and any amount can be purchased at any time.

[0044] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a 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 to both providers and consumers of the services being utilized.

[0045] The service model is as follows:

[0046] Software as a Service (SaaS): The capability offered to the consumer is to use a provider's application running on a cloud infrastructure. The application is accessible from a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0047] Platform as a Service (PaaS): The ability offered to a consumer is to deploy applications that the consumer has created or acquired, written using programming languages ​​and tools supported by the provider, on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the application hosting environment configuration.

[0048] Infrastructure as a Service (IaaS): The ability provided to a consumer is to provision processing, storage, network, and other basic computing resources, where the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, deployed applications, and possibly limited control of selected networking components (e.g., host firewalls).

[0049] The deployment models are as follows:

[0050] Private Cloud: This cloud infrastructure operates solely for an organization. It may be managed by that organization or a third party and may exist on-premise or off-premise.

[0051] Community Cloud: This cloud infrastructure is shared by several organizations and supports a particular community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). The community cloud may be managed by those organizations or a third party and may exist on-premise or off-premise.

[0052] Public Cloud: The cloud infrastructure is made available to the general public or large industry entities and is owned by organizations that sell cloud services.

[0053] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain separate entities but are bound together by standard or proprietary technologies that allow portability of data and applications (e.g., cloud bursting for load balancing between clouds).

[0054] Cloud computing environments are service-oriented with an emphasis on statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0055] Referring now to the figures, and in particular to Figures 1 and 2, which are exemplary diagrams of data processing environments in which example embodiments may be implemented. Figures 1 and 2 are only examples and are not intended to assert or imply any limitation with respect to the environments in which different embodiments may be implemented. Particular implementations may make many modifications to the depicted environments based on the following description.

[0056] 1 illustrates a block diagram of a network of data processing systems in which an exemplary embodiment may be implemented. Data processing environment 100 is a network of computers in which an exemplary embodiment may be implemented. Data processing environment 100 includes network 102. Network 102 is the medium used to provide communications links between various devices and computers connected together within data processing environment 100. Network 102 may include connections, such as wired or wireless communication links, or fiber optic cables.

[0057] Client or server are only exemplary roles for particular data processing systems connected to network 102 and are not intended to exclude other configurations or roles of these data processing systems. Server 104 and server 106 are coupled to network 102 along with storage unit 108. Software applications may execute on any computer in data processing environment 100. Clients 110, 112, and 114 are also coupled to network 102. A data processing system such as server 104 or 106 or client 110, 112, or 114 may contain data and may have software applications or software tools executing thereon.

[0058] By way of example only, and without implying any limitation to such an architecture, Figure 1 illustrates certain components that may be used in an exemplary implementation of one embodiment. For example, servers 104 and 106 and clients 110, 112, 114 are illustrated as servers and clients by way of example only, and without implying any limitation to a client-server architecture. As another example, one embodiment may be distributed across several data processing systems and data networks as shown, while another embodiment may be implemented on a single data processing system within the scope of an exemplary embodiment. Data processing systems 104, 106, 110, 112, and 114 also represent exemplary nodes in clusters, partitions, and other configurations suitable for implementing an embodiment.

[0059] Device 132 is an example of a device described herein. For example, device 132 may take the form of a smartphone, a tablet computer, a laptop computer, a stationary or portable form of client 110, a wearable computing device, or any other suitable device. Any software application described in FIG. 1 as executing in another data processing system may be configured to execute in device 132 in a similar manner. Any data or information stored or generated in another data processing system in FIG. 1 may be configured to be stored or generated in device 132 in a similar manner.

[0060] Application 105 implements one embodiment described herein. Application 105 executes on any of servers 104 and 106, clients 110, 112, and 114, and device 132. Parts of application 105 may be implemented within a remote process manager, a local process manager, or a task, and different parts of application 105 may execute on different systems.

[0061] The servers 104 and 106, the storage unit 108, the clients 110, 112 and 114, and the device 132 may be coupled to the network 102 using wired connections, wireless communication protocols, or other suitable data connections. The clients 110, 112 and 114 may be, for example, personal computers or network computers.

[0062] In the shown example, server 104 may provide data such as boot files, operating system images, and applications to clients 110, 112, and 114. Clients 110, 112, and 114 may be clients of server 104 in this example. Clients 110, 112, 114, or some combination thereof, may include their own data, boot files, operating system images, and applications. Data processing environment 100 may include additional servers, clients, and other devices not shown.

[0063] In the depicted example, data processing environment 100 may be the Internet. Network 102 may represent a collection of networks and gateways that communicate with one another using Transmission Control Protocol / Internet Protocol (TCP / IP) and other protocols. At the core of the Internet is a backbone of data communication links between major nodes or host computers, including thousands of commercial, governmental, educational, and other computer systems that route data and messages. Of course, data processing environment 100 may also be implemented as a number of different types of networks, such as, for example, an intranet, a local area network (LAN), or a wide area network (WAN). Figure 1 is intended as an example, and not as an architectural limitation for the different illustrative embodiments.

[0064] Among other uses, the data processing environment 100 may be used to implement a client-server environment in which the exemplary embodiments may be implemented. A client-server environment allows software applications and data to be distributed across a network such that applications function by using interactivity between client and server data processing systems. The data processing environment 100 may also employ a service-oriented architecture in which interoperable software components distributed across a network may be packaged as a coherent business application. The data processing environment 100 may take the form of a cloud, employing a cloud computing model of service delivery that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the provider of the service.

[0065] Referring to Figure 2, this figure illustrates a block diagram of a data processing system in which an exemplary embodiment may be implemented. Data processing system 200 is an example of a computer, such as servers 104 and 106 or clients 110, 112, and 114 in Figure 1, or another type of device in which computer usable program code or instructions implementing processes may be located for the exemplary embodiments.

[0066] Data processing system 200 may also represent a data processing system or configuration therein, such as data processing system 132 of FIG. 1, in which computer usable program code or instructions implementing the processes of the exemplary embodiments may be located. Data processing system 200 is described as a computer by way of example only, and not by way of limitation. Implementations in the form of other devices, such as device 132 of FIG. 1, may modify data processing system 200, for example, by adding a touch interface, or even remove certain illustrated components from data processing system 200, without departing from the general description of the operation and functionality of data processing system 200 described herein.

[0067] In the illustrated example, data processing system 200 employs a hub architecture including a northbridge and memory controller hub (NB / MCH) 202 and a southbridge and input / output (I / O) controller hub (SB / ICH) 204. A processing unit 206, a main memory 208, and a graphics processor 210 are coupled to northbridge and memory controller hub (NB / MCH) 202. Processing unit 206 may include one or more processors and may be implemented using one or more heterogeneous processor systems. Processing unit 206 may be a multi-core processor. Graphics processor 210 may be coupled to NB / MCH 202 through an accelerated graphics port (AGP) in certain implementations.

[0068] In the illustrated example, a local area network (LAN) adapter 212 is coupled to the south bridge and I / O controller hub (SB / ICH) 204. An audio adapter 216, a keyboard and mouse adapter 220, a modem 222, a read-only memory (ROM) 224, a universal serial bus (USB) and other ports 232, and a PCI / PCIe device 234 are coupled to the south bridge and I / O controller hub 204 through a bus 238. A hard disk drive (HDD) or solid state drive (SSD) 226 and a CD-ROM 230 are coupled to the south bridge and I / O controller hub 204 through a bus 240. The PCI / PCIe device 234 may include, for example, an Ethernet adapter, an add-in card, and a PC card for a notebook computer. PCI uses a card bus controller while PCIe does not. The ROM 224 may be, for example, a flash binary input / output system (BIOS). Hard disk drive 226 and CD-ROM 230 may use, for example, integrated device electronics (IDE), serial advanced technology attachment (SATA) interfaces or variations thereof, such as external SATA (eSATA) and micro SATA (mSATA). Super I / O (SIO) devices 236 may be coupled to south bridge and I / O controller hub (SB / ICH) 204 via bus 238.

[0069] Memories such as main memory 208, ROM 224, or flash memory (not shown) are some examples of computer usable storage devices. Hard disk drives or solid state drives 226, CD-ROM 230, and other similarly usable devices are some examples of computer usable storage devices that include computer usable storage media.

[0070] An operating system executes on the processing unit 206. The operating system coordinates and provides control of various components within the data processing system 200 of FIG. 2. The operating system may be a commercially available operating system for any type of computing platform, including, but not limited to, server systems, personal computers, and mobile devices. An object-oriented or other type of programming system may work with the operating system and provide calls to the operating system from programs or applications executing on the data processing system 200.

[0071] 1 may be located on a storage device, for example in the form of code 226A on hard disk drive 226, and loaded into at least one of the one or more memories, for example main memory 208, for execution by processing unit 206. The processes of the illustrative embodiments may be executed by processing unit 206 using computer-implemented instructions, which may be located in a memory, for example main memory 208, read-only memory 224, or one or more peripheral devices.

[0072] Furthermore, in one case, code 226A may be downloaded from remote system 201B over network 201A while similar code 201C is stored in storage device 201D, and in another case, code 226A may be downloaded to remote system 201B over network 201A while the downloaded code 201C is stored in storage device 201D.

[0073] The hardware in Figures 1-2 may vary depending on the implementation. Other internal hardware or peripheral devices, such as flash memory, equivalent non-volatile memory, or optical disk drives, etc., may be used in addition to or in place of the hardware depicted in Figures 1-2. The processes of the illustrative embodiments may also be applied to multiprocessor data processing systems.

[0074] In some illustrative examples, data processing system 200 may be a personal digital assistant (PDA) configured with flash memory to provide non-volatile memory for storing operating system files or user generated data, or a combination thereof. The bus system may include one or more buses, such as a system bus, an I / O bus, and a PCI bus. Of course, the bus system may be implemented using any type of communications fabric or architecture that provides for a transfer of data between different components or devices attached to the fabric or architecture.

[0075] The communications unit may include one or more devices, such as a modem or a network adapter, used to transmit and receive data. The memory may be, for example, main memory 208 or a cache, such as that found in the northbridge and memory controller hub 202. The processing unit may include one or more processors or CPUs.

[0076] 1-2 and above are not meant to imply architectural limitations. For example, data processing system 200 may also be a tablet computer, a laptop computer, or a telephone device in addition to taking the form of a mobile device or a wearable device.

[0077] When a computer or data processing system is described as a virtual machine, virtual device, or virtual component, the virtual machine, virtual device, or virtual component operates in the manner of data processing system 200 using virtualized artifacts of some or all of the components depicted in data processing system 200. For example, in a virtual machine, virtual device, or virtual component, processing unit 206 appears as a virtualized instance of all or some of the hardware processing unit 206 available in the host data processing system, main memory 208 appears as a virtualized instance of all or a portion of main memory 208 that may be available in the host data processing system, and disk 226 appears as a virtualized instance of all or a portion of disk 226 that may be available in the host data processing system. The host data processing system in such a case is represented by data processing system 200.

[0078] Referring to Figure 3, this figure illustrates a block diagram of an exemplary configuration for parallel task initialization on dynamic computing resources according to an exemplary embodiment. Application 300 is an example of application 105 of Figure 1 and may be executed on any of servers 104 and 106, clients 110, 112 and 114, and device 132 of Figure 1.

[0079] The root process manager 310 receives data about a job and its assigned set of computing resources from the orchestration framework or another source. Similarly, the root process manager 310 receives event notifications that computational resources are available for task execution. One implementation of the root process manager 310 subscribes to computational resource discovery events by notifying an orchestration framework or other event source of a particular type of event that the root process manager 310 should be notified of. Another implementation of the root process manager 310 does not employ a subscription implementation, but instead receives broadcast notifications regarding the availability of allocated computational resources.

[0080] When the root process manager 310 receives an event notification that a computational resource is available for task execution, the root process manager 310 spawns a local process manager on the newly available computational resource and provides connection information for tasks that are part of the current job and are already running on other computational resources.

[0081] The newly created local process manager 320 triggers at least one local task for execution on the newly available computational resource. The local process manager 320 provides the local task with connectivity information about tasks already running on other computational resources, and provides connectivity information about the local task to other instances of the local process manager 320 and the root process manager 310 running on the other computational resources. As a result, all tasks in the currently running job can communicate with each other.

[0082] At a later point during the computational resource configuration, the root process manager 310 receives an event notification that a new computational resource is available for task execution, and creates a second instance of the local process manager 320 on the new computational resource. The second instance of the local process manager 320 provides task connection information for its local tasks to a process manager network that includes the first instance of the local process manager 320. In this manner, tasks executing on the first computational resource can communicate with tasks currently executing on the new computational resource.

[0083] Task modules 330 are tasks that are triggered for execution by and managed by the local process manager 320 . At a later point during the computational resource configuration, the task module 330 executing on the first computational resource needs to communicate with the third task to continue execution. If the task module 330 has communication information for the third task, the third task is executing on the computational resource (local or remote) and can communicate with the task module 330. Thus, the task module 330 continues to execute. On the other hand, if the task module 330 does not have communication information for the third task, the third task is not yet executing on the computational resource and cannot communicate with the first task. As a result, the task module 330 pauses execution. Then, at a later point during the computational resource configuration, the root process manager 310 receives an event notification that a third new computational resource is available for task execution, and creates a third instance of the local process manager 320 on the third computational resource. The third instance of the local process manager 320 provides task connection information for its local tasks, including the third task that the task module 330 is waiting for, to the process manager network. The first instance of the local process manager 320 receives the communication regarding the third task and forwards the communication to the task module 330 to retrigger execution of the task module 330 so long as the third task is available.

[0084] 4, which illustrates a block diagram of an exemplary configuration for parallel task initialization on dynamic computing resources according to an exemplary embodiment. In particular, FIG. 4 illustrates further details of local process manager 320 in FIG.

[0085] In the newly created instance of the local process manager 320 on the newly available computational resource, the task generation module 410 triggers at least one local task for execution. The task data reception manager 420 provides the local task with connection information about tasks already running on other computational resources, and the task data notification manager 430 provides the connection information about the local task to other process managers running on other computational resources. As a result, all tasks in the currently running job can communicate with each other.

[0086] 5, which illustrates an example of parallel task initialization on dynamic computing resources according to an exemplary embodiment. This example may be performed using application 300 of FIG. 3. Root process manager 310 is the same as root process manager 310 of FIG.

[0087] The root process manager 310 receives job and allocated computing resource data 510 from the orchestration framework or another source. Similarly, the root process manager 310 receives a computational resource available event 520, which indicates that a computational resource is available to execute a task.

[0088] When the root process manager 310 receives the event 520, it generates a create event 530 to create a local process manager on the newly available computing resource, providing connection information for tasks that are part of the current job and are already running on other computing resources.

[0089] 6, an example of parallel task initialization on dynamic computing resources according to an exemplary embodiment may be performed using application 300 of FIG.

[0090] At time 602, during computational resource configuration, a local process manager instance 616 has just been created on a newly available computational resource. At event 620, connection information for tasks that are part of the current job and that are already running on other computational resources is passed from the process manager network 610 to the local process manager instance 616. At event 622, the local process manager instance 616 creates a local task, task 620, and triggers task 620 for execution. At event 624, task 620 provides connection information for itself to the local process manager instance 616, and at event 626, the local process manager instance 616 provides the connection information for task 620 to the process manager network 610 for relay to other process managers running on other computational resources. As a result, all tasks in a currently running job can communicate with each other.

[0091] At a later point during the computational resource configuration, time 604, the root process manager receives an event notification that a new computational resource is available for task execution, and spawns a second local process manager on the new computational resource. The second local process manager provides task connection information for its local tasks to the process manager network 610. At event 630, the new task connection information is provided to the local process manager instance 616. At event 632, the local process manager instance 616 forwards the new task connection information to task 620. In this manner, task 620 can communicate with tasks currently executing on the new computational resource.

[0092] At a later time 606 during the computational resource configuration, task 620 needs to communicate with a third task to continue execution. If task 620 has communication information for the third task, then the third task is running on the computational resource (local or remote) and can communicate with task 620, and task 620 continues to execute. FIG. 6 shows an alternative where task 620 does not have communication information for the third task, because the third task is not yet running on the computational resource and cannot communicate with task 620. As a result, at event 640, task 620 pauses execution and reports this to the local process manager instance 616. Then, at a later time during the computational resource configuration, a third new computational resource becomes available for task execution, and a third local process manager is spawned on the third computational resource. The third local process manager provides task connection information for its local tasks, including the third task for which the first task is waiting, to the process manager network 610. At event 642, the local process manager instance 616 receives communication information regarding the third task and, at event 644, forwards that information to task 620 to retrigger execution of task 620 so long as the third task is available.

[0093] 7, which illustrates a flow chart of an example process for parallel task initialization on dynamic computing resources according to an example embodiment. In the application 300 of FIG. 3, the process 700 may be implemented.

[0094] In block 702, an application triggers a first task, the portion of which is conditional on the execution of a second task on a second resource, for execution on a first computational resource. In block 704, the application determines whether the second task is currently executing. If so (the "YES" path of block 704), then in block 706, the application completes execution of its portion and then terminates. If not (the "NO" path of block 704), then in block 708, the application blocks execution of its portion until notification is received that the second task is currently executing. In block 710, the application forwards the received connection information for the second task executing on the second computational resource to the first task. In block 712, the application retriggers execution of its portion. The application then terminates.

[0095]

[0046] Referring to Figure 8, this figure illustrates a flow chart of an example process for parallel task initialization on dynamic computing resources according to an example embodiment. In the application 300 of Figure 3, the process 800 may be implemented.

[0096] At block 802, the application determines that connection information is not available for a task to be executed on a remote computational resource. At block 804, the application notifies the process manager that it needs connection information. At block 806, the application checks whether the connection information has been received. If not (the "NO" path out of block 806), the application remains at block 806 waiting for the connection information. If not (the "YES" path out of block 806), at block 808, the application resumes execution using the connection information to communicate with the task. The application then terminates.

[0097] 9, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers (e.g., personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automobile computer systems 54N, etc.) can communicate. The nodes 10 may communicate with each other. The nodes 10 may be physically or virtually grouped in one or more networks (not shown), such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as described herein above. This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or combinations thereof, as a service for which the cloud consumer does not need to maintain resources on the local computing device. It should be understood that the types of computing devices 54A-N shown are intended as examples only, and that the computing node 10 and cloud computing environment 50 can communicate with any type of computerized device through any type of network or network-addressable connection (e.g., using a web browser) or both.

[0098] 10, there is shown a set of functional abstraction layers provided by cloud computing environment 50 (FIG. 9). It should be understood up front that the components, layers, and functions shown are intended to be illustrative only and that embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0099] Hardware and software layer 60 comprises hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, software components comprise network application server software 67 and database software 68.

[0100] The virtualization layer 70 provides an abstraction layer within which instances of virtual entities may be provided: virtual servers 71 ; virtual storage 72 ; virtual networks, including virtual private networks 73 ; virtual applications and operating systems 74 ; and virtual clients 75 .

[0101] In one example, management layer 80 may provide the functions described below: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, and protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangement and procurement of cloud computing resources where future requirements are anticipated according to SLAs.

[0102] Workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Non-limiting examples of workloads and functions that may be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics processing 94, transaction processing 95, and application selection based on synthetic system fault generation software 96.

[0103] Thus, computer-implemented methods, systems or apparatus, and computer program products are provided in exemplary embodiments for parallel task initialization on dynamic computing resources, and other related features, functions, or operations. Where an embodiment, or portions thereof, are described with respect to a certain type of device, computer-implemented method, system, or apparatus, the computer program product, or portions thereof, is adapted or configured for use with suitable and equivalent manifestations of that type of device.

[0104] Where an embodiment is described as being implemented in an application, provision of the application in a Software as a Service (SaaS) model is contemplated within the scope of the exemplary embodiment. In the SaaS model, the capabilities of the application implementing an embodiment are provided to users by running the application in a cloud infrastructure. Users can access the application through a thin-client interface, such as a web browser (e.g., web-based email) or other lightweight client application, using a variety of client devices. Users do not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage of the cloud infrastructure. In some cases, users may not even manage or control the capabilities of the SaaS application. In some other cases, the SaaS implementation of the application may allow for possible exceptions to limited user-specific application configuration settings.

[0105] The present invention may be a system, method, or computer program product, or combination thereof, integrated at any conceivable level of technical detail. The computer program product may include a computer-readable storage medium having computer-readable program instructions for causing a processor to carry out aspects of the present invention.

[0106] A computer readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer readable storage media includes portable computer diskettes, hard disks, random access memories (RAMs), read-only memories (ROMs), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, punch cards, or mechanically encoded devices such as ridge structures in grooves in which instructions are recorded, and any suitable combination of the above. As used herein, computer-readable storage media should not be interpreted as being a transitory signal per se, such as electric waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted over wires.

[0107] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium into each computing / processing device, or may be downloaded to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions to a computer-readable storage medium in the respective computing / processing device for storage.

[0108] The computer readable program instructions for carrying out the operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, source code or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk® or C++, and procedural programming languages ​​such as the “C” programming language or similar programming languages. The computer readable program instructions may be executed entirely on the user's computer, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server, as a stand-alone software package. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the invention.

[0109] Aspects of the present invention are described herein 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 or block diagrams or combinations thereof, and combinations of each block in the flowchart illustrations or block diagrams or combinations thereof, can be implemented by computer readable program instructions.

[0110] These computer readable program instructions may be provided to a processor of a computer, or other programmable data processing apparatus, to produce a machine, such that the instructions, executed via the processor of the computer, or other programmable data processing apparatus, create means for implementing the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both. These computer readable program instructions may also be stored on a computer readable storage medium, such that the instructions can instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer readable storage medium having stored thereon the instructions comprises an article of manufacture including instructions that implement aspects of the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both.

[0111] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device, and cause the computer, other programmable apparatus, or other device to execute a series of operational steps to produce a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / operations specified in one or more blocks of the flowcharts or block diagrams, or both.

[0112] The flowcharts and block diagrams in the drawings 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 flowcharts or block diagrams may represent a module, segment, or portion of instructions that includes one or more executable instructions that implement a specified logical function. In some alternative implementations, the functions noted in the blocks may occur in a different order than that noted in the drawings. For example, two blocks shown in succession may in fact be accomplished as a single step, or may be executed simultaneously, substantially simultaneously, partially or fully overlapping in time, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams or flowchart diagrams or combinations thereof, and combinations of blocks in the block diagrams or flowchart diagrams or combinations thereof, may be implemented by a special-purpose hardware-based system that executes the specified functions or operations, or executes a combination of special-purpose hardware and computer instructions.

Claims

1. triggering execution of a first task on a first computational resource, where execution of a portion of the first task is conditional on a second task being executed on a second computational resource; monitoring a status indicator of the second task, where the status indicator indicates whether the second task is currently executing on the second computational resource; pausing execution of the portion of the first task in response to the status indicator indicating that the second task is not currently executing; determining that a change in said status indicator has occurred; responsive to the determining step, forwarding the received connection information regarding the second task to the first task; and re-triggering execution of the portion of the first task on the first computing resource. A computer-implemented method comprising:

2. The computer-implemented method of claim 1 , wherein the monitoring is performed contemporaneously with the execution of the first task prior to reaching the portion.

3. 3. The computer-implemented method of claim 1, wherein the pausing step is performed in response to receiving a notification that execution of the first task has reached the portion.

4. executing the portion of the first task in response to the status indicator indicating that the second task is currently being executed. The computer-implemented method of claim 1 , further comprising:

5. The computer-implemented method of claim 1 , wherein the status indicator comprises the received connection information.

6. 6. The computer-implemented method of claim 5, wherein executing the portion of the first task includes processing data received from the second task, the data being received using the received connection information.

7. 1. A computer program for parallel task initialization on a dynamic computing resource, the computer program comprising: triggering execution of a first task on a first computational resource, where execution of a portion of the first task is conditional on a second task being executed on a second computational resource; monitoring a status indicator of the second task, where the status indicator indicates whether the second task is currently executing on the second computational resource; pausing execution of the portion of the first task in response to the status indicator indicating that the second task is not currently executing; determining that a change in the status indicator has occurred; responsive to said determining, forwarding the received connection information regarding the second task to the first task; and A computer program product comprising: a computer program product configured to execute a procedure for retriggering execution of the portion of the first task on the first computing resource.

8. The computer program product of claim 7 , wherein the monitoring is performed contemporaneously with the execution of the first task prior to reaching the portion.

9. 9. A computer program product as claimed in claim 7 or 8, wherein the step of pausing is performed in response to receiving a notification that execution of the first task has reached the portion.

10. A computer program as described in any one of claims 7 to 9, further causing the computer to execute the portion of the first task in response to the status indicator indicating that the second task is currently being executed.

11. The computer program product of claim 7 , wherein the status indicator comprises the received connection information.

12. The computer program product of claim 11 , wherein execution of the portion of the first task includes processing data received from the second task, the data being received using the received connection information.

13. A computer program as described in any one of claims 7 to 12, wherein the computer program is stored in at least one of one or more storage media of a local data processing system, and the stored computer program is transferred from a remote data processing system via a network.

14. 13. A computer program according to any one of claims 7 to 12, wherein the computer program is stored on at least one of one or more storage media of a server data processing system, and the stored computer program is downloaded over a network to a remote data processing system for use on a computer readable storage device associated with the remote data processing system.

15. The computer program according to claim 7 , wherein the computer program is provided as a service in a cloud environment.

16. 1. A computer system comprising: one or more processors; one or more computer readable memories; one or more computer readable storage devices; and program instructions stored in at least one of the one or more storage devices for execution by at least one of the one or more processors via at least one of the one or more computer readable memories, the stored program instructions comprising: program instructions for triggering execution of a first task on a first computational resource, where execution of a portion of the first task is conditional on a second task being executed on a second computational resource; program instructions for monitoring a status indicator of the second task, where the status indicator indicates whether the second task is currently executing on the second computational resource; program instructions for pausing execution of the portion of the first task in response to the status indicator indicating that the second task is not currently executing; program instructions for determining that a change in said status indicator has occurred; program instructions for, in response to determining, forwarding the received connection information regarding the second task to the first task; and program instructions for retriggering execution of the portion of the first task on the first computing resource; 2. A computer system comprising:

17. 17. The computer system of claim 16, wherein the monitoring is performed contemporaneously with the execution of the first task prior to reaching the portion.

18. 18. The computer system of claim 16 or 17, wherein the pausing is performed in response to receiving a notification that execution of the first task has reached the portion.

19. program instructions for executing the portion of the first task in response to the status indicator indicating that the second task is currently being executed; 19. The computer system of claim 16, further comprising:

20. 20. The computer system of claim 16, wherein the status indicator comprises the received connection information.

Citation Information

Patent Citations

  • Started job waiting system

    JP1990163827A

  • Mechanism for managing execution environments for aggregated processes

    US20030120701A1