U.S. patent application number 13/306283 was filed with the patent office on 2013-05-30 for predictive and dynamic resource provisioning with tenancy matching of health metrics in cloud systems.
This patent application is currently assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION. The applicant listed for this patent is ATUL A. GOHAD, KARTHIKEYAN PONNALAGU. Invention is credited to ATUL A. GOHAD, KARTHIKEYAN PONNALAGU.
Application Number | 20130138798 13/306283 |
Document ID | / |
Family ID | 48467826 |
Filed Date | 2013-05-30 |
United States Patent
Application |
20130138798 |
Kind Code |
A1 |
GOHAD; ATUL A. ; et
al. |
May 30, 2013 |
PREDICTIVE AND DYNAMIC RESOURCE PROVISIONING WITH TENANCY MATCHING
OF HEALTH METRICS IN CLOUD SYSTEMS
Abstract
According to one embodiment of the present invention, a method
computing resources are dynamically provisioned to meet service
level objectives in a cloud computing environment. Resources
available for provisioning to the cloud computing environment are
determined and the quality thereof monitored. Current resource
needs for a cloud job tenancy are determined, and selected
resources are dynamically provisioned from resources available for
provisioning based on the current resource needs and the quality of
the resources available in order to meet the cloud job tenancy and
the service level objectives.
Inventors: |
GOHAD; ATUL A.; (SATARA,
IN) ; PONNALAGU; KARTHIKEYAN; (MADURAI, IN) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
GOHAD; ATUL A.
PONNALAGU; KARTHIKEYAN |
SATARA
MADURAI |
|
IN
IN |
|
|
Assignee: |
INTERNATIONAL BUSINESS MACHINES
CORPORATION
ARMONK
NY
|
Family ID: |
48467826 |
Appl. No.: |
13/306283 |
Filed: |
November 29, 2011 |
Current U.S.
Class: |
709/224 |
Current CPC
Class: |
G06F 9/5072 20130101;
H04L 43/08 20130101 |
Class at
Publication: |
709/224 |
International
Class: |
G06F 15/16 20060101
G06F015/16 |
Claims
1-7. (canceled)
8. A system for dynamically provisioning computing resources to
meet service level objectives in a cloud computing environment,
comprising: a processor; and memory connected to the processor,
wherein the memory is encoded with instructions and wherein the
instructions when executed comprise: instructions for determining
and monitoring quality of resources available for provisioning to
the cloud computing environment; instructions for determining
current resource needs for a cloud job tenancy; and instructions
for dynamically provisioning selected resources from said resources
available for provisioning based on said current resource needs and
said quality of said resources available in order to meet said
cloud job tenancy and the service level objectives.
9. The system of claim 8, wherein said instructions for determining
and monitoring comprises instructions for determining a
parameterized health summary for each of said resources available
for provisioning.
10. The system of claim 9, wherein said instructions for
determining and monitoring comprises: instructions for determining
a provisioning health model based on resource types used for
requirements of said cloud job tenancy as captured in a cataloged
tenancy model; instructions for determining a health grading model
to have a relative or absolute grading of said resources available
to determine a resource equivalence; and instructions for updating
said health grading model and said provisioning health model to
reclassify a candidate resource pool by filtering out any
mismatched ones of said resources available.
11. The system of claim 10, wherein said instructions for
determining current resource needs for a cloud job tenancy
comprises: instructions for identifying a closest existing tenant
provisioned from a pool of tenants in said cataloged tenancy model,
based on a modeling of tenancy requirements, as a first match;
instructions for identifying a corresponding provision model based
on said first match; instructions for identifying a closest
candidate provision model as a second match; and instructions for
entering said second match into a dynamic provisioning plan
customizer and validator.
12. The system of claim 11, wherein when said first or said second
match fail, instructions for identifying a closest required
provision model from said candidate provision model.
13. The system of claim 8, wherein said instructions for
dynamically provisioning selected resources from said resources
available for provisioning comprises: instructions for entering an
initial health state at provisioning start into a perform
provisioning health analysis to determine whether currently
allocated resources need reallocation; and instructions for
updating candidate provisioning models based on any reallocation
needs.
14. The system of claim 13, further comprising: instructions for
deriving a new provisioning plan from said updated candidate
provisioning models during any reallocation; instructions for
validating said new provisioning plan with a dynamic provisioning
plan customizer and validator; and instructions for allocating new
resources from a candidate resource pool based on said new
provisioning plan.
15. A computer program product for dynamically provisioning
computing resources to meet service level objectives in a cloud
computing environment, the computer program product comprising a
computer readable storage medium having computer readable program
code embodied therewith, the computer readable program code
comprising: computer readable program code configured to determine
and monitor quality of resources available for provisioning to the
cloud computing environment; computer readable program code
configured to determine current resource needs for a cloud job
tenancy; and computer readable program code configured to
dynamically provision selected resources from said resources
available for provisioning based on said current resource needs and
said quality of said resources available in order to meet said
cloud job tenancy and the service level objectives.
16. The computer program product of claim 15, wherein said computer
readable program code configured to determine and monitor comprises
computer readable program code configured to determine a
parameterized health summary for each of said resources available
for provisioning.
17. The computer program product of claim 16, wherein said computer
readable program code configured to determine and monitor
comprises: computer readable program code configured to determine a
provisioning health model based on resource types used for
requirements of said cloud job tenancy as captured in a cataloged
tenancy model; computer readable program code configured to
determine a health grading model to have a relative or absolute
grading of said resources available to determine a resource
equivalence; and computer readable program code configured to
update said health grading model and said provisioning health model
to reclassify a candidate resource pool by filtering out any
mismatched ones of said resources available.
18. The computer program product of claim 17, wherein said computer
readable program code configured to determine current resource
needs for a cloud job tenancy comprises: computer readable program
code configured to identify a closest existing tenant provisioned
from a pool of tenants in said cataloged tenancy model, based on a
modeling of tenancy requirements, as a first match; computer
readable program code configured to identify a corresponding
provision model based on said first match; computer readable
program code configured to identify a closest candidate provision
model as a second match; and computer readable program code
configured to enter said second match into a dynamic provisioning
plan customizer and validator.
19. The computer program product of claim 18, wherein when said
first or said second match fail, computer readable program code
configured to identify a closest required provision model from said
candidate provision model.
20. The computer program product of claim 19, wherein said computer
readable program code configured to dynamically provision selected
resources from said resources available for provisioning comprises:
computer readable program code configured to enter an initial
health state at Provisioning start into a perform provisioning
health analysis to determine whether currently allocated resources
need reallocation; computer readable program code configured to
update candidate provisioning models based on any reallocation
needs; computer readable program code configured to derive a new
provisioning plan from said updated candidate provisioning models
during any reallocation; computer readable program code configured
to validate said new provisioning plan with a dynamic provisioning
plan customizer and validator; and computer readable program code
configured to allocate new resources from a candidate resource pool
based on said new provisioning plan.
Description
BACKGROUND
[0001] The present invention relates to a cloud computing
environment, and, in particular, to provisioning of infrastructure
resources.
[0002] A recent model, known as cloud computing, enables
convenient, on-demand network access to a shared pool of
configurable computing resources (e.g., networks, servers, storage,
applications, and services) that can be rapidly provisioned and
released with minimal management effort or service provider
interaction. "Rapid elasticity," an essential characteristic of the
cloud model, refers to rapidly and elastically provisioning
computing capabilities to quickly scale out, and quickly scale in
by rapidly releasing the computing capabilities. The provisioning
of computing resources for different application services and
models under transient conditions, on the cloud infrastructure
inclusive of hardware, software and services is a challenging
problem to tackle. This is because clouds exhibit varying demands,
supply patterns, system sizes, and resources (hardware, software,
network). Users have heterogeneous, dynamic, and competing Quality
of Service (QoS) requirements, and applications have varying
performance, workload, and dynamic application scaling
requirements.
BRIEF SUMMARY
[0003] According to one embodiment of the present invention, a
method dynamically provisions computing resources to meet service
level objectives in a cloud computing environment. A processor
determines and monitors quality of resources available for
provisioning to the cloud computing environment. The processor
determines current resource needs for a cloud job tenancy, and
dynamically provisions selected resources from resources available
for provisioning based on the current resource needs and the
quality of the resources available in order to meet the cloud job
tenancy and the service level objectives.
[0004] According to one embodiment of the present invention, a
system dynamically provisions computing resources to meet service
level objectives in a cloud computing environment. The system
comprises a processor and memory connected to the processor. The
memory is encoded with instructions and wherein the instructions
when executed comprise instructions for determining and monitoring
quality of resources available for provisioning to the cloud
computing environment. Instructions determine current resource
needs for a cloud job tenancy, and dynamically provision selected
resources from resources available for provisioning based on the
current resource needs and the quality of the resources available
in order to meet the cloud job tenancy and the service level
objectives.
[0005] According to one embodiment of the present invention, a
computer program product dynamically provisions computing resources
to meet service level objectives in a cloud computing environment.
The computer program product comprises a computer readable storage
medium having computer readable program code embodied therewith.
The computer readable program code is configured to determine and
monitor quality of resources available for provisioning to the
cloud computing environment. The computer readable program code is
configured to determine current resource needs for a cloud job
tenancy, and dynamically provision selected resources from
resources available for provisioning based on the current resource
needs and the quality of the resources available in order to meet
the cloud job tenancy and the service level objectives.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0006] FIG. 1A is an illustration of computer hardware upon which
an embodiment of the present invention may operate;
[0007] FIG. 1B is an illustration of a typical cloud computing
hardware environment;
[0008] FIG. 2 is a high level flowchart of one embodiment of the
present invention;
[0009] FIG. 3 is an illustration of the components of a health and
tenancy requirement based dynamic predictive provisioning system in
accordance with one embodiment of the present invention;
[0010] FIG. 4 illustrates an XML representation of Health Grading
Model component;
[0011] FIG. 5 illustrates an XML representation of a Cataloged
Tenancy Mode, a Provisioning Health Model, and a Candidate
Provisioning Model;
[0012] FIG. 6 illustrates an XML representation of a Requirement
Tenancy Model; and
[0013] FIG. 7 illustrates XML representations of Provisioned
Resource Pools.
DETAILED DESCRIPTION
[0014] The descriptions of the various embodiments of the present
invention have been presented for purposes of illustration, but are
not intended to be exhaustive or limited to the embodiments
disclosed. Many modifications and variations will be apparent to
those of ordinary skill in the art without departing from the scope
and spirit of the described embodiments. The terminology used
herein was chosen to best explain the principles of the
embodiments, the practical application or technical improvement
over technologies found in the marketplace, or to enable others of
ordinary skill in the art to understand the embodiments disclosed
herein.
[0015] As will be appreciated by one skilled in the art, aspects of
the present invention may be embodied as a system, method or
computer program product. Accordingly, aspects of the present
invention may take the form of an entirely hardware embodiment, an
entirely software embodiment (including firmware, resident
software, micro-code, etc.) or an embodiment combining software and
hardware aspects that may all generally be referred to herein as a
"circuit," "module" or "system." Furthermore, aspects of the
present invention may take the form of a computer program product
embodied in one or more computer readable medium(s) having computer
readable program code embodied thereon.
[0016] Any combination of one or more computer readable media
(memory or device) may be utilized. The computer readable medium
may be a computer readable signal medium or a computer readable
storage medium. A computer readable storage medium may be, for
example, but not limited to, an electronic, magnetic, optical,
electromagnetic, infrared, or semiconductor system, apparatus, or
device, or any suitable combination of the foregoing. More specific
examples (a non-exhaustive list) of the computer readable storage
medium would include the following: an electrical connection having
one or more wires, a portable computer diskette, a hard disk, a
random access memory (RAM), a read-only memory (ROM), an erasable
programmable read-only memory (EPROM or Flash memory), an optical
fiber, a portable compact disc read-only memory (CD-ROM), an
optical storage device, a magnetic storage device, or any suitable
combination of the foregoing. In the context of this document, a
computer readable storage medium may be any tangible medium that
can contain, or store a program for use by or in connection with an
instruction execution system, apparatus, or device.
[0017] A computer readable signal medium may include a propagated
data signal with computer readable program code embodied therein,
for example, in baseband or as part of a carrier wave. Such a
propagated signal may take any of a variety of forms, including,
but not limited to, electro-magnetic, optical, or any suitable
combination thereof. A computer readable signal medium may be any
computer readable medium that is not a computer readable storage
medium and that can communicate, propagate, or transport a program
for use by or in connection with an instruction execution system,
apparatus, or device.
[0018] Program code embodied on a computer readable medium may be
transmitted using any appropriate medium, including but not limited
to wireless, wireline, optical fiber cable, RF, etc., or any
suitable combination of the foregoing.
[0019] Computer program code for carrying out operations for
aspects of the present invention may be written in any combination
of one or more programming languages, including an object oriented
programming language such as Java, Smalltalk, C++ or the like and
conventional procedural programming languages, such as the "C"
programming language or similar programming languages. The program
code may execute entirely on the user's computer, partly on the
user's computer, as a stand-alone software package, partly on the
user's computer and partly on a remote computer or entirely on the
remote computer or server. In the latter scenario, the remote
computer may be connected to the user's computer through any type
of network, including a local area network (LAN) or a wide area
network (WAN), or the connection may be made to an external
computer (for example, through the Internet using an Internet
Service Provider).
[0020] Aspects of the of the present invention are described below
with reference to flowchart illustrations and/or block diagrams of
methods, apparatus (systems) and computer program products
according to embodiments of the invention. It will be understood
that each block of the flowchart illustrations and/or block
diagrams, and combinations of blocks in the flowchart illustrations
and/or block diagrams, can be implemented by computer program
instructions. These computer program instructions may be provided
to a processor of a general purpose computer, special purpose
computer, or other programmable data processing apparatus to
produce a machine, such that the instructions, which execute via
the processor of the computer or other programmable data processing
apparatus, create means for implementing the functions/acts
specified in the flowchart and/or block diagram block or
blocks.
[0021] These computer program instructions may also be stored in a
computer readable medium that can direct a computer, other
programmable data processing apparatus, or other devices to
function in a particular manner, such that the instructions stored
in the computer readable medium produce an article of manufacture
including instructions which implement the function/act specified
in the flowchart and/or block diagram block or blocks
[0022] The computer program instructions may also be loaded onto a
computer, other programmable data processing apparatus, or other
devices to cause a series of operational steps to be performed on
the computer, other programmable apparatus or other devices to
produce a computer implemented process such that the instructions
which execute on the computer or other programmable apparatus
provide processes for implementing the functions/acts specified in
the flowchart and/or block diagram block or blocks.
[0023] The flowchart and block diagrams in the Figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments of the present invention. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of code, which comprises one or more
executable instructions for implementing the specified logical
function(s). It should also be noted that, in some alternative
implementations, the functions noted in the block may occur out of
the order noted in the figures. For example, two blocks shown in
succession may, in fact, be executed substantially concurrently, or
the blocks may sometimes be executed in the reverse order,
depending upon the functionality involved. It will also be noted
that each block of the block diagrams and/or flowchart
illustration, and combinations of blocks in the block diagrams
and/or flowchart illustration, can be implemented by special
purpose hardware-based systems that perform the specified functions
or acts, or combinations of special purpose hardware and computer
instructions.
[0024] The terminology used herein is for the purpose of describing
particular embodiments only and is not intended to be limiting of
the invention. As used herein, the singular forms "a", "an" and
"the" are intended to include the plural forms as well, unless the
context clearly indicates otherwise. It will be further understood
that the terms "comprises" and/or "comprising," when used in this
specification, specify the presence of stated features, integers,
steps, operations, elements, and/or components, but do not preclude
the presence or addition of one or more other features, integers,
steps, operations, elements, components, and/or groups thereof.
[0025] FIG. 1A is one example of a computer system 10 suitable for
executing computer software for predictive and dynamic resource
provisioning with tenancy matching of health metrics in cloud
systems. Other processing devices which are suitable for executing
the software can be a wireless telephone, personal assistant device
(PDA), portable computer, smart remote control device, or any other
processing devices that can execute such software.
[0026] The computer system 10 is of a type that executes under a
suitable operating system installed on the computer system 10. The
components of the computer system 10 include a computer 12, a
keyboard 22, mouse 24, and a video display 20. The computer 12
includes a processor 26, a memory 28, input/output (I/O) interfaces
30 and 32, a video interface 34, and a storage device 36.
[0027] The processor 26 is a central processing unit (CPU) that
executes the operating system and the computer software executing
under the operating system. The memory 28 includes random access
memory (RAM) and read-only memory (ROM), and is used under
direction of the processor 26.
[0028] The video interface 34 is connected to a video display 20
and provides video signals for display thereon. User input to
operate the computer 12 is provided from the keyboard 22 and mouse
24. The storage device 36 can include a disk drive or any other
suitable storage medium, as discussed above. Each of the components
of the computer 12 is connected to an internal bus 40 that includes
data, address, and control buses, to allow components of the
computer 12 to communicate with each other via the bus 40. The
computer system 10 can be connected to one or more other similar
computers via an input/output (I/O) interface 32 using a
communication channel 38 to a network, represented as the Internet
18. One or more servers 19 may be connected to the computer 12 via
a network, such as, the Internet 18. The servers 19 may comprise
the same physical arrangement as the computer 12 and may be
co-located with or a part of the computer 12.
[0029] The computer software may be recorded on a computer readable
storage medium, in which case, the computer software program is
accessed by the computer system 10 from the storage device 36.
Alternatively, the computer software can be accessed directly from
the Internet 18 by the computer 12. In either case, a user can
interact with the computer system 10 using the keyboard 22 and
mouse 24 to operate the programmed computer software executing on
the computer 12.
[0030] Referring to FIG. 1B, a Cloud environment is shown
comprising multiple computer systems 100a-100n, which are
interconnected. Cloud computing involves multi-tenancy which is the
ability to run multiple customers on a single software instance
installed on multiple servers to increase resource utilization by
allowing load balancing among tenants, and to reduce operational
complexity and cost in managing the software to deliver the
service. Multi-tenancy is not a multi-instance architecture where
separate software instances (or hardware systems) are set up for
different client organizations.
[0031] There are three aspects of multi-tenancy strategies: [0032]
1) Physical Separation; [0033] 2) Virtualization; and [0034] 3)
Automatic adjustment of behavior for different tenants at
runtime.
[0035] Physical separation relies on giving each tenant his own
dedicated hardware resources. Virtualization uses software to
create application hosting environments that provide logical
boundaries between each tenant. The application must be designed to
be multi-tenant aware, and, therefore, the third strategy is to
design different aspects of the application to automatically adjust
its behavior differently for different tenants at runtime.
[0036] A cloud provider's computing resources are pooled to serve
multiple consumers using the multi-tenant model, with different
physical and virtual resources dynamically assigned and reassigned
according to consumer demand. There is a sense of location
independence in that the customer generally has no control or
knowledge over the exact location of the provided resources but may
be able to specify location at a higher level of abstraction (e.g.,
country, state, or datacenter). Examples of resources include
storage, processing, memory, network bandwidth, and virtual
machines.
[0037] Multi-tenancy, however, creates a number of concerns for
users, such as: [0038] 1) Security and inappropriate data access;
[0039] 2) Impact of other clients on their system performance;
[0040] 3) Being forced into an upgrade; [0041] 4) Inability to
support the level of client specific configurations and even
customizations as necessary; [0042] 5) Inability to obtain client
level user acceptance testing; [0043] 6) Inability to determine the
precise production/go live dates for the system; and [0044] 7) If
the number of users in a tenant are large, e.g. >1000 users,
then the multi-tenant advantages start losing value, as they may
need separate hosting with separate maintenance.
[0045] Dynamic resource provisioning approaches help determine the
number/type of resources required to meet service level objectives
(SLOs). These approaches typically involve: [0046] 1) Constructing
an application performance model that predicts the number/type of
application instances required to handle demand at each particular
level, in order to satisfy Quality of Service (QoS) requirements;
[0047] 2) Periodically predicting future demand and determining
resource requirements using the performance model; and [0048] 3)
Automatically allocating resources using the predicted resource
requirements.
[0049] However, the quality of chosen resource(s) is assumed to
remain constant throughout the time period of provisioning. Also
the status of an entire system reflects the status of the component
on the system that has the most severe status. For example, if a
component within a system has a status of critical, the entire
system will have a status of critical, even if the critically
impacted component is not critical to the current tenancy
requirements within the provisioned system. Thus, the assumption
that the quality of chosen resources remains constant throughout
the time period of provisioning involves limitations: [0050] 1)
Does not take into account, the effect of the health of the
provisioned resources, which would diminish due to continuous
execution of processes: [0051] A. The system eventually slows down
due to operating system related issues such as: [0052] 1.
Fragmentation, bigger registries, additional process loads, and
[0053] 2. Effect of thrashing (i.e., when two or more processes
access a shared resource repeatedly such that serious system
performance degradation occurs because the system is spending a
disproportionate amount of time just accessing the shared
resource); [0054] B. Effect of varying available memory (RAM,
Virtual, Persistent Storage) for processing either due to increase
in the number of tenants or burst of load, or due to the
application performance and memory consumption over time; and
[0055] C. Dynamically changing virtual memory requirements based on
addition of another Tenant. [0056] 2) Does not take into account
the effects of multi-tenancy dynamics, as that can affect the
agreed upon SLO's for already provisioned tenants: [0057] A. Adding
another tenant (similar to increasing number of requests for a
service); [0058] B. Non-availability of any service on the
provisioned resource due to maintenance and/or upgrades; [0059] C.
Increased burst of load on a specific multi-tenant application; and
[0060] D. Dynamically changing tenancy requirements such as time
bound ramp-up or ramp-down in throughput requirements, e.g.
increase during peak hours (typically seasonal as in case of a
retail web-site) and decrease during off peak/night hours.
[0061] Referring now to FIG. 2, a high level flowchart 200
illustrates one embodiment of the present invention. At block 202,
the process begins by determining and monitoring the quality of
resources provisioned for the cloud. At block 204, the current
resource needs are determined for a cloud job tenancy, and
resources suitable for the job tenancy are then dynamically
provided to the cloud at block 206.
[0062] Referring now to FIG. 3, the components of a health and
tenancy requirement based dynamic predictive provisioning system
300 in accordance with one embodiment of the invention is
illustrated. The first step (block 202 of FIG. 2) is to determine
and monitor the quality of provisioned resources. The components
for this step include: [0063] 1) An Initial Resource pool 302--the
entire set of resources available for usage; [0064] 2) A Measured
Health Summary 304--resource type based parameterized health
summary for each individual resource. For example, in a typical
computer system, the parameterized health summary would comprise
the number of available CPU cores, available RAM for application
and infrastructure runtime components (physical and virtual),
Network bandwidth, available disk storage, and etc. The measured
health for all of the above parameters varies dynamically. [0065]
3) Cataloged Tenancy Models (CTM) 306--repository of past
experiences specifying resources provisioned corresponding to
requirement tenancy models; [0066] 4) Health Grading Models (HGM)
308--a set of resources of the same resource type classified based
on their absolute and relative graded health; [0067] 5)
Provisioning Health Model (PHM) 310--a set of resources involving
different resource types, classified based on their possible usage
in satisfying a requirement tenancy; [0068] 6) Candidate Resource
pool 312--a set of identified eligible healthy resources involving
different resource types that qualify for provisioning in specific
tenancy. This pool also comprises identified replacement resources;
and [0069] 7) Continuous Health grade monitor 314--has multiple
responsibilities of: [0070] a) releasing/acquiring resources in a
Candidate Resource Pool 312; [0071] b) examining the Provisioned
Resource Pool 336 to monitor and update their current health grade
model; and [0072] c) providing inputs for Performing Provisioning
Health Analysis 330.
[0073] Referring to FIG. 4, the HGM component 308 (FIG. 3) is
further illustrated. Each available resource is graded based on its
current state. Continuous grade monitoring allows for re-hashing
the grade parameters. FIG. 4 illustrates an XML representation of a
Health Grading Model 308. Each column represents the same model at
different levels of detail. The first column, generally identified
by reference numeral 400, provides the highest level of elements
comprising the Health Grading model. These elements are resource
type 402, resource id 404, and resource health grading 406. The
resource health grading 406 is further comprised of elements
AbsoluteWeightedScore 408 and RelativeWeightedScore 410.
[0074] The second column, generally identified by reference numeral
412, depicts the details of the AbsoluteWeightedScore 408 element
from the first column 400. For each resource, there can be one or
many health parameters which are depicted by HealthParameter_1
413-HealthParameter_N 414. Each of these parameters has values
corresponding to the keys of CurrentValue 416, IsCritical 418,
LowerThreshold 420 and UpperThreshold 422 values.
[0075] Similarly, the third column, generally identified by
reference numeral 424, further details the RelativeWeightedScore
410 from the first column 400. The RelativeWeightedScore 410 is an
XML representation, wherein the health of the resource is graded
based on relative comparison of similar type of available
resources. Each of the segmented scores within
RelativeWeightedScore can have an absolute value of 0-100, 100
being the maximum available within the set of available resources,
0 being the minimum available within the set of available
resources. For example, the <SegmentedParameterList> element
within the RelativeWeightedScore 410 could have a representation
like: CPU|Memory|Storage|N/W|Downtime and the corresponding
<SegmentedParameterValue> element representation can be
80|94|100|72|95. The interpretation and representation of each of
these segmented parameter list(s), their values and the value range
would be resource specific and extended further based on the actual
embodiment. It is to be understood that the list of elements shown
in FIG. 4 is for the purpose of illustration only, and can be
easily extended to accommodate various other element types that
might be required based on the specific application of the present
invention.
[0076] Returning to FIG. 3, the second step (block 204 of FIG. 2)
is to determine current resource needs of the job tenancy. The
components for this step include: [0077] 1) Tenancy Requirements
and Constraints 316--Specified requirements and constraints for
tenancy; [0078] 2) Multi-dimensional Modeling of Tenancy
Requirements (RTM) 318--Classified requirements based on
functional, non-functional and constraints; [0079] 3) Candidate
Provisioning Models (CPM) 322--Repository of currently available
resources for provisioning identified based on health and
predictive analysis; [0080] 4) Identifying Provisioning Plans based
on CTM Matching 324--Has multiple responsibilities of: [0081] a)
Match 1: Identify closest (active/inactive) existing provisioning
from CTM 306 that matches current RTM 318; [0082] b) Match 2:
Identify the closest CPM 322, satisfying the CTM 306 of Match 1;
and [0083] c) Match 3: If no match is found from CTM 306, identify
closest required CPM 322 satisfying the RTM 318.
[0084] Referring to FIG. 5, an XML representation of a CTM (306 in
FIG. 3) is generally indicated by reference numeral 500, a PHM (310
in FIG. 3) is generally indicated by reference numeral 502, and a
CPM (322 in FIG. 3) is generally indicated by reference numeral
504.
[0085] The CatalogedTenancyModel (CTM 306 in FIG. 3), generally
identified by reference numeral 500, is comprised of the elements
of: CatalogedTenancyModelId 506, a reference to the
Multi-Dimensional Modeling of Tenancy Requirements (RTM 318) by way
of the value of RequirementTenancyModel_id 508, and details on one
or more Provisioned Resources 510. Each of the provisioned
resources (such as ResourceId_1 512) is, in turn, comprised of the
elements of ResourceType 514 and AbsoluteWeightedScore 516.
[0086] The ProvisioningHealthModel (PHM 310 in FIG. 3), generally
identified by reference numeral 502, comprises the elements of: a
reference to the CTM (306 in FIG. 3), by way of element
CatalogedTenancyModel_Id 518, the TenancySatisfyingIndex 520 value
and one or more resources that constitute a specific instance of
CTM (306 in FIG. 3).
[0087] The CandidateProvisioningModel (CPM 322 in FIG. 3),
generally identified by reference numeral 504, is comprised of the
elements of: a reference to the RTM (318 in FIG. 3) by way of
element RequirementTenancyModel_Id 524, and the identified
CandidateResources 526 by way of one or more resources, such as
ResourceID_1 528, that can satisfy a specific instance of RTM (318
in FIG. 3). It is to be understood that the list of elements shown
in FIG. 4 is for the purpose of illustration only, and can be
easily extended to accommodate various other element types that
might be required based on the specific application of the present
invention.
[0088] Referring to FIG. 6, an XML representation of a Requirement
Tenancy Model, generally identified by reference numeral 600 (RTM
318 in FIG. 3), is illustrated. Each column depicted in FIG. 6
represents the same Requirement Tenancy Model 600 but at different
levels of detail. Typical Functional requirements, generally
identified by reference numeral 602, for a Requirement Tenancy
Model, may comprise data parameters of HostingConstraints 608,
TenancyDomain 610, TenancyLayers 612, TenancyPriority 614, Workflow
618, and the TenancyServiceModels 620, which in turn may comprise
ConfigurationSettings 622 and SecuityLevels 624.
[0089] Typical Non-Functional requirements, generally identified by
reference numeral 604, for a Requirement Tenancy Model, may
comprise data parameters of ProcessorUtilization 626, size of
PersistentStorageRequired 628, ResponseTime 630, AvailabilityFactor
632, number of ScalabilityNodes 634, and number of RedundancyNodes
636.
[0090] Typical Constraints, generally identified by reference
numeral 606, for a Requirement Tenancy Model, could comprise
DomainConstraints 638 and OperationalConstraints 640. The
DomainConstraints 638, in turn, can capture data values for
CacheRequests 642, TransactionRetentionPeriod 644, AccessControl
646. The OperationalConstraints 640 can capture data values for
PeakLoad 648, OptimalLoad 650, PeakDurationOfDay 652, and
IsolationLevels 654. It is to be understood that the list of
elements shown in FIG. 6 is for the purpose of illustration only,
and can be easily extended to accommodate various other element
types that might be required based on the specific application of
the present invention.
[0091] Returning to FIG. 3, the third step (block 206 of FIG. 2) is
to dynamically provision suitable resources. The components used
for this step include: [0092] 1) Predictive Provisioning Rules
326--Set of rules used for predictive analysis, based on past
experience; [0093] 2) Initial Health State at Provisioning Start
328--Represents initial health state of the Provisioned Resource
Pool for RTM 336; [0094] 3) Perform Provisioning Health Analysis
330--Has multiple responsibilities of: [0095] a. Classifying
currently provisioned resources based on updated health grades; and
[0096] b. Applying Predictive Provisioning Rules 326, to identify
potentially/already unhealthy resources; [0097] 4) Identify
Provisioning Reallocation Plans 332--Has responsibility to identify
plans on reallocation of current unhealthy resources based on
health analysis; [0098] 5) Dynamic Provisioning Plan Customizer and
Validator 334--Has multiple responsibilities of: [0099] a.
Identifying provisioned resources from candidate pool, based on
required provisioning for RTM and reallocation plans; and [0100] b.
Validating the provisioned resources plan, at end of cycle, based
on fulfillment of tenancy requirements; and [0101] 6) Provisioned
Resource Pool for RTM 336--Set of healthy resources provisioned to
satisfy tenancy requirements and constraints.
[0102] Referring to FIG. 7, examples of Provisioned Resource Pools,
generally identified by reference numerals 700 and 702, are shown
as XML representations. Each column 700 and 702 represents the same
model, however, at different levels of detail. This model depicts
the final set of provisioned resources that satisfy the needs of a
given Requirement Tenancy Model (RTM 318 in FIG. 3). Each
ProvisionedResourcePool model 700 and 702 typically has the
elements of ProvisionId 704, a reference to the RTM, by way of the
value of RequirementTenancyModel_id 706, and details on one or more
resources, such as ResorceId_1 707, ResorceId_2 708, and
ResorceId_N 709 comprising the provisionings. These resources can
be of various types and each resource in turn is comprised of the
elements AbsoluteWeightedScore 710 and RelativeWeightedScore 712.
It is to be understood that the list of elements shown in FIG. 7 is
for the purpose of illustration only, and can be easily extended to
accommodate various other element types that might be required
based on the specific application of the present invention.
[0103] One embodiment of the present invention will now be
discussed with reference to FIG. 3 and the three steps, previously
described above, i.e.: [0104] Step 1: Determine and monitor the
quality of provisioned resources; [0105] Step 2: Determine current
resource needs of job tenancy; and [0106] Step 3: Determine current
resource needs of job tenancy.
[0107] Step One: Determine and Monitor the Quality of Provisioned
Resources: [0108] 1. Initially, the resources in the Candidate
Resource Pool 312 (FIG. 3) are similar to those of the resources in
the Initial Resource Pool 302. The initial resource pool is the set
of all available resources for provisioning. It is assumed that a
set of resources are already available for provisioning, as this is
the starting state of a cloud system with given resources. The
Candidate Resource Pool is a set of resources that qualify for
current tenancy requirement (wherein the past tenancy experience is
already accounted for). [0109] 2. Determine the measured health
summary of resources available in the initial resource pool using
resource type based parameterized health summary for each
individual resource. For example, as previously stated above, in a
typical computer system, the parameterized health summary would
comprise the number of available CPU cores, available RAM for
application and infrastructure runtime components (physical and
virtual), Network bandwidth, available disk storage, and etc. The
measured health for all of the parameters varies dynamically.
[0110] 3. Determine the provisioning health model (PHM 310) based
on resource types used for the specific tenancy requirements as
captured in the Cataloged Tenancy Model (CTM 306). [0111] 4.
Determine the health grading model (HGM 308) to have either a
relative or absolute grading of the resources to determine the
resource equivalence. [0112] 5. Update the HGM 308 and PHM 310
using the health grade monitor 314 to reclassify the Candidate
Resource Pool (CRP 312) by filtering out any mismatched
resources.
[0113] Step 2: Determine Current Resource Needs of Job Tenancy:
[0114] 1. Identify the closest existing tenant provisioned (either
active or inactive) from the Cataloged Tenancy Model (CTM 306)
pool, based on the RTM 318 match (Match 1). [0115] 2. Identify the
corresponding provision model from the result of Match 1 and
identify the closest Candidate Provision Model (CPM 322), i.e.,
Match 2. The identified Candidate Provision Model is fed into the
Dynamic Provisioning Plan Customizer and Validator 334. [0116] 3.
If Match 1 fails or if Match 2 fails, identify the closest required
provision model from CPM 322.
[0117] Step 3: Determine the Current Resource Needs of Job Tenancy:
[0118] 1. Initially, the Provisioned Resource Pool for RTM 336
would be similar to that of the Candidate Resource Pool 312. [0119]
2. Feed the Initial Health State at Provisioning Start 328 into the
Perform Provisioning Health Analysis 330. This determines if the
currently allocated resources need any re-allocation. Also, the
data set is used to update Candidate Provisioning Models 322 based
on the analysis and input from the Health Grade Monitor 314 (as in
case of a newly added resource that might be more
healthy/suitable). [0120] 3. During the reallocation, if any, a new
provisioning plan as derived from the Candidate Provisioning Models
322, and is validated by the Dynamic Provisioning Plan Customizer
and Validator 334. The new resources are allocated from the
Candidate Resource Pool 312 based on the newly adjusted
provisioning plan.
[0121] The predictive provisioning rules in accordance with one
embodiment of the present invention comprise pre-defined rules
defining the threshold levels of resource parameters based on past
experience. Threshold levels are either Lower Limit or Upper Limit.
Provisioning health analysis employs a prediction algorithm in
terms of estimating the health parameter values on a given time
frame based on past data. For example, one embodiment uses an
Auto-Regressive (AR) Model for Prediction. Each of the individual
resource health parameters are tracked over a period of defined
time, so as to predict the possible next value. Let {x(k)} be the
time series of a health attribute x, where x(k) represents the
measured value of x during time interval k. At the beginning of
every interval k, a standard auto-regressive model predicts an
attribute's value for the current interval using a linear
combination of its measured value in the past several intervals,
using the following algorithm:
x ^ ( k ) = i = 1 m a i x ( k - i ) ##EQU00001##
where x (k) is the predicted value for x(k), a.sub.i's are the
predictor coefficients, and m is the order of the model that
indicates the number of past samples used for the prediction.
[0122] When the predicted value for x(k), falls out of the defined
threshold levels by the predictive provisioning rules, the
parameter is marked as critical. During the Identify Provisioning
Reallocation Plans 332, the parameters of a resource are examined
for critical flags and alternate provisioning plans are suggested.
The Dynamic Provisioning Plan Customizer and Validator 334 examines
the alternate provisioning plans and validates in relevance to the
tenancy requirement and selects the appropriate plan for
re-provisioning the tenancy.
[0123] One embodiment of the present invention is illustrated, as
follows with reference to FIG. 3: [0124] 1. The algorithm is used
to predict the value of a particular parameter (x), with inputs for
the range of historical data. [0125] 2. Varying groups of
parameters are determined based upon specific health aspects of a
given tenancy domain. For this group of parameters, the criticality
of the resource is decided based upon the predicted values defined
in the component Predictive Provisioning Rules 326. [0126] 3. For
each of the resources participating in the current tenancy
requirement provisioning, the resource is classified as a
healthy/unhealthy resource, based on criticality of specific
resource parameter(s). This is performed as part of the component
Provisioning Health Analysis 330. [0127] 4. The dynamic
provisioning plan, as well as any re-provisioning plan with a
replacement resource, would be arrived at based on this output of
the resource classification as healthy/unhealthy from step 3 above.
This is done by the component Identify Provisioning Reallocation
Plans 332. [0128] 5. The actual provisioning/reallocation would be
carried out based on the plan determined in step 4 and performed by
the component Dynamic Provisioning Plan Customizer and Validator
334.
[0129] The present invention provides at least the following
advantages over the prior art: [0130] 1. enables the capture and
representation of tenancy requirements in a formalized model, both
for future reuse considerations and for continuous conformance of
provisioning; [0131] 2. acts as an intermediary to certify and
guarantee accurate provisioning of cloud resources based upon
tenancy requirement models and resource health models; [0132] 3.
flexibly switches between health monitoring for provisioned
resources and health monitoring for candidate resource pools in
order to support published catalogue based tenancy provisioning as
well as made-to-order tenancy provisioning. [0133] 4. continuously
monitors and replaces provisioned systems based upon changing
health grades. A best-fit resource is provided for the current
tenancy requirement and, thus, resource utilization is maximized
and the cost of hosting is reduced.
[0134] The corresponding structures, materials, acts, and
equivalents of all elements in the claims below are intended to
include any structure, material, or act for performing the function
in combination with other claimed elements as specifically claimed.
The description of the present invention has been presented for
purposes of illustration and description, but is not intended to be
exhaustive or limited to the invention in the form disclosed. Many
modifications and variations will be apparent to those of ordinary
skill in the art without departing from the scope and spirit of the
invention. The embodiment was chosen and described in order to best
explain the principles of the invention and the practical
application, and to enable others of ordinary skill in the art to
understand the invention for various embodiments with various
modifications as are suited to the particular use contemplated.
[0135] Having thus described the invention of the present
application in detail and by reference to embodiments thereof, it
will be apparent that modifications and variations are possible
without departing from the scope of the invention defined in the
appended claims.
* * * * *