Programmatically allocating memory among competing services in a distributed computing environment
AssigneeInternational Business Machines Corporation
InventorsJeffrey S. Chase, Ronald P. Doyle
Life of this patent
Estimating the term…
Abstract
Techniques are disclosed for programmatically allocating memory among competing services in a distributed computing environment. Characteristics of web request streams and formulas for cache hit rates and client response times are used to create an objective function for memory allocation, such that maximum benefit can be realized from the memory allocations. When a particular service is allocated more memory, it can store more of its objects in cache, which improves client response time. Optionally, information from service level agreements may be used as input to the memory allocation computations.
Claims33
A method of allocating memory among a plurality of competing services in a distributed computing environment, comprising steps of:
- determining an average per-request client response time formula for each particular one of the plurality of competing services;
- computing a derivative of each of the average per-request client response time formulas;
- computing a slope of a line for each computed derivative;
- and
- selecting one of the competing services for allocation of additional memory, based on the computed slope for that competing service.
A system for allocating memory among a plurality of competing services in a distributed computing environment, comprising:
- means for determining an average per-request client response time formula for each particular one of the plurality of competing services;
- means for computing a derivative of each of the average per-request client response time formulas;
- means for computing a slope of a line for each computed derivative;
- and
- means for selecting one of the competing services for allocation of additional memory, based on the computed slope for that competing service.
A computer program product for allocating memory among a plurality of competing services in a distributed computing environment, the computer program product embodied on one or more computer-readable media and comprising:
- computer-readable program code means for determining an average per-request client response time formula for each particular one of the plurality of competing services;
- computer-readable program code means for computing a derivative of each of the average per-request client response time formulas;
- computer-readable program code means for computing a slope of a line for each computed derivative;
- and
- computer-readable program code means for selecting one of the competing services for allocation of additional memory, based on the computed slope for that competing service.
A method of reallocating memory among a plurality of competing services in a distributed computing environment, comprising steps of:
- determining an average per-request client response time formula for each particular one of the plurality of competing services;
- computing a derivative of each of the average per-request client response time formulas;
- computing a slope of a line for each computed derivative;
- selecting a first one of the competing services for allocation of additional memory;
- selecting a second one of the competing services for de-allocation of allocated memory;
- and
- de-allocating a portion of the allocated memory from the second competing service and reallocating that portion to the first competing service.
A system for reallocating memory among a plurality of competing services in a distributed computing environment, comprising:
- means for determining an average per-request client response time formula for each particular one of the plurality of competing services;
- means for computing a derivative of each of the average per-request client response time formulas;
- means for computing a slope of a line for each computed derivative;
- means for selecting a first one of the competing services for allocation of additional memory;
- means for selecting a second one of the competing services for de-allocation of allocated memory;
- and
- de-allocating a portion of the allocated memory from the second competing service and reallocating that portion to the first competing service.
A computer program product for reallocating memory among a plurality of competing services in a distributed computing environment, the computer program product embodied on one or more computer-readable media and comprising:
- computer-readable program code means for determining an average per-request client response time formula for each particular one of the plurality of competing services;
- computer-readable program code means for computing a derivative of each of the average per-request client response time formulas;
- computer-readable program code means for computing a slope of a line for each computed derivative;
- computer-readable program code means for selecting a first one of the competing services for allocation of additional memory;
- computer-readable program code means for selecting a second one of the competing services for de-allocation of allocated memory;
- and
- computer-readable program code de-allocating a portion of the allocated memory from the second competing service and reallocating that portion to the first competing service.
A method of doing business by allocating memory among competing services in a distributed computing environment, comprising steps of:
- determining an average per-request client response time formula for each particular one of the plurality of competing services;
- computing a derivative of each of the average per-request client response time formulas;
- computing a slope of a line for each computed derivative;
- when additional memory is to be allocated, performing the step of:
- selecting one of the competing services for allocation of additional memory, based on the computed slope for that competing service;
- and
- when allocated memory is to be reallocated, performing the steps of:
- selecting a first one of the competing services for allocation of additional memory;
- selecting a second one of the competing services for de-allocation of allocated memory;
- and
- de-allocating a portion of the allocated memory from the second competing service and reallocating that portion to the first competing service.
Dependencies are inferred from the claim text.