Abstract:
In one embodiment, a method for allocating computing resources comprises executing a plurality of applications and a grid virtual system within a shared resource domain, assigning computing resources to the plurality of applications to process application transactions, dynamically reallocating computing resources associated with the plurality of applications to the grid virtual system when the computing resources are idle, registering availability of grid services in response to the reallocating, scheduling grid jobs for execution within the grid virtual system, and modifying at least one reallocation parameter in response to the scheduling.

Description:
FIELD OF THE INVENTION 
   The present application is generally related to providing grid computing services. 
   DESCRIPTION OF RELATED ART 
   Grid computing involves sharing heterogenous resources based on different platforms to support distributed computing. At a conceptual level, grid computing may be analogized to the provision of power to household appliances. The metaphor is for computers to act as generators of computational “power,” for applications to become computational “appliances,” and for the software infrastructure to act as the utility responsible for managing the interaction between them. To facilitate such a provision of computing resources, the hardware and software supporting a grid are provided with some level of “assurance” of availability and standard interfaces to the grid exposed to consuming applications. 
   Grid computing typically involves virtualization of computer resources and making services available to access the virtual resources through suitable interfaces. For example, the open source Globus Toolkit provides a software framework for the construction of grid systems according to an Open Grid Services architecture (OGSA). Many types of distributed applications may take advantage of resources made available by such grid systems to execute portions of code in parallel using the exposed interfaces. An example of a distributed/parallel application using grid functionality is the Network for Earthquake Engineering Simulation (NEESgrid) application. 
   OSGA grid systems provide a number of mechanisms for publishing the availability of grid services, for enabling the grid services to be accessed, and for performing lifetime management of instances of grid services. Specifically, the OSGA model enables a grid system to store service identifying information in a registry server. Applications seeking to instantiate a service may query the registry server to identify available services and to determine the characteristics of those services. Upon location of suitable services, an application may create instances of services to obtain the virtual resources requested by the application. The instantiated services may be maintained during use, may communicate notification messages, and may be subjected to management operations using various OSGA mechanisms. At suitable times, the instantiated services may also be terminated or destroyed according to OSGA mechanisms. 
   SUMMARY 
   In one embodiment, a method for allocating computing resources comprises executing a plurality of applications and a grid virtual system within a shared resource domain, assigning computing resources to the plurality of applications to process application transactions, dynamically reallocating computing resources associated with the plurality of applications to the grid virtual system when the computing resources are idle, registering availability of grid services in response to the reallocating, scheduling grid jobs for execution within the grid virtual system, and modifying at least one reallocation parameter in response to the scheduling. 
   In another embodiment, a computing system comprises a plurality of computing resources, a plurality of applications, a grid virtual system, and a management process for allocating the plurality of computing resources between the plurality of applications and the grid system, wherein when the management process performs a change in computing resource allocation, the management process communicates a first message to a daemon associated with the grid virtual system, the daemon performs a grid registration operation in response to receiving the first message, the daemon communicates a second message to the management process in response to scheduling a grid job, and the management process reserves a computing resource for the grid virtual system in response to receiving the second message. 
   In another embodiment, a computer readable medium comprises code for creating a virtual grid system, wherein the virtual grid system provides access to virtual computing resources to grid applications via communication interfaces, code for dynamically allocating resources between a plurality of applications and the virtual grid system, and code for defining a grid system daemon to support operations associated with the virtual grid system, wherein when the code for dynamically allocating allocates resources to the virtual grid system, the grid system daemon registers availability of grid services for instantiation by a grid application, wherein when a grid application schedules a grid job for execution using an instantiated grid service, the grid system daemon communicates a message to the code for dynamically allocating and the code for dynamically allocating responds to the message by reserving resources with the virtual grid system to support the grid job. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  depicts a system comprising a shared resource domain and a grid virtual system according to one representative embodiment. 
       FIG. 2  depicts a flowchart for allocating resources and for providing grid services according to one representative embodiment. 
       FIG. 3  depicts another system according to one representative embodiment. 
   

   DETAILED DESCRIPTION 
   Some representative embodiments are directed to systems and methods for making resources available from a shared resource domain to a grid system to support distributed applications. Referring now to the drawings,  FIG. 1  depicts system  100  that dynamically allocates system resources within a shared resource domain according to one representative embodiment. 
   System  100  includes a plurality of protective domains  101 - 1  through  101 - 3 . An example of a suitable protective domain is a virtual partition which virtualizes resources of a server platform and provides software isolation and desirable management characteristics. Partitions  101 - 1  through  101 - 3  form a shared resource domain, i.e., resources may be reallocated between the partitions. For example, processors  121  and specific portions of memory  122  of the server platform may be allocated between partitions  101 - 1  through  101 - 3 . Partitions  101  may share other resources such as network interface  104  and input/output (IO) interface  105 . Suitable queuing and scheduling mechanisms (not shown) may be used to allocate access to network interface  104  and IO interface  105  as examples. Although one representative embodiment is described as using virtual partitions, any suitable computing environment may be used to implement embodiments. Specifically, any computer system having at least one resource subject to allocation may employ an embodiment to determine which software processes are to receive access to the resource. 
   A discrete operating system (OS) ( 102 - 1  through  102 - 3 ) may be executed to control the processing within each partition  101 . Respective applications ( 106 - 1  through  106 - 2 ) or sets of applications are executed within partitions  101 - 1  through  101 - 2 . Although two partitions  101  are shown to support applications, any suitable number of partitions for application execution could be employed according to some representative embodiments. Applications  106 - 1  through  106 - 2  may support various data center operations of a corporate entity, for example. Within partitions  101 - 1  and  101 - 2 , performance monitors  103 - 1  and  103 - 2  are software processes that monitor operations associated with applications  106 - 1  through  106 - 2 . For example, performance monitors  103  may examine the length of time required to perform selected types of transactions. Alternatively, performance monitors  103  may monitor the utilization rates associated with the processors, IO peripherals, network interfaces, or other resources assigned to partitions  101 - 1  and  101 - 2 . The performance metrics gathered by performance monitors  103  are communicated to global workload manager (gWLM)  107 . 
   gWLM  107  is a software process that uses the performance metrics to allocate resources between partitions  101 - 1  through  101 - 3  to achieve service level objectives (SLOs)  108 . SLOs  108  define the desired operating goals of the applications  106 - 1  and  106 - 2  within partitions  101 - 1  through  101 - 2 . For example, an SLO may be defined to specify the desired length of time to complete a specific type of transaction to equal one millisecond. Alternatively, an SLO may be defined to specify that the utilization rate of a resource should be maintained below 85%. When an application  106  is not achieving an SLO, gWLM  107  may allocate one or several additional processors  121  to the respective virtual partition  101  to ameliorate the underperformance of the application. Any suitable resource could be assigned in this manner such as memory, storage resources, networking resources, operating system resources, and/or the like. SLOs  108  may also store other allocation rules. For example, SLOs  108  may store minimum resource allocations and/or the like, such as an amount of processor capacity assigned to said virtual grid system. 
   Additional details related to implementing partitions, performance monitors, and workload managers may be found in U.S. Pat. No. 7,140,020, issued on Nov. 21, 2006, having application Ser. No. 10/206,594, entitled “Dynamic management of virtual partition computer workloads through service level optimization,” filed Jul. 26, 2002, which is incorporated herein by reference. 
   Due to the characteristics of applications  106 - 1  and  106 - 2 , system resources may be idle a significant portion of the time. For example, the loads experienced by data center operations are frequently “bursty,” i.e., heavy loads for short periods of time and otherwise idle. Accordingly, system  100  may be used to execute grid virtual system  109  within virtual partition  101 - 3  to enable the otherwise idle resources to be put to useful activities. Grid virtual system  109  is a software framework that virtualizes physical resources and makes the virtualized resources available to grid applications (such as computational grid  111 ). 
   Grid virtual system  109  comprises grid services daemon  110 . Grid service daemon  110  may provide support services for virtualization of resources for grid applications. Grid service daemon  110  may register the availability of virtual grid resources with computational grid  111 . Grid services daemon  110  may also implement suitable interfaces to enable computational grid  111  to instantiate grid services using known grid interfaces and protocols. Using the instantiated services, computational grid  111  may schedule jobs to support the execution of the distributed application. 
   The operations of grid services daemon  110  are controlled, in part, by gWLM  107 . For example, when an idle resource is deallocated from virtual partitions  101 - 1  or  101 - 2 , gWLM  107  may make the resource available to virtual partition  101 - 3  and may communicate a suitable message to grid services daemon  110 . In response, grid services daemon  110  may register the availability of virtual resources corresponding to the physical resources with computational grid  111 . Computational grid  111  may instantiate one or several grid services through an interface or interfaces exposed by grid services daemon  110 . When a grid job is scheduled, grid services daemon  110  may communicate a grid policy update message to gWLM  107 . The grid policy update message may cause gWLM  107  to maintain sufficient resources within virtual partition  101 - 3  to support the quality of service (QoS) characteristics associated with the respective service(s) used for the scheduled job. For example, gWLM  107  may store a minimum resource allocation within SLOs  108  for virtual partition  101 - 3  that is not subject to reallocation. When a grid job is completed, grid services daemon  110  may notify gWLM  107 . gWLM  107  may respond by making resources associated with partition  101 - 3  available for reallocation to partitions  101 - 1  and  101 - 2 . 
     FIG. 2  depicts a flowchart for providing grid services according to one representative embodiment. In block  201 , resources are reallocated within a shared resource domain to be virtualized by a grid virtual system. In block  202 , the resource allocation change is communicated to a grid services daemon. In block  203 , the availability of services is registered with a grid application or grid registry by the grid services daemon. In block  204 , one or several grid services are instantiated in response to one or several messages from a grid application. 
   In block  205 , a grid job is scheduled for execution. In block  206 , a grid policy update message is communicated from the grid services daemon to a gWLM to indicate that a resource is needed for the scheduled job. In block  207 , resources are reserved by the gWLM for the grid virtual system to support the scheduled grid job. 
   In block  208 , the grid job is completed. In block  209 , a grid policy update message is communicated from the grid services daemon to the gWLM to indicate that the reserved resources are no longer needed. In block  210 , the previously reserved resource(s) is made available for reallocation from the grid virtual system if requested by another partition. 
   When implemented in software, the elements of the present invention are essentially the code segments to perform the necessary tasks. The program or code segments can be stored in a computer readable medium or transmitted by a computer data signal embodied in a carrier wave, or a signal modulated by a carrier, over a transmission medium. The “computer readable medium” may include any medium that can store or transfer information. Examples of the computer readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a compact disk CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc. The code segments may be downloaded via computer networks such as the Internet, intranet, etc. 
     FIG. 3  illustrates computer system  300  adapted according to one representative embodiment. Central processing unit (CPU)  301  is coupled to system bus  302 . The CPU  301  may be any general purpose CPU. However, the present invention is not restricted by the architecture of CPU  301  as long as CPU  301  supports the inventive operations as described herein. Bus  302  is coupled to random access memory (RAM)  303 , which may be SRAM, DRAM, or SDRAM. ROM  304  is also coupled to bus  302 , which may be PROM, EPROM, or EEPROM. RAM  303  and ROM  304  hold user and system data and programs as is well known in the art. 
   Bus  302  is also coupled to input/output (I/O) controller card  305 , communications adapter card  311 , user interface card  308 , and display card  309 . I/O card  305  connects to storage devices  306 , such as one or more of hard drive, CD drive, floppy disk drive, tape drive, to the computer system. Storage devices  306  may store the software or executable code for controlling the allocation of resources between computing domains. For example, storage devices  306  may store executable code implementing gWLM  107  and grid services daemon  110  according to one representative embodiment. 
   Communications card  311  is adapted to couple the computer system  300  to a network  312 , which may be one or more of local (LAN), wide-area (WAN), ethernet or Internet network. User interface card  308  couples user input devices, such as keyboard  313  and pointing device  307 , to the computer system  300 . Display card  309  is driven by CPU  301  to control the display on display device  310 . 
   By dynamically managing a shared resource domain in conjunction with the operations of a grid virtual system, some representative embodiments may provide a number of advantages. Specifically, if a fixed allocation architecture is employed, manual intervention would be necessary to reconfigure resources. If a data center workload or other workload is sufficiently heavy that additional resources would improve performance, system administration intervention to reconfigure resources would most likely not occur in sufficient time to address the heavy workload. Accordingly, some representative embodiments avoid dedicating physical resources to a computational grid so that the resources may be dynamically employed by suitable applications if needed. Additionally, some representative embodiments prevent reallocation operations from unduly interfering with the execution of grid applications. Namely, when a grid job is scheduled, sufficient resources may be reserved to support the scheduled grid job.