Method and system for load balancing in a distributed object system
First Claim
1. A distributed object load balancing system for use with a network comprising a plurality of computers including a first computer, wherein the computers are operable to access a plurality of shared objects in a distributed object system, the load balancing system comprising:
- a workload service running on the first computer;
at least one application process running on at least one of the plurality of computers different from the first computer, wherein the at least one application process is a multi-threaded process comprising a statistics thread;
wherein the application process is operable to instruct an object comprising a part of the application process to record at least one performance statistic;
wherein the statistics thread is operable to wake up periodically and obtain the at least one performance statistic, the statistics thread further operable to cause the at least one performance statistic to be sent to the workload service;
wherein a new shared object comprising part of the distributed object system is created in the memory of one of the plurality of computers based upon performance statistics maintained by the workload service; and
wherein the one of the plurality of computers for the new shared object is selected based upon a prediction of resources that will be consumed by the new shared object.
3 Assignments
0 Petitions
Accused Products
Abstract
One aspect of the invention is a method for load balancing in a distributed object system running on a network comprising a plurality of computers (42, 44) including a first computer (44) wherein the computers (42, 44) are operable to access a plurality of shared objects in a distributed object system. The method comprises instructing an object comprising a part of an application process (50) running on the first computer (44) to record at least one performance statistic in response to a message directed to the object. The application process (50) comprises a multi-threaded process and includes a statistics thread (54). Periodically, at least one performance statistic is obtained using the statistics thread (54) and that performance statistic is sent to a local agent process (48) running on the first computer (44). The performance statistics are relayed to a workload service (46) running on a second computer (42) connected to the network. A new distributed object is instantiated in the memory of one of the plurality of computers (42, 44) based upon performance statistics maintained by the workload service (46).
97 Citations
23 Claims
-
1. A distributed object load balancing system for use with a network comprising a plurality of computers including a first computer, wherein the computers are operable to access a plurality of shared objects in a distributed object system, the load balancing system comprising:
-
a workload service running on the first computer;
at least one application process running on at least one of the plurality of computers different from the first computer, wherein the at least one application process is a multi-threaded process comprising a statistics thread;
wherein the application process is operable to instruct an object comprising a part of the application process to record at least one performance statistic;
wherein the statistics thread is operable to wake up periodically and obtain the at least one performance statistic, the statistics thread further operable to cause the at least one performance statistic to be sent to the workload service;
wherein a new shared object comprising part of the distributed object system is created in the memory of one of the plurality of computers based upon performance statistics maintained by the workload service; and
wherein the one of the plurality of computers for the new shared object is selected based upon a prediction of resources that will be consumed by the new shared object. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
a local agent running on one of the plurality of computers;
wherein that statistics thread is operable to cause the at least one performance statistic to be sent to the workload service by sending the at least one performance statistic to the local agent; and
wherein the local agent is operable to receive performance statistics from one or more statistics threads and relay those performance statistics to the workload service.
-
-
7. The distributed object load balancing system of claim 6, wherein the local agent receives performance statistics from multiple statistics threads, each statistics thread associated with an application process running on the same computer with the local agent.
-
8. The distributed object load balancing system of claim 1, wherein the prediction is based on an average workload based on the at least one performance statistic and associated with an object class associated with the new shared object.
-
9. A distributed object load balancing system for use with a network comprising a plurality of computers including a first computer, wherein the computers are operable to access a plurality of shared objects in a distributed object system, the load balancing system comprising:
-
a workload service running on the first computer;
at least one application process running on at least one of the plurality of computers different from the first computer, wherein the at least one application process is a multi-threaded process comprising a statistics thread;
wherein the application process is operable to instruct an object comprising a part of the application process to record at least one performance statistic;
wherein the statistics thread is operable to wake up periodically and obtain the at least one performance statistic, the statistics thread further operable to cause the at least one performance statistic to be sent to the workload service;
wherein a new shared object comprising part of the distributed object system is created in the memory of one of the plurality of computers based upon performance statistics maintained by the workload service; and
wherein the at least one performance statistic comprises a statistic selected from the group consisting of the number of objects active for a given object class, the time spent in processing a message to an object, the computer on which each object resides, what methods have been invoked on each object, a cumulative measure of the time spent in processing a type of message to all instances of a given object class, a cumulative measure of the number of times a particular method has been invoked for all instances of a given object class, and the number of times a method has been invoked for a given period of time. - View Dependent Claims (12, 13, 14)
traversing the statistics data structure to obtain statistics data and causing the statistics data to be sent to the workload service using the statistics thread.
-
-
10. A method for load balancing in a distributed object system running on a network comprising a plurality of computers including a first computer, wherein the computers are operable to access a plurality of shared objects in a distributed object system, the method comprising:
-
instructing an object comprising a part of an application process running on the first computer to record at least one performance statistic in response to a message directed to the object, the application process comprising a multi-threaded process and including a statistics thread;
periodically obtaining the at least one performance statistic using the statistics thread;
relaying the at least one performance statistic to a workload service running on a second computer connected to the network;
instantiating a new distributed object comprising part of the distributed object system in the memory of one of the plurality of computers based upon performance statistics maintained by the workload service; and
selecting the one of the plurality of computers for the new shared object based upon a prediction of resources that will be consumed by the new shared object. - View Dependent Claims (11, 15, 16, 17, 18, 19, 20, 21, 22)
instructing an object comprising a part of the application process to record the at least one performance statistic using an interceptor thread that generates the instruction to the object at the conclusion of the processing of a message sent to that object.
-
-
15. The method of claim 10, wherein the periodicity of obtaining the at least one performance statistic is configurable for each application process.
-
16. The method of claim 10, wherein the statistics thread relays the at least one performance statistic to the workload service by sending the statistic to a local agent process running on the first computer, the local agent process operable to relay that at least one performance statistic to the workload service.
-
17. The method of claim 16, wherein the local agent receives performance statistics from multiple statistics threads, each statistics thread associated with an application process running on the same computer with the local agent.
-
18. The method of claim 17, wherein each object in an application process stores its statistics in a statistics data structure.
-
19. The method of claim 18, further comprising:
traversing the statistics data structure to obtain statistics data and sending the statistics data to the local agent using the statistics thread.
-
20. The method of claim 17, wherein the periodicity of obtaining the at least one performance statistic is configurable for each application process.
-
21. The method of claim 10 and further comprising determining an average workload associated an object class and based on the at least one performance statistic.
-
22. The method of claim 21, wherein instantiating the new shared object comprises:
-
predicting the resources that will be consumed by the new shared object based on the average workload; and
selecting the one of the plurality of computers for the new shared object based on the prediction.
-
-
23. A method for load balancing in a distributed object system running on a network comprising a plurality of computers including a first computer, wherein the computers are operable to access a plurality of shared objects in a distributed object system, the method comprising:
-
instructing an object comprising a part of an application process running on the first computer to record at least one performance statistic in response to a message directed to the object, the application process comprising a multi-threaded process and including a statistics thread;
periodically obtaining the at least one performance statistic using the statistics thread;
relaying the at least one performance statistic to a workload service running on a second computer connected to the network; and
instantiating a new distributed object comprising part of the distributed object system in the memory of one of the plurality of computers based upon performance statistics maintained by the workload service; and
wherein the at least one performance statistic comprises a statistic selected from the group consisting of the number of objects active for a given object class, the time spent in processing a message to an object, the computer on which each object resides, what methods have been invoked on each object, a cumulative measure of the time spent in processing a type of message to all instances of a given object class, a cumulative measure of the number of times a particular method has been invoked for all instances of a given object class, and the number of times a method has been invoked for a given period of time.
-
Specification