IP Library Granted Patent US 10,616,137
Granted Patent B2
US 10,616,137 · App. 16/224,624 · Granted Apr 7, 2020

Capacity-based server selection

Inventor: Raju Kumar (San Jose, CA)
Assignee: VMWARE, INC.
H04L47/823H04L29/0827H04L29/08153H04L29/08171H04L29/08243H04L43/0817H04L43/0876H04L43/16H04L67/1004H04L67/1008H04L67/1023H04L67/1025H04L67/1031
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 10,616,137
App. No.
16/224,624
Granted
Apr 7, 2020
Kind
B2
Abstract

A network request is received. A server is selected among a plurality of servers eligible to handle the network request, wherein selecting the server includes selecting a server in an ordering of the plurality of servers based its load level. The selected server is enabled to handle the network request.

Claims (41)

1. A method for reducing the number of servers used to process requests while maintaining an acceptable level of service, the method, comprising:

receiving a request for processing by one of the servers;

identifying a plurality of servers eligible to handle the request;

selecting a server from the identified plurality of eligible servers based on the selected server having a load level that is higher than at least one other server in the plurality of servers and lower than a load threshold for the selected server in order to maximize the use of the selected server,

wherein the load threshold is dynamically exceedable based at least in part on a determination that each other server in the plurality of eligible servers has a load level that meets or exceeds a threshold for the other server; and

providing the request to the selected server to handle the request.

2. The method of claim 1 , wherein the identified plurality of eligible servers is traversed in an order and the traversal order of the plurality of servers is predetermined.

3. The method of claim 1 , wherein the identified plurality of eligible servers is traversed in an order and the traversal order of the plurality of servers is at least in part specified by a user.

4. The method of claim 1 , wherein the identified plurality of eligible servers is traversed in an order and the traversal order of the plurality servers is determined based at least in part on an ordering of a performance characteristic of each server of the plurality of servers.

5. The method of claim 1 , wherein a total number of network connection requests being handled by each server of the plurality of servers is tracked to determine a current load level of the server.

6. The method of claim 1 , wherein the program further comprises a set of instructions for determining the load threshold for each sever based on a capacity of the server.

7. The method of claim 1 , wherein at least a plurality of servers in the plurality of eligible servers each have a load threshold that is different from each other.

8. The method of claim 1 , wherein the load threshold is determined for the selected server at least in part by determining a performance characteristic of the selected server at a plurality of load levels of the selected server and by determining a historical performance value for each of the plurality of load levels.

9. The method of claim 8 , wherein the load threshold is determined for the selected server at least in part by selecting a load level that corresponds to a worst historical performance value that still meets an acceptable performance value limit.

10. The method of claim 8 , wherein determining the historical performance value for at least one of the plurality of load levels includes averaging performance values associated with the at least one of the plurality of load levels.

11. The method of claim 1 , wherein the load threshold is determined for the selected server at least in part by measuring a latency of the selected server when processing a previous request.

12. The method of claim 1 , wherein the load threshold is determined for the selected server at least in part by cross normalizing the load threshold across different initial load thresholds of the plurality of servers to maintain a similar performance value of each server at the load threshold for that server.

13. The method of claim 1 , wherein the load threshold for the selected server is periodically determined using recent performance characteristics of the selected server.

14. The method of claim 1 , wherein at least a portion of the method is performed by a network load balancer.

15. The method of claim 1 , wherein providing the request to the selected server comprises establishing a connection with the selected server.

16. The method of claim 1 , wherein providing the request to the selected server comprises serving as a proxy for communication between a client that provided the request and the selected server.

17. The method of claim 1 , wherein:

the request is a first request and the plurality of eligible servers is a first plurality of servers, and

for a second request for processing by one of the servers, a second plurality of servers eligible to handle the request is identified that does not include at least one server in the first plurality of eligible servers based on a determination that the at least one server in the first plurality of servers has not been handling requests for at least a threshold amount of time.

18. The method of claim 1 , wherein:

the request is a first request and the plurality of eligible servers is a first plurality of servers, and

for a second request for processing by one of the servers, a second plurality of servers eligible to handle the request is identified that includes at least one server that was not included in the first plurality of eligible servers based on a determination that every server of the first plurality of servers has reached its respective load threshold for at least a threshold amount of time.

19. A system comprising:

a set of one or more processors; and

a non-transitory machine readable medium storing a program for execution by the set of processors, the program for reducing the number of servers used to process requests while maintaining an acceptable level of service, the program comprising sets of instructions for:

receiving a request for processing by one of the servers;

identifying a plurality of servers eligible to handle the request;

selecting a server from the identified plurality of eligible servers based on the selected server having a load level that is higher than at least one other server in the plurality of servers and lower than a load threshold for the selected server in order to maximize the use of the selected server,

wherein the load threshold is dynamically exceedable based at least in part on a determination that each other server in the plurality of eligible servers has a load level that meets or exceeds a threshold for the other server; and

providing the request to the selected server to handle the request.

20. A non-transitory machine readable medium storing a program for execution by a set of processors, the program for reducing the number of servers used to process requests while maintaining an acceptable level of service, the program comprising sets of instructions for:

receiving a request for processing by one of the servers;

identifying a plurality of servers eligible to handle the request;

selecting a server from the identified plurality of eligible servers based on the selected server having a load level that is higher than at least one other server in the plurality of servers and lower than a load threshold for the selected server in order to maximize the use of the selected server,

wherein the load threshold is dynamically exceedable based at least in part on a determination that each other server in the plurality of eligible servers has a load level that meets or exceeds a threshold for the other server; and

providing the request to the selected server to handle the request.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
NUNC PRO TUNC ASSIGNMENT Recorded Oct 24, 2019
From: AVI NETWORKS, INC.
To: VMWARE, INC.
Reel/Frame 050826/0640 →
Continuity (4)
Continuation 15956513 · Apr 18, 2018
Continuation 14788454 · Jun 30, 2015
Provisional Application 62021966 · Jul 8, 2014
Related Publication 20190149482A1 · May 16, 2019