IP Library Granted Patent US 8,959,228
Granted Patent B2
US 8,959,228 · App. 13/515,052 · Granted Feb 17, 2015

Optimization of resource utilization in a collection of devices

Inventor: Ezekiel Kruglick (Poway, CA)
Assignee: Empire Technology Development LLC
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,959,228
App. No.
13/515,052
Granted
Feb 17, 2015
Kind
B2
Abstract

Technologies are described herein for optimizing resource utilization in a collection of devices having hierarchical network layers. Some example technologies may identify packets exchanged between processes executed on collections of server computers. The hierarchical network layers may couple the collections of server computers. The technologies may determine virtual machine groups based on the identified packets. Each of the virtual machine groups may identify one or more virtual machines configured on the collections of server computers to execute one or more processes. The virtual machine groups may be configured to increase data traffic in a lower layer in the hierarchical network layers and to decrease the data traffic in a higher layer in the hierarchical network layers. The technologies may relocate the virtual machines between the collections of server computers according to the virtual machine groups.

Claims (40)

1. A method to optimize resource utilization in a collection of devices that include a plurality of hierarchical network layers, the method comprising:

identifying a plurality of packets exchanged between a plurality of processes being executed by virtual machines on collections of server computers, wherein the plurality of hierarchical network layers couple the collections of server computers;

identifying one or more pairs of virtual machines that include a first virtual machine that communicates with a second virtual machine using a higher layer in the plurality of hierarchical network layers; and

relocating one or more of the first virtual machine or the second virtual machine in the one or more pairs of virtual machines to another server computer in the collections of server computers such that the first virtual machine and the second virtual machine communicate using a lower layer of the plurality of hierarchical network layers, wherein the lower layer is one or more of an edge layer or an aggregation layer that includes a first plurality of network elements coupled to the collections of server computers; and wherein the higher layer includes a core layer that includes a second plurality of network elements coupled to the first plurality of network elements and coupled to a network, wherein the relocation is configured to increase data traffic in a lower layer in the plurality of hierarchical network layers and to decrease the data traffic in a higher layer in the plurality of hierarchical network layers.

2. The method of claim 1 , further comprising determining a plurality of virtual machine groups based on the identified plurality of packets based on a source identifier, a destination identifier, and a data size in the identified plurality of packets.

3. The method of claim 2 , further comprising retrieving the source identifier, the destination identifier, and the data size from a header in the each of the plurality of packets.

4. The method of claim 2 , wherein determining the plurality of virtual machine groups comprises:

generating a matrix having a plurality of rows, a plurality of columns, and a plurality of values, each of the plurality of values corresponding to one of the plurality of rows and one of the plurality of columns, the plurality of rows associated with a plurality of source identifiers, the plurality of columns associated with a plurality of destination identifiers;

for the each of the plurality of packets, adding the data size to a value in the plurality of values corresponding to the source identifier and the destination identifier; and

determining the plurality of virtual machine groups such that each of the plurality of virtual machine groups contains a quantity of virtual machines less than a threshold and such that the plurality of virtual machine groups maximize a score, wherein the score aggregates the values corresponding to communicating processes executed by the virtual machines in the each of the plurality of virtual machine groups.

5. The method of claim 4 , wherein the threshold comprises a maximum number of virtual machines that one of the collections of server computers is capable of running.

6. The method of claim 4 , wherein determining the plurality of virtual machine groups comprises determining the plurality of virtual machine groups via linear programming, dynamic programming, or a greedy algorithm.

7. The method of claim 4 , further comprising periodically resetting the plurality of values in the matrix.

8. The method of claim 2 , wherein determining the plurality of virtual machine groups comprises determining the plurality of virtual machine groups via a distributed computing framework.

9. The method of claim 1 , further comprising determining a plurality of virtual machine groups based on the identified plurality of packets, wherein each of the plurality of virtual machine groups identifies one or more virtual machines configured on the collections of server computers to execute one or more of the plurality of processes.

10. The method of claim 1 , wherein the plurality of hierarchical network layers comprises a third plurality of network elements coupled to the first plurality of network elements.

11. The method of claim 1 , wherein identifying the plurality of packets exchanged between the plurality of processes executed on the collections of server computers comprises capturing the plurality of packets via software running on the collections of server computers.

12. The method of claim 1 , wherein identifying the plurality of packets exchanged between the plurality of processes executed on the collections of server computers comprises capturing the plurality of packets via hardware configured on the collections of server computers.

13. The method of claim 1 , wherein relocating comprises performing lazy relocation where a virtual machine is moved when the virtual machine is idle.

14. A non-transitory computer-readable medium having computer-executable instructions stored thereon which, when executed by a computer, cause the computer to:

identify a plurality of packets exchanged between a plurality of processes being executed by virtual machines on collections of server computers, wherein a plurality of hierarchical network layers couple the collections of server computers;

identify one or more pairs of virtual machines that include a first virtual machine that communicates with a second virtual machine using a higher layer in the plurality of hierarchical network layers; and

relocate one or more of the first virtual machine or the second virtual machine in the one or more pairs of virtual machines to another server computer in the collections of server computers such that the first virtual machine and the second virtual machine communicate using a lower layer of the plurality of hierarchical network layers, wherein the lower layer is one or more of an edge layer or an aggregation layer that includes a first plurality of network elements coupled to the collections of server computers; and wherein the higher layer includes a core layer that includes a second plurality of network elements coupled to the first plurality of network elements and coupled to a network, wherein the relocation is configured to increase data traffic in a lower layer in the plurality of hierarchical network layers and to decrease the data traffic in a higher layer in the plurality of hierarchical network layers.

15. The non-transitory computer-readable medium of claim 14 , comprising further computer-executable instructions stored thereon which, when executed by the computer, cause the computer to determine a plurality of virtual machine groups based on a source identifier, a destination identifier, and a data size in the identified plurality of packets.

16. The non-transitory computer-readable medium of claim 15 , wherein to determine the plurality of virtual machine groups comprises to

generate a matrix having a plurality of rows, a plurality of columns, and a plurality of values, each of the plurality of values corresponding to one of the plurality of rows and one of the plurality of columns, the plurality of rows associated with a plurality of source identifiers, the plurality of columns associated with a plurality of destination identifiers;

for the each of the plurality of packets, add the data size to a value in the plurality of values corresponding to the source identifier and the destination identifier; and

determine the plurality of virtual machine groups such that each of the plurality of virtual machine groups contains a quantity of virtual machines less than a threshold and such that the plurality of virtual machine groups maximize a score, wherein the score aggregates the values corresponding to communicating processes executed by the virtual machines in the each of the plurality of virtual machine groups.

17. The non-transitory computer-readable medium of claim 16 , wherein the threshold comprises a maximum number of virtual machines that one of the collections of server computers is capable of running.

18. The non-transitory computer-readable medium of claim 16 , wherein to determine the plurality of virtual machine groups comprises to determine the plurality of virtual machine groups via one or more of linear programming, dynamic programming, or a greedy algorithm.

19. A computer system, comprising:

a processor;

a memory coupled to the processor; and

a program module which is executable by the processor from the memory and which, when executed by the processor, causes the computer system to identify a plurality of packets exchanged between a plurality of processes being executed by virtual machines on collections of server computers, wherein a plurality of hierarchical network layers couple the collections of server computers, and wherein each of the plurality of packets comprises a source identifier, a destination identifier, and a data size;

identify one or more pairs of virtual machines that include a first virtual machine that communicates with a second virtual machine using a higher layer in the plurality of hierarchical network layers; and

relocate one or more of the first virtual machine or the second virtual machine in the one or more pairs of virtual machines to another server computer in the virtual machines, wherein the relocation is configured to increase data traffic in a lower layer in the plurality of hierarchical network layers and to decrease the data traffic in a higher layer in the plurality of hierarchical network layers.

20. The computer system of claim 19 , wherein the program module further causes the computer to determine a plurality of virtual machine groups based on a source identifier, a destination identifier, and a data size the identified plurality of packets, including to

generate a matrix having a plurality of rows, a plurality of columns, and a plurality of values, each of the plurality of values corresponding to one of the plurality of rows and one of the plurality of columns, the plurality of rows associated with a plurality of source identifiers, the plurality of columns associated with a plurality of destination identifiers;

for the each of the plurality of packets, add the data size to a value in the plurality of values corresponding to the source identifier and the destination identifier; and

determine the plurality of virtual machine groups such that each of the plurality of virtual machine groups contains a quantity of virtual machines less than a threshold and such that the plurality of virtual machine groups maximize a score, wherein the score aggregates the values corresponding to communicating processes executed by the virtual machines in the each of the plurality of virtual machine groups.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS, RECORDED ON JANUARY 29, 2019 AT REEL 048373 FRAME 0217 Recorded Sep 22, 2025
From: CRESTLINE DIRECT FINANCE, L.P., AS COLLATERAL AGENT
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 072936/0464 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2021
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: INVINCIBLE IP LLC
Reel/Frame 055594/0500 →
RELEASE OF SECURITY INTEREST Recorded Oct 21, 2020
From: CRESTLINE DIRECT FINANCE, L.P.
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 054129/0627 →
SECURITY INTEREST Recorded Jan 29, 2019
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: CRESTLINE DIRECT FINANCE, L.P.
Reel/Frame 048373/0217 →
Continuity (1)
Related Publication 20130166749A1 · Jun 27, 2013