IP Library Granted Patent US 8,656,077
Granted Patent B2
US 8,656,077 · App. 13/093,645 · Granted Feb 18, 2014

Apparatus, method and system for aggregating computing resources

Inventors: Vladimir Miloushev (Dana Point, CA); Peter Nickolov (Laguna Niguel, CA); Becky L. Hester (Orange, CA); Borislav S. Marinov (Aliso Viejo, CA)
Assignee: CA, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,656,077
App. No.
13/093,645
Granted
Feb 18, 2014
Kind
B2
Abstract

A system for executing applications designed to run on a single SMP computer on an easily scalable network of computers, while providing each application with computing resources, including processing power, memory and others that exceed the resources available on any single computer. A server agent program, a grid switch apparatus and a grid controller apparatus are included. Methods for creating processes and resources, and for accessing resources transparently across multiple servers are also provided.

Claims (37)

1. A method for automatically assigning a plurality of resources in a distributed computing system to the same resource set, the method comprising:

collecting a particular set of statistics about accesses to resources on a plurality of servers;

determining an affinity context value for each resource of a plurality of resources for an application, the affinity context value corresponding to an amount of correlation between the allocation of each resource of the plurality of resources among the plurality of servers in a given context and the allocation of other resources of the plurality of resources among the plurality of servers in the given context;

identifying a closely coupled plurality of resources among the plurality of resources for the application based on the affinity context values for the plurality of resources for the application, each resource of the closely coupled plurality of resources having a matching affinity context value; and

assigning, by a grid switch, the closely coupled plurality of resources to a particular resource set on a particular server of the plurality of servers based on the particular set of statistics about accesses to resources on the plurality of servers.

2. The method of claim 1 , wherein assigning the closely coupled plurality of resources to the particular resource set on the particular server comprises moving a resource of the closely coupled plurality of resources from a server on which the resource was created to the particular server.

3. The method of claim 1 , wherein assigning the closely coupled plurality of resources to the particular resource set on the particular server comprises suspending a thread currently accessing a resource of the closely coupled plurality of resources before moving the resource to the particular server.

4. The method of claim 1 , wherein determining the affinity context value for each resource of the plurality of resources for the application comprises determining that a parent object and a child object, which is allocated by the parent object, among the plurality of resources for the application have matching affinity context values.

5. The method of claim 1 , wherein the application provides the affinity context value for each of the plurality of resources for the application.

6. The method of claim 1 , wherein assigning the closely coupled plurality of resources to the particular resource set on the particular server comprises selecting a next-in-order server from an ordered set of available servers as the particular server.

7. A system for automatically assigning a plurality of resources in a distributed computing environment to the same resource set, the system comprising:

a grid switch configured to:

collect a particular set of statistics about accesses to resources on a plurality of servers,

determine an affinity context value for each resource of a plurality of resources for an application, the affinity context value corresponding to an amount of correlation between the allocation of each resource of the plurality of resources among the plurality of servers in a given context and the allocation of other resources of the plurality of resources among the plurality of servers in the given context,

identify a closely coupled plurality of resources among the plurality of resources for the application based on the affinity context values for the plurality of resources for the application, each resource of the closely coupled plurality of resources having a matching affinity context value, and

assign the closely coupled plurality of resources to a particular resource set on a particular server of the plurality of servers based on the particular set of statistics about accesses to resources on the plurality of servers.

8. The system of claim 7 , wherein the grid switch is configured to move a resource of the closely coupled plurality of resources from a server on which the resource was created to the particular server.

9. The system of claim 7 , wherein the grid switch is configured to suspend a thread currently accessing a resource of the closely coupled plurality of resources before moving the resource to the particular server.

10. The method of claim 7 , wherein the grid switch is configured to determine that a parent object and a child object, which is allocated by the parent object, among the plurality of resources for the application have matching affinity context values.

11. The method of claim 7 , wherein the grid switch is configured to receive the affinity context value for each of the plurality of resources for the application from the application.

12. The method of claim 7 , wherein the grid switch is configured to select a next-in-order server from an ordered set of available servers as the particular server.

13. A non-transitory, computer-readable memory storing computer-readable instructions that, when executed by a processor configured to operate as a grid switch, instruct the processor to perform processes comprising:

collecting a particular set of statistics about accesses to resources on a plurality of servers;

determining an affinity context value for each resource of a plurality of resources for an application, the affinity context value corresponding to an amount of correlation between the allocation of each resource of the plurality of resources among the plurality of servers in a given context and the allocation of other resources of the plurality of resources among the plurality of servers in the given context;

identifying a closely coupled plurality of resources among the plurality of resources for the application based on the affinity context values for the plurality of resources for the application, each resource of the closely coupled plurality of resources having a matching affinity context value; and

assigning the closely coupled plurality of resources to a particular resource set on a particular server of the plurality of servers based on the particular set of statistics about accesses to resources on the plurality of servers.

14. The non-transitory, computer-readable memory according to claim 13 ,

wherein the instruction for the processor to perform the process of assigning the closely coupled plurality of resources to the particular resource set on the particular server comprises:

an instruction for the processor to perform a process comprising moving a resource of the closely coupled plurality of resources from a server on which the resource was created to the particular server.

15. The non-transitory, computer-readable memory according to claim 13 ,

wherein the instruction for the processor to perform the process of assigning the closely coupled plurality of resources to the particular resource set on the particular server comprises:

an instruction for the processor to perform a process comprising suspending a thread currently accessing a resource of the closely coupled plurality of resources before moving the resource to the particular server.

16. The non-transitory, computer-readable memory according to claim 13 , wherein determining the affinity context value for each resource of the plurality of resources for the application comprises determining that a parent object and a child object, which is allocated by the parent object, among the plurality of resources for the application have matching affinity context values.

17. The non-transitory, computer-readable memory according to claim 13 , wherein the application provides the affinity context value for each of the plurality of resources for the application.

18. The non-transitory, computer-readable memory according to claim 13 ,

wherein the instruction for the processor to perform the process of assigning the closely coupled plurality of resources to the particular resource set on the particular server comprises:

an instruction for the processor to perform a process comprising selecting a next-in-order server from an ordered set of available servers as the particular server.

Assignments (3)
MERGER Recorded Oct 29, 2013
From: COMPUTER ASSOCIATES THINK, INC.
To: CA, INC.
Reel/Frame 031499/0980 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2011
From: MILOUSHEV, VLADIMIR I.; NICKOLOV, PETER A.; MARINOV, BORISLAV S.; HESTER, BECKY L.
To: 3TERA, INC.
Reel/Frame 026821/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2011
From: 3TERA, INC.
To: COMPUTER ASSOCIATES THINK, INC.
Reel/Frame 026821/0880 →
Continuity (4)
Continuation 12149012 · Apr 24, 2008
Continuation 11024641 · Dec 29, 2004
Provisional Application 60533732 · Dec 30, 2003
Related Publication 20110202927A1 · Aug 18, 2011