1. Field
This disclosure generally relates to the field of computer systems. More particularly, the disclosure relates to prioritization of compute resources.
2. General Background
A compute system may involve various compute nodes that attempt to gain access to compute resources. A compute node may be a computing device, a program executed on a computing device, an operating system, a function, or the like. Further, examples of compute resources include a central processing unit (“CPU”), a memory, or the like. A particular compute node may have priority over a set of compute resources, but may not be utilizing all of those compute resources at all times. In addition, that compute node may need the compute resources that it is utilizing to operate without being slowed down or disrupted. As an example, a desktop computer may have a plurality of processors that is not fully being utilized at all times by a user. However, the user may need to access all of those processors at any given time. Current approaches do not adequately prevent disruption of a compute node that has priority over a set of compute resources.
In one aspect of the disclosure, a computer program product is provided. The computer program product includes a computer readable medium having a computer readable program stored thereon. The computer readable program when executed on a computer causes the computer to determine, with a resource broker, availability of a portion of a set of compute resources in real-time. The set of compute resources is assigned as a priority to a master process. Further, the computer readable program when executed on the computer causes the computer to assign, with the resource broker, the portion of the set of compute resources to an auxiliary process if the portion of the set of compute resources is available. In addition, the computer readable program when executed on the computer causes the computer to determine, with the resource broker, that the master process is attempting to utilize the portion of the set of compute resources. The computer readable program when executed on the computer also causes the computer to assign, with the resource broker, the portion of the set of compute resources to the master process from the auxiliary process without an interruption that exceeds a predetermined time threshold of processing being performed by the master process.
In another aspect of the disclosure, a process is provided. The process determines, with a resource broker, availability of a portion of a set of compute resources in real-time. The set of compute resources is assigned as a priority to a master process. Further, the process assigns, with the resource broker, the portion of the set of compute resources to an auxiliary process if the portion of the set of compute resources is available. In addition, the process determines, with the resource broker, that the master process is attempting to utilize the portion of the set of compute resources. The process also assigns, with the resource broker, the portion of the set of compute resources to the master process from the auxiliary process without an interruption that exceeds a predetermined time threshold of processing being performed by the master process.
In yet another aspect of the disclosure, a system is provided. The system includes a resource broker that determines availability of a portion of a set of compute resources in real-time, assigns the portion of the set of compute resources to an auxiliary process if the portion of the set of compute resources is available, determines that the master process is attempting to utilize the portion of the set of compute resources, and assigns the portion of the set of compute resources to the master process from the auxiliary process without an interruption that exceeds a predetermined time threshold of processing being performed by the master process. The set of compute resources is assigned as a priority to a master process.
In another aspect of the disclosure, a computer program product is provided. The computer program product includes a computer readable medium having a computer readable program stored thereon. The computer readable program when executed on a computer causes the computer to execute, at a compute node, a master process with a first portion of a set of compute resources. The set of compute resources is assigned as a priority to the master process. Further, the computer readable program when executed on the computer causes the computer to receive an indication, at the compute node from a resource broker, of availability of a second portion of the set of compute resources in real-time. In addition, the computer readable program when executed on the computer causes the computer to execute, at the compute node, an auxiliary process with the second portion of the set of compute resources if the second portion of the set of compute resources is available. The computer readable program when executed on the computer also causes the computer to determine, at the compute node, that the master process is attempting to utilize the second portion of the set of compute resources. Further, the computer readable program when executed on the computer causes the computer to transfer the second portion of the set of compute resources to the master process from the auxiliary process. In addition, the computer readable program when executed on the computer causes the computer to process, at the compute node, the master process with the second portion of the set of compute resources without an interruption that exceeds a predetermined time threshold.
In yet another aspect of the disclosure, a process is provided. The process executes, at a compute node, a master process with a first portion of a set of compute resources. The set of compute resources is assigned as a priority to the master process. Further, the process receives an indication, at the compute node from a resource broker, of availability of a second portion of the set of compute resources in real-time. In addition, the process executes, at the compute node, an auxiliary process with the second portion of the set of compute resources if the second portion of the set of compute resources is available. The process also determines, at the compute node, that the master process is attempting to utilize the second portion of the set of compute resources. Further, the process transfers the second portion of the set of compute resources to the master process from the auxiliary process. In addition, the process processes, at the compute node, the master process with the second portion of the set of compute resources without an interruption that exceeds a predetermined time threshold.
In another aspect of the disclosure, a system is provided. The system includes a processor that executes a master process with a first portion of a set of compute resources, receives an indication of availability of a second portion of the set of compute resources in real-time, executes an auxiliary process with the second portion of the set of compute resources if the second portion of the set of compute resources is available, determines that the master process is attempting to utilize the second portion of the set of compute resources, transfers the second portion of the set of compute resources to the master process from the auxiliary process, and processes the master process with the second portion of the set of compute resources without an interruption. The set of compute resources is assigned as a priority to the master process that exceeds a predetermined time threshold.
The above-mentioned features of the present disclosure will become more apparent with reference to the following description taken in conjunction with the accompanying drawings wherein like reference numerals denote like elements and in which:
A resource broker may be utilized to provide dynamic allocation of compute resources. The resource broker may be a process generated by an operating system, a set of code, a function, a module, or the like that is executed alongside of a master process. The master process may be a process generated by an operating system, a set of code, a function, a module, or the like that has priority over a set of compute resources residing on a compute node. The resource broker analyzes in real-time (or substantially real-time) what compute resources are available to be utilized by an auxiliary process. As used herein, real-time may include very small time delays caused by electrical signals sent through a circuit or a system. An auxiliary process may be a process generated by an operating system, a set of code, a function, a module, or the like that would like to utilize at least a portion of the compute resources residing on the compute node over which the master process has priority. The resource broker takes action to transfer compute resources that are not currently being utilized by the master process to the auxiliary process. Further, the resource broker takes further action to take back any of those transferred compute resources and transfer them back to the master process without an interruption to the master process that exceeds a predetermined time threshold. As an example, the predetermined time threshold for an interruption that is unnoticed by a user may be in the approximate range of zero milliseconds to six seconds. As another example, the predetermined time threshold for an interruption that is noticed by the user may be in the approximate range of zero milliseconds to ten minutes. Any of the ranges provided herein are provided merely as examples. The time threshold may be utilized with a variety of other ranges. The resource broker keeps as much of the set compute resources as possible busy at any given time, but avoids or minimizes disruption or delay to a master process that has priority over the set of resources. As a result, any available compute resources are utilized whenever ancillary work is available to run without affecting the performance of the master process. Accordingly, dynamic allocation of compute resources may be achieved via the resource broker tracking the uninterruptable work load in real-time, allocating excess compute resources to an auxiliary process, and transferring any of those excess compute resources back to the master process if the master function requires access to those excess compute resources.
In one aspect, a VM may be instantiated to accomplish auxiliary work when compute resources are made available. A VM is a software implementation of a computing device that executes programs like a physical computing device, but in a virtual manner. Further, in one aspect, the VM may be transient such that it is generated to accomplish auxiliary work and discarded after the auxiliary work has been completed.
The resource broker, compute nodes, and other elements described herein may be used to generate or modify an image or a sequence of images for an animation. For example, the elements described herein may be used for modeling objects (shaping geometry), layout, rigging, look development, stereoscopic creation and manipulation (depth perception), animation (movement, computational dynamics), lighting, rendering, and/or color correction.
It should be understood that the resource broker 108 may be implemented as one or more physical devices that are coupled to the processor 102. For example, the resource broker 108 may include a plurality of modules. Alternatively, the resource broker 108 may be represented by one or more software applications (or even a combination of software and hardware, e.g., using application specific integrated circuits (ASIC)), where the software is loaded from a storage medium, (e.g., a magnetic or optical drive, diskette, or non-volatile memory) and operated by the processor 102 in the memory 106 of the system 100. As such, the resource broker 108 (including associated data structures) of the present disclosure may be stored on a computer readable medium, e.g., RAM memory, magnetic or optical drive or diskette and the like.
The system 100 may be utilized to implement any of the configurations herein. In another aspect, the processor 102 is the resource broker 108. Accordingly, in such an aspect, a resource broker 108 that is separate from the processor 102 is unnecessary.
The resource broker 108 of the system 100 illustrated in
In one aspect, the resource broker 108 is implemented on the compute node 200. However, the resource broker 108 may be implemented on an external compute node that interacts with the compute node 200.
The resource broker 108 monitors the prioritized workload by communicating with the set of utilized compute resources 304. Further, the resource broker 108 monitors the availability of available compute resources for other clients in the set of excess compute resources 306.
Further, as an example,
In addition, as an example,
In one aspect, the resource broker 108 may report to an interactive client or interactive user if an elongated moment of memory contention is detected during the transfer of a compute resource back to the master process. For example, the user at the client A 302 may receive a message such as a text message, pop up message, or the like that a small interruption may occur.
With any of the configurations provided for herein, the resource broker 108 may utilize a variety of hardware devices, software implementations, or the like to execute operations to dynamically allocate compute resources to accomplish auxiliary work whenever compute resources are available. For example, the resource broker 108 may instantiate transient VMs to perform such dynamic allocation to accomplish the auxiliary work.
As another example, the resource broker 108 may discard a VM. As a result, CPUs and the memory may be transferred back to the master process immediately.
As yet another example, the VM may be stored locally on a storage device in local communication with a portion of the set of compute resources 202 so that the portion of the set of compute resources 202 is transferred to the master process. As a result, the master process may access the CPUs immediately and memory after a short delay. Active memory pages are sent to a local disk. Alternatively, the VM may be stored externally on a storage device in external communication with the portion of the set of compute resources 202 so that the portion of the set of compute resources 202 is transferred to the master process. Active memory pages are sent over a network to a central compute resource.
As another example, the resource broker 108 may migrate the VM from a first compute node to a second compute node. As a result, the VM may continue to run without disruption.
In one aspect, the VMs are transient VMs that may withstand interruptions in service. Further, in another aspect, the VMs are managed by an external entity other than the resource broker 108.
Although
In one aspect, the operating system running the uninterruptable compute workload, e.g., the set of utilized compute resources 304, may be running inside of a VM itself. Alternatively, the operating system running the uninterruptable compute workload may run directly on physical hardware.
The processes described herein may be implemented in a general, multi-purpose or single purpose processor. Such a processor will execute instructions, either at the assembly, compiled or machine-level, to perform the processes. Those instructions can be written by one of ordinary skill in the art following the description of the figures corresponding to the processes and stored or transmitted on a computer readable medium. The instructions may also be created using source code or any other known computer-aided design tool.
A computer readable medium may be any medium capable of carrying those instructions and include a CD-ROM, DVD, magnetic or other optical disc, tape, silicon memory (e.g., removable, non-removable, volatile or non-volatile), packetized or non-packetized data through wireline or wireless transmissions locally or remotely through a network.
A computer is herein intended to include any device that has a general, multi-purpose or single purpose processor as described above. For example, a computer may be a personal computer (“PC”), laptop, smartphone, tablet device, set top box, or the like.
It is understood that the apparatuses, systems, computer program products, and processes described herein may also be applied in other types of apparatuses, systems, computer program products, and processes. Those skilled in the art will appreciate that the various adaptations and modifications of the aspects of the apparatuses, systems, computer program products, and processes described herein may be configured without departing from the scope and spirit of the present apparatuses, systems, computer program products, and processes. Therefore, it is to be understood that, within the scope of the appended claims, the present apparatuses, systems, computer program products, and processes may be practiced other than as specifically described herein.