US20050033809A1 - Communications system providing server load balancing based upon weighted health metrics and related methods - Google Patents

Communications system providing server load balancing based upon weighted health metrics and related methods Download PDF

Info

Publication number
US20050033809A1
US20050033809A1 US10/779,402 US77940204A US2005033809A1 US 20050033809 A1 US20050033809 A1 US 20050033809A1 US 77940204 A US77940204 A US 77940204A US 2005033809 A1 US2005033809 A1 US 2005033809A1
Authority
US
United States
Prior art keywords
servers
dispatcher
job
resource usage
health metrics
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/779,402
Inventor
Steven McCarthy
Darren Gardner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Malikie Innovations Ltd
Original Assignee
TeamOn Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TeamOn Systems Inc filed Critical TeamOn Systems Inc
Priority to US10/779,402 priority Critical patent/US20050033809A1/en
Assigned to TEAMON SYSTEMS, INC. reassignment TEAMON SYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GARDNER, DARREN L., MCCARTHY, STEVEN J.
Priority to PCT/US2004/005770 priority patent/WO2005017719A2/en
Priority to CA2532677A priority patent/CA2532677C/en
Priority to EP04715074A priority patent/EP1661013A4/en
Priority to EP08150514A priority patent/EP1927921A1/en
Publication of US20050033809A1 publication Critical patent/US20050033809A1/en
Assigned to RESEARCH IN MOTION LIMITED reassignment RESEARCH IN MOTION LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TEAMON SYSTEMS, INC.
Assigned to BLACKBERRY LIMITED reassignment BLACKBERRY LIMITED CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: RESEARCH IN MOTION LIMITED
Assigned to MALIKIE INNOVATIONS LIMITED reassignment MALIKIE INNOVATIONS LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BLACKBERRY LIMITED
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers

Definitions

  • the present invention relates to the field of communications systems, and, more particularly, to server load balancing and related methods.
  • jobs are typically spread across all available machines, such as servers, for example, to provide faster processing and throughput.
  • machines such as servers
  • the load on various servers can change rapidly.
  • Traditional load balancing mechanisms have focused on externally observable characteristics of a server to infer its load.
  • U.S. Pat. No. 6,070,191 discloses a server system for processing client requests received over a communication network.
  • the server system includes a cluster of document servers and at least one redirection server.
  • the redirection server receives a client request from the network and redirects it to one of the document servers based upon a set of pre-computed redirection probabilities.
  • Each of the document servers may be an HTTP server that manages a set of documents locally and can service client requests only for the locally-available documents.
  • Documents are distributed across the document servers using a load distribution algorithm.
  • the algorithm uses access rates of the documents as a metric for distributing the documents across the servers and determining the redirection probabilities.
  • the load distribution algorithm attempts to equalize the sum of the access rates of all the documents stored at a given document server across all of the document servers.
  • a communications system which may include a plurality of servers connected together in a network, such as a wide area network (WAN).
  • the servers are for processing a plurality of different job types having respective different resource usage characteristics associated therewith.
  • each server may determine a respective health metric thereof based upon at least one job being processed thereby.
  • each server may also weight the health metric based upon the respective resource usage characteristic of the at least one job.
  • the system may also include a dispatcher for collecting the weighted health metrics from the servers and distributing jobs to the servers based thereon. Accordingly, jobs may advantageously be distributed to the servers on a relatively equal basis, even though different servers may be performing jobs utilizing different resources.
  • the resource usage characteristics may include at least one processing utilization characteristic and at least one input/output utilization characteristic.
  • the servers may map the weighted health metrics for different resource usage characteristics to a common scale.
  • the communications system may also include a knowledge base for cooperating with the dispatcher for storing the weighted health metrics.
  • the servers may provide completed job results to the dispatcher, and the weighted health metrics may be provided to the dispatcher with the completed job results.
  • the dispatcher may also periodically poll the servers for the weighted health metrics.
  • the communications system may also include at least one load generator for generating the jobs for the servers and communicating the jobs to the dispatcher. As such, the dispatcher may provide the completed job results to the at least one load generator.
  • the jobs may relate to electronic mail (e-mail) processing, for example.
  • a method aspect of the invention is for distributing jobs to a plurality of servers connected together in a network.
  • the servers may be for processing a plurality of different job types having respective different resource usage characteristics associated therewith.
  • the method may include determining a respective health metric of each server based upon at least one job being processed thereby, and weighting the health metric based upon the respective resource usage characteristic of the at least one job. Furthermore, the weighted health metrics may be collected from the servers, and the jobs may be distributed to the servers based thereon.
  • a load distributor in accordance with the present invention may include a dispatcher and a knowledge base, as described briefly above.
  • a computer-readable medium in accordance with the present invention may similarly include a dispatcher module and a knowledge base module.
  • FIG. 1 is schematic block diagram of a communications system providing server load balancing in accordance with the present invention
  • FIG. 2 is a flow diagram illustrating a load balancing method in accordance with the present invention.
  • the system 10 illustratively includes a load distributor 11 , which includes a dispatcher 12 and a knowledge base 13 .
  • the system 10 also illustratively includes a plurality of servers 14 a - 14 n for receiving tasks from the dispatcher 12 , and one or more load generators 19 for generating and communicating the tasks to the dispatcher.
  • the load distributor 11 may be implemented as a server or other computer.
  • the dispatcher 12 may be implemented as a software program or module that operates on or in conjunction with the load distributor 11 .
  • the knowledge base 13 may similarly be a database module in a data store or memory accessible by the dispatcher 12 .
  • the dispatcher 12 and the knowledge base 13 may be implemented in different devices or servers in some embodiments, as will be appreciated by those skilled in the art.
  • Each server 14 a - 14 n preferably includes a software agent or module, for example, which measures respective server-specific parameters, and returns a health metric to the dispatcher 12 .
  • the health metric may be mapped to a common scale.
  • the health metric may be mapped to a number between zero and one hundred, where zero corresponds to a server 14 being fully loaded (i.e., it is very “unhealthy”), and thus unsuitable for receiving additional tasks to perform.
  • one hundred on the common scale corresponds to a server 14 having no load (i.e., it is performing no jobs and is very “healthy”), meaning that it is well suited for receiving new tasks.
  • each server 14 a - 14 n is responsible for calculating a health metric in accordance with the common scale based upon the various tasks being performed thereon. Yet, different types of tasks may have different resource utilization characteristics associated therewith. As such, the servers 14 a - 14 n advantageously weight the heath metric thereof based upon the respective resource usage characteristics of the task(s) that it is performing.
  • resource usage characteristics generally include processing utilization characteristics, input/output (I/O) utilization characteristics, and memory utilization characteristics. More particularly, for a server 14 performing processor-intensive tasks, its metric can be weighted more heavily toward processor utilization. Similarly, another server 14 might measure network input and output, and/or a number of “threads” or concurrent network connections in use, and weight its health metric accordingly.
  • the dispatcher 12 By weighting a server's health metric toward the particular resource usage characteristic(s) being consumed thereon, the dispatcher 12 has a meaningful way to determine the relative health of the servers 14 a - 14 n and distribute new tasks to the servers based thereon.
  • prior art approaches which measure a single resource usage characteristic at each of a plurality of servers may provide an inaccurate view of the servers' health. That is, if a server was performing a very intensive I/O task, a measurement of only the server's memory utilization may errantly indicate that the server is more healthy than it actually is. This problem may still occur even where more than one resource usage characteristic is measured on each server, particularly when numerous tasks types are being processed, as will be appreciated by those skilled in the art.
  • the dispatcher 12 receives processing jobs or tasks from the load generator(s) 19 and distributes the jobs to each of the servers 14 a - 14 n based upon the weighted health metrics thereof.
  • the dispatcher 12 may not only use the weighted health metrics to decide which server 14 to distribute a job to, but it may also use them to determine how much work to put in a given job as well, as will be appreciated by those of skill in the art.
  • a given server 14 When a given server 14 is finished with a job, it preferably reports both job results and its health metric to the dispatcher 12 .
  • the health metric for each server is saved in the knowledge base 10 , where it is available to the dispatcher 12 for use in distributing future jobs. By taking frequent measurements on each server and making them available to the dispatcher 12 , the system 10 load characteristics can be tuned to a very high degree, as will be appreciated by those skilled in the art.
  • the dispatcher 12 may also report job results received from a given server 14 back to the load generator 19 from which the job was received.
  • the system 10 is applicable to many different types of load distribution applications.
  • the dispatcher 12 receives e-mail messages for delivery to specified recipients. Delivery jobs are distributed to the servers 14 a - 14 n based upon their respective health metrics stored in the knowledge base 13 , and job results, along with health metrics, are reported back to the dispatcher 12 . Job results may also be passed back to the load generator 19 from which the job was received.
  • An exemplary load generator 19 may be an e-mail aggregation engine, for example, although other load generators may also be used, as will be appreciated by those skilled in the art.
  • a server selection (i.e., load balancing) method in accordance with the invention is now described.
  • a job or work request is first received from the load generator 19 at the dispatcher 12 , at Block 21 .
  • Weighted health metrics for the servers 14 a - 14 n are retrieved from the knowledge base 13 , at Block 22 , and one (or more) of the servers is selected based upon the retrieved health metrics.
  • the job is then sent to the selected server 14 , at Block 24 .
  • the selected server 14 When the selected server 14 has completed the work request, it generates job results and a current health metric for the dispatcher 12 , at Block 26 . The current weighted health metric is then stored in the knowledge base 13 , at Block 28 , at which point the process repeats itself, as illustratively shown. It should be noted that a particular job result may also be returned to the respective load generator 19 from which the job was received, as noted above. It should also be noted that the selected server 14 need not wait until completing a job before generating a current health metric for the dispatcher 12 . For example, the dispatcher 12 could poll the servers 14 a - 14 n for this information periodically, or they could be configured to simply provide it to the dispatcher at predetermined intervals, etc.
  • e-mail jobs were discussed above as an example of the types of jobs to be performed by the server 14 a - 14 n , numerous other types of jobs or tasks may also be distributed to the servers, as will be appreciated by those skilled in the art. Moreover, it will further be appreciated that other types of health metrics and methods for determining and weighting thereof may also be used.
  • health metric calculation has been described above as being performed by a software agent on each server 14 , it is contemplated that health metric calculation may be performed by other system components. By way of example, such calculations may be performed by the dispatcher 12 in certain embodiments, based upon measurements of server characteristics that are returned to a health metric calculation component thereof.

Abstract

A communications system may include a plurality of servers connected together in a network, such as a wide area network (WAN). The servers may be for processing a plurality of different job types having respective different resource usage characteristics associated therewith. Moreover, each server may determine a respective health metric thereof based upon at least one job being processed thereby. Furthermore, each server may also weight the health metric based upon the respective resource usage characteristic of the at least one job. The system may also include a dispatcher for collecting the weighted health metrics from the servers and distributing jobs to the servers based thereon.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims the benefit of U.S. Provisional Application No. 60/493,854, filed Aug. 8, 2003, which is hereby incorporated herein in its entirety by reference.
  • FIELD OF THE INVENTION
  • The present invention relates to the field of communications systems, and, more particularly, to server load balancing and related methods.
  • BACKGROUND OF THE INVENTION
  • In a distributed computing environment, jobs are typically spread across all available machines, such as servers, for example, to provide faster processing and throughput. When there is new work to be done, it is desirable to send the new work to a server that is considered to be lightly loaded, as opposed to another server that is more heavily loaded. In a dynamic environment, the load on various servers can change rapidly. Traditional load balancing mechanisms have focused on externally observable characteristics of a server to infer its load.
  • By way of example, U.S. Pat. No. 6,070,191 discloses a server system for processing client requests received over a communication network. The server system includes a cluster of document servers and at least one redirection server. The redirection server receives a client request from the network and redirects it to one of the document servers based upon a set of pre-computed redirection probabilities. Each of the document servers may be an HTTP server that manages a set of documents locally and can service client requests only for the locally-available documents. Documents are distributed across the document servers using a load distribution algorithm. The algorithm uses access rates of the documents as a metric for distributing the documents across the servers and determining the redirection probabilities. The load distribution algorithm attempts to equalize the sum of the access rates of all the documents stored at a given document server across all of the document servers.
  • Despite such prior art approaches, further load balancing features may be desirable in certain applications. For example, in a network where different servers are called upon to perform different types of tasks with different resource usage characteristics, approaches such as the one described above may not provide desired load balancing results.
  • SUMMARY OF THE INVENTION
  • In view of the foregoing background, it is therefore an object of the present invention to provide a communications system which provides enhanced load balancing features and related methods.
  • This and other objects, features, and advantages in accordance with the present invention are provided by a communications system which may include a plurality of servers connected together in a network, such as a wide area network (WAN). The servers are for processing a plurality of different job types having respective different resource usage characteristics associated therewith. Moreover, each server may determine a respective health metric thereof based upon at least one job being processed thereby. Furthermore, each server may also weight the health metric based upon the respective resource usage characteristic of the at least one job. The system may also include a dispatcher for collecting the weighted health metrics from the servers and distributing jobs to the servers based thereon. Accordingly, jobs may advantageously be distributed to the servers on a relatively equal basis, even though different servers may be performing jobs utilizing different resources.
  • By way of example, the resource usage characteristics may include at least one processing utilization characteristic and at least one input/output utilization characteristic. Additionally, the servers may map the weighted health metrics for different resource usage characteristics to a common scale. The communications system may also include a knowledge base for cooperating with the dispatcher for storing the weighted health metrics.
  • In addition, the servers may provide completed job results to the dispatcher, and the weighted health metrics may be provided to the dispatcher with the completed job results. The dispatcher may also periodically poll the servers for the weighted health metrics. The communications system may also include at least one load generator for generating the jobs for the servers and communicating the jobs to the dispatcher. As such, the dispatcher may provide the completed job results to the at least one load generator. The jobs may relate to electronic mail (e-mail) processing, for example.
  • A method aspect of the invention is for distributing jobs to a plurality of servers connected together in a network. The servers may be for processing a plurality of different job types having respective different resource usage characteristics associated therewith. The method may include determining a respective health metric of each server based upon at least one job being processed thereby, and weighting the health metric based upon the respective resource usage characteristic of the at least one job. Furthermore, the weighted health metrics may be collected from the servers, and the jobs may be distributed to the servers based thereon.
  • A load distributor in accordance with the present invention may include a dispatcher and a knowledge base, as described briefly above. A computer-readable medium in accordance with the present invention may similarly include a dispatcher module and a knowledge base module.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is schematic block diagram of a communications system providing server load balancing in accordance with the present invention
  • FIG. 2 is a flow diagram illustrating a load balancing method in accordance with the present invention.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • The present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art. Like numbers refer to like elements throughout.
  • Referring initially to FIG. 1, a distributed network communications system 10 implementing server selection (i.e., load balancing) in accordance with the present invention is now described. The system 10 illustratively includes a load distributor 11, which includes a dispatcher 12 and a knowledge base 13. The system 10 also illustratively includes a plurality of servers 14 a-14 n for receiving tasks from the dispatcher 12, and one or more load generators 19 for generating and communicating the tasks to the dispatcher.
  • By way of example, the load distributor 11 may be implemented as a server or other computer. Accordingly, the dispatcher 12 may be implemented as a software program or module that operates on or in conjunction with the load distributor 11. The knowledge base 13 may similarly be a database module in a data store or memory accessible by the dispatcher 12. Of course, the dispatcher 12 and the knowledge base 13 may be implemented in different devices or servers in some embodiments, as will be appreciated by those skilled in the art.
  • Each server 14 a-14 n preferably includes a software agent or module, for example, which measures respective server-specific parameters, and returns a health metric to the dispatcher 12. The health metric may be mapped to a common scale. By way of example, the health metric may be mapped to a number between zero and one hundred, where zero corresponds to a server 14 being fully loaded (i.e., it is very “unhealthy”), and thus unsuitable for receiving additional tasks to perform. On the other hand, one hundred on the common scale corresponds to a server 14 having no load (i.e., it is performing no jobs and is very “healthy”), meaning that it is well suited for receiving new tasks.
  • As noted above, the software agent on each server 14 a-14 n is responsible for calculating a health metric in accordance with the common scale based upon the various tasks being performed thereon. Yet, different types of tasks may have different resource utilization characteristics associated therewith. As such, the servers 14 a-14 n advantageously weight the heath metric thereof based upon the respective resource usage characteristics of the task(s) that it is performing.
  • Examples of such resource usage characteristics generally include processing utilization characteristics, input/output (I/O) utilization characteristics, and memory utilization characteristics. More particularly, for a server 14 performing processor-intensive tasks, its metric can be weighted more heavily toward processor utilization. Similarly, another server 14 might measure network input and output, and/or a number of “threads” or concurrent network connections in use, and weight its health metric accordingly.
  • By weighting a server's health metric toward the particular resource usage characteristic(s) being consumed thereon, the dispatcher 12 has a meaningful way to determine the relative health of the servers 14 a-14 n and distribute new tasks to the servers based thereon. In contrast, prior art approaches which measure a single resource usage characteristic at each of a plurality of servers may provide an inaccurate view of the servers' health. That is, if a server was performing a very intensive I/O task, a measurement of only the server's memory utilization may errantly indicate that the server is more healthy than it actually is. This problem may still occur even where more than one resource usage characteristic is measured on each server, particularly when numerous tasks types are being processed, as will be appreciated by those skilled in the art.
  • The dispatcher 12 receives processing jobs or tasks from the load generator(s) 19 and distributes the jobs to each of the servers 14 a-14 n based upon the weighted health metrics thereof. The dispatcher 12 may not only use the weighted health metrics to decide which server 14 to distribute a job to, but it may also use them to determine how much work to put in a given job as well, as will be appreciated by those of skill in the art.
  • When a given server 14 is finished with a job, it preferably reports both job results and its health metric to the dispatcher 12. The health metric for each server is saved in the knowledge base 10, where it is available to the dispatcher 12 for use in distributing future jobs. By taking frequent measurements on each server and making them available to the dispatcher 12, the system 10 load characteristics can be tuned to a very high degree, as will be appreciated by those skilled in the art. The dispatcher 12 may also report job results received from a given server 14 back to the load generator 19 from which the job was received.
  • It will be appreciated that the load distribution process described above relies upon actual measurements of server loads as measured by the servers 14 a-14 n. These measurements provide a more accurate indication of server load than externally observable server characteristics from which server load is inferred in certain prior art load balancing schemes.
  • Those skilled in the art will appreciate that the system 10 is applicable to many different types of load distribution applications. For example, in an e-mail delivery system, the dispatcher 12 receives e-mail messages for delivery to specified recipients. Delivery jobs are distributed to the servers 14 a-14 n based upon their respective health metrics stored in the knowledge base 13, and job results, along with health metrics, are reported back to the dispatcher 12. Job results may also be passed back to the load generator 19 from which the job was received. An exemplary load generator 19 may be an e-mail aggregation engine, for example, although other load generators may also be used, as will be appreciated by those skilled in the art.
  • Turning additionally to FIG. 2, a server selection (i.e., load balancing) method in accordance with the invention is now described. Beginning at Block 20, a job or work request is first received from the load generator 19 at the dispatcher 12, at Block 21. Weighted health metrics for the servers 14 a-14 n are retrieved from the knowledge base 13, at Block 22, and one (or more) of the servers is selected based upon the retrieved health metrics. The job is then sent to the selected server 14, at Block 24.
  • When the selected server 14 has completed the work request, it generates job results and a current health metric for the dispatcher 12, at Block 26. The current weighted health metric is then stored in the knowledge base 13, at Block 28, at which point the process repeats itself, as illustratively shown. It should be noted that a particular job result may also be returned to the respective load generator 19 from which the job was received, as noted above. It should also be noted that the selected server 14 need not wait until completing a job before generating a current health metric for the dispatcher 12. For example, the dispatcher 12 could poll the servers 14 a-14 n for this information periodically, or they could be configured to simply provide it to the dispatcher at predetermined intervals, etc.
  • While e-mail jobs were discussed above as an example of the types of jobs to be performed by the server 14 a-14 n, numerous other types of jobs or tasks may also be distributed to the servers, as will be appreciated by those skilled in the art. Moreover, it will further be appreciated that other types of health metrics and methods for determining and weighting thereof may also be used.
  • Furthermore, it should also be noted that while health metric calculation has been described above as being performed by a software agent on each server 14, it is contemplated that health metric calculation may be performed by other system components. By way of example, such calculations may be performed by the dispatcher 12 in certain embodiments, based upon measurements of server characteristics that are returned to a health metric calculation component thereof.
  • Many modifications and other embodiments of the invention will come to the mind of one skilled in the art having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is understood that the invention is not to be limited to the specific embodiments disclosed, and that modifications and embodiments are intended to be included within the scope of the appended claims.

Claims (21)

1. A communications system comprising:
a plurality of servers connected together in a network for processing a plurality of different job types having respective different resource usage characteristics associated therewith;
each server determining a respective health metric thereof based upon at least one job being processed thereby and weighting the health metric based upon the respective resource usage characteristic of the at least one job; and
a dispatcher for collecting the weighted health metrics from said servers and distributing jobs to said servers based thereon.
2. The communications system of claim 1 wherein the resource usage characteristics comprise at least one processing utilization characteristic and at least one input/output utilization characteristic.
3. The communications system of claim 1 further comprising a knowledge base for cooperating with said dispatcher for storing the weighted health metrics.
4. The communications system of claim 1 wherein said servers map the weighted health metrics for different resource usage characteristics to a common scale.
5. The communications system of claim 1 wherein said servers provide completed job results to said dispatcher, and wherein the weighted health metrics are provided to said dispatcher with the completed job results.
6. The communications system of claim 5 further comprising at least one load generator for generating the jobs for said servers and communicating the jobs to said dispatcher; and wherein said dispatcher further provides the completed job results to said at least one load generator.
7. The communications system of claim 1 wherein said dispatcher periodically polls said servers for the weighted health metrics.
8. The communications system of claim 1 wherein the jobs relate to electronic mail (e-mail) processing.
9. A load distributor for a plurality of servers connected together in a network for processing a plurality of different job types having respective different resource usage characteristics associated therewith, and each server determining a respective health metric thereof based upon at least one job being processed thereby and weighting the health metric based upon the respective resource usage characteristic of the at least one job, the load distributor comprising:
a dispatcher for collecting the weighted health metrics from the servers and distributing jobs to the servers based thereon; and
a knowledge base for cooperating with said dispatcher for storing the weighted health metrics.
10. The load distributor of claim 9 wherein the resource usage characteristics comprise at least one processing utilization characteristic and at least one input/output utilization characteristic.
11. The load distributor of claim 9 wherein the servers map the weighted health metrics for different resource usage characteristics to a common scale.
12. The load distributor of claim 9 wherein the servers provide completed job results to said dispatcher module, and wherein the weighted health metrics are provided to said dispatcher with the completed job results.
13. The load distributor of claim 9 wherein said dispatcher periodically polls the servers for the weighted health metrics.
14. A job distribution method for a plurality of servers connected together in a network, the servers for processing a plurality of different job types having respective different resource usage characteristics associated therewith, the method comprising:
determining a respective health metric of each server based upon at least one job being processed thereby and weighting the health metric based upon the respective resource usage characteristic of the at least one job; and
distributing jobs to the servers based upon the weighted health metrics.
15. The method of claim 14 wherein the resource usage characteristics comprise at least one processing utilization characteristic and at least one input/output utilization characteristic.
16. The method of claim 14 further comprising mapping the weighted health metrics for different resource usage characteristics to a common scale; and wherein distributing jobs to the servers comprises distributing the jobs based upon the commonly scaled weighted health metrics.
17. A computer-readable medium having computer-executable instructions for distributing jobs to a plurality of servers connected together in a network for processing a plurality of different job types having respective different resource usage characteristics associated therewith, and each server determining a respective health metric thereof based upon at least one job being processed thereby and weighting the health metric based upon the respective resource usage characteristic of the at least one job, the load distributor comprising:
a dispatcher module for collecting the weighted health metrics from the servers and distributing jobs to the servers based thereon; and
a knowledge base module for cooperating with said dispatcher module to store the weighted health metrics.
18. The computer-readable medium of claim 17 wherein the resource usage characteristics comprise at least one processing utilization characteristic and at least one input/output utilization characteristic.
19. The computer-readable medium of claim 17 wherein the servers map the weighted health metrics for different resource usage characteristics to a common scale.
20. The computer-readable medium of claim 17 wherein the servers provide completed job results to said dispatcher module, and wherein the weighted health metrics are provided to said dispatcher module with the completed job results.
21. The computer-readable medium of claim 17 wherein said dispatcher module periodically polls the servers for the weighted health metrics.
US10/779,402 2003-08-08 2004-02-13 Communications system providing server load balancing based upon weighted health metrics and related methods Abandoned US20050033809A1 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US10/779,402 US20050033809A1 (en) 2003-08-08 2004-02-13 Communications system providing server load balancing based upon weighted health metrics and related methods
PCT/US2004/005770 WO2005017719A2 (en) 2003-08-08 2004-02-26 Communications system providing server load balancing based upon weighted health metrics and related methods
CA2532677A CA2532677C (en) 2003-08-08 2004-02-26 Communications system providing server load balancing based upon weighted health metrics and related methods
EP04715074A EP1661013A4 (en) 2003-08-08 2004-02-26 Communications system providing server load balancing based upon weighted health metrics and related methods
EP08150514A EP1927921A1 (en) 2003-08-08 2004-02-26 Communications system providing server load balancing based upon weighted health metrics and related method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US49385403P 2003-08-08 2003-08-08
US10/779,402 US20050033809A1 (en) 2003-08-08 2004-02-13 Communications system providing server load balancing based upon weighted health metrics and related methods

Publications (1)

Publication Number Publication Date
US20050033809A1 true US20050033809A1 (en) 2005-02-10

Family

ID=34119147

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/779,402 Abandoned US20050033809A1 (en) 2003-08-08 2004-02-13 Communications system providing server load balancing based upon weighted health metrics and related methods

Country Status (4)

Country Link
US (1) US20050033809A1 (en)
EP (1) EP1661013A4 (en)
CA (1) CA2532677C (en)
WO (1) WO2005017719A2 (en)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080091827A1 (en) * 2006-07-29 2008-04-17 Xiaojun Mo Method, device and system for allocating media resources
US20080101349A1 (en) * 2006-10-26 2008-05-01 Masakazu Kanda Module execution device
US20080263556A1 (en) * 2007-04-17 2008-10-23 Michael Zoll Real-time system exception monitoring tool
US20090089360A1 (en) * 2007-09-28 2009-04-02 Microsoft Corporation Central Service Control
US20090147770A1 (en) * 2007-12-11 2009-06-11 At&T Knowledge Ventures, Lp System and Method of Routing Voice Communications Via Peering Networks
EP2108154A2 (en) * 2007-01-30 2009-10-14 Alibaba Group Holding Limited Distributed task system and distributed task management method
US20100057828A1 (en) * 2008-08-27 2010-03-04 Siemens Aktiengesellschaft Load-balanced allocation of medical task flows to servers of a server farm
US20100211681A1 (en) * 2009-02-19 2010-08-19 Oracle International Corporation Intelligent flood control management
US20110202640A1 (en) * 2010-02-12 2011-08-18 Computer Associates Think, Inc. Identification of a destination server for virtual machine migration
US20110238733A1 (en) * 2010-03-24 2011-09-29 Microsoft Corporation Request-based server health modeling
US20120072780A1 (en) * 2010-09-21 2012-03-22 Oracle International Corporation Continuous System Health Indicator For Managing Computer System Alerts
US20130054745A1 (en) * 2006-01-31 2013-02-28 Hideo Ando Information reproducing system using information storage medium
US20140108639A1 (en) * 2012-10-11 2014-04-17 International Business Machines Corporation Transparently enforcing policies in hadoop-style processing infrastructures
US8732534B2 (en) 2010-09-17 2014-05-20 Oracle International Corporation Predictive incident management
WO2014100244A1 (en) * 2012-12-18 2014-06-26 Microsoft Corporation Application intelligent request management based on server health and client information
US8918509B1 (en) * 2011-12-20 2014-12-23 The Mathworks, Inc. Dynamic arbitrary data simulation using fixed resources
US20150286519A1 (en) * 2014-04-03 2015-10-08 Industrial Technology Research Institue Session-based remote management system and load balance controlling method
US20160103750A1 (en) * 2014-10-10 2016-04-14 Adp, Llc Application programming interface monitoring tool notification and escalation method and system
US10055128B2 (en) 2010-01-20 2018-08-21 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
US20180285151A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Dynamic load balancing in network interface cards for optimal system level performance
US10193823B2 (en) 2016-09-12 2019-01-29 Microsoft Technology Licensing, Llc Rich resource management incorporating usage statistics for fairness
US10255148B2 (en) * 2013-12-09 2019-04-09 Amazon Technologies, Inc. Primary role reporting service for resource groups
US20190238630A1 (en) * 2015-12-23 2019-08-01 Github, Inc. Using read weight affinities to optimize the reading of block cache data
US11646980B2 (en) 2018-03-30 2023-05-09 Intel Corporation Technologies for packet forwarding on ingress queue overflow

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101841565B (en) * 2010-04-20 2013-07-31 中国科学院软件研究所 Database cluster system load balancing method and database cluster system

Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802292A (en) * 1995-04-28 1998-09-01 Digital Equipment Corporation Method for predictive prefetching of information over a communications network
US5995503A (en) * 1996-06-12 1999-11-30 Bay Networks, Inc. Method and apparatus for providing quality of service routing in a network
US5993038A (en) * 1994-11-30 1999-11-30 Bull S.A. Distributed application load distribution aid tool
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6263212B1 (en) * 1998-02-17 2001-07-17 Alcatel Usa Sourcing, L.P. Short message service center
US6421732B1 (en) * 1998-08-27 2002-07-16 Ip Dynamics, Inc. Ipnet gateway
US20020107962A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Single chassis network endpoint system with network processor for load balancing
US20020112007A1 (en) * 1999-11-03 2002-08-15 Christopher (Noah) Wood Personal message management system
US6446114B1 (en) * 1998-07-13 2002-09-03 At&T Corp. Messaging agent and method for retrieving and consolidating messages
US20020174194A1 (en) * 2001-05-18 2002-11-21 Eoin Mooney Providing access to a plurality of message accounts from a single web-based interface
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US6549937B1 (en) * 1999-07-21 2003-04-15 Microsoft Corporation System and method for multi-protocol communication in a computer network
US6557026B1 (en) * 1999-09-29 2003-04-29 Morphism, L.L.C. System and apparatus for dynamically generating audible notices from an information network
US6560222B1 (en) * 1998-04-03 2003-05-06 Vertical Networks, Inc. Systems and methods for multiple voice and data communications using intelligently bridged TDM and packet buses and methods for performing telephony and data functions using the same
US6601084B1 (en) * 1997-12-19 2003-07-29 Avaya Technology Corp. Dynamic load balancer for multiple network servers
US6615212B1 (en) * 1999-08-19 2003-09-02 International Business Machines Corporation Dynamically provided content processor for transcoded data types at intermediate stages of transcoding process
US6711616B1 (en) * 2000-05-01 2004-03-23 Xilinx, Inc. Client-server task distribution system and method
US6718359B2 (en) * 1998-07-15 2004-04-06 Radware Ltd. Load balancing
US20040205120A1 (en) * 2003-03-24 2004-10-14 Shaul Dar Network service optimization
US20040267548A1 (en) * 2003-06-25 2004-12-30 Jones James O. Workload profiling in computers
US6862624B2 (en) * 1997-08-01 2005-03-01 Cisco Technology, Inc. Method and apparatus for directing a flow of packets based on request and server attributes
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US6970913B1 (en) * 1999-07-02 2005-11-29 Cisco Technology, Inc. Load balancing using distributed forwarding agents with application based feedback for different virtual machines
US7664711B2 (en) * 2002-12-16 2010-02-16 International Business Machines Corporation Apparatus, methods and computer programs for metering and accounting for services accessed over a network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19727611A1 (en) * 1997-06-28 1999-02-04 Merck Patent Gmbh Process for the preparation of lithium manganese mixed oxides and their use
WO2001080515A2 (en) * 2000-04-17 2001-10-25 Circadence Corporation System and method for data prioritization
US6430602B1 (en) * 2000-08-22 2002-08-06 Active Buddy, Inc. Method and system for interactively responding to instant messaging requests
US7003772B2 (en) * 2000-12-04 2006-02-21 International Business Machines Corporation Policy management for distributed computing and a method for aging statistics

Patent Citations (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5993038A (en) * 1994-11-30 1999-11-30 Bull S.A. Distributed application load distribution aid tool
US5802292A (en) * 1995-04-28 1998-09-01 Digital Equipment Corporation Method for predictive prefetching of information over a communications network
US5995503A (en) * 1996-06-12 1999-11-30 Bay Networks, Inc. Method and apparatus for providing quality of service routing in a network
US6862624B2 (en) * 1997-08-01 2005-03-01 Cisco Technology, Inc. Method and apparatus for directing a flow of packets based on request and server attributes
US6070191A (en) * 1997-10-17 2000-05-30 Lucent Technologies Inc. Data distribution techniques for load-balanced fault-tolerant web access
US6601084B1 (en) * 1997-12-19 2003-07-29 Avaya Technology Corp. Dynamic load balancer for multiple network servers
US6263212B1 (en) * 1998-02-17 2001-07-17 Alcatel Usa Sourcing, L.P. Short message service center
US6560222B1 (en) * 1998-04-03 2003-05-06 Vertical Networks, Inc. Systems and methods for multiple voice and data communications using intelligently bridged TDM and packet buses and methods for performing telephony and data functions using the same
US6446114B1 (en) * 1998-07-13 2002-09-03 At&T Corp. Messaging agent and method for retrieving and consolidating messages
US6718359B2 (en) * 1998-07-15 2004-04-06 Radware Ltd. Load balancing
US6421732B1 (en) * 1998-08-27 2002-07-16 Ip Dynamics, Inc. Ipnet gateway
US6970913B1 (en) * 1999-07-02 2005-11-29 Cisco Technology, Inc. Load balancing using distributed forwarding agents with application based feedback for different virtual machines
US6549937B1 (en) * 1999-07-21 2003-04-15 Microsoft Corporation System and method for multi-protocol communication in a computer network
US6615212B1 (en) * 1999-08-19 2003-09-02 International Business Machines Corporation Dynamically provided content processor for transcoded data types at intermediate stages of transcoding process
US6557026B1 (en) * 1999-09-29 2003-04-29 Morphism, L.L.C. System and apparatus for dynamically generating audible notices from an information network
US20020112007A1 (en) * 1999-11-03 2002-08-15 Christopher (Noah) Wood Personal message management system
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US6711616B1 (en) * 2000-05-01 2004-03-23 Xilinx, Inc. Client-server task distribution system and method
US20020107962A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Single chassis network endpoint system with network processor for load balancing
US6901446B2 (en) * 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US20020174194A1 (en) * 2001-05-18 2002-11-21 Eoin Mooney Providing access to a plurality of message accounts from a single web-based interface
US7664711B2 (en) * 2002-12-16 2010-02-16 International Business Machines Corporation Apparatus, methods and computer programs for metering and accounting for services accessed over a network
US20040205120A1 (en) * 2003-03-24 2004-10-14 Shaul Dar Network service optimization
US20040267548A1 (en) * 2003-06-25 2004-12-30 Jones James O. Workload profiling in computers

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130054745A1 (en) * 2006-01-31 2013-02-28 Hideo Ando Information reproducing system using information storage medium
US20080091827A1 (en) * 2006-07-29 2008-04-17 Xiaojun Mo Method, device and system for allocating media resources
US20080101349A1 (en) * 2006-10-26 2008-05-01 Masakazu Kanda Module execution device
US8533729B2 (en) 2007-01-30 2013-09-10 Alibaba Group Holding Limited Distributed task system and distributed task management method
EP2108154A2 (en) * 2007-01-30 2009-10-14 Alibaba Group Holding Limited Distributed task system and distributed task management method
US20100146516A1 (en) * 2007-01-30 2010-06-10 Alibaba Group Holding Limited Distributed Task System and Distributed Task Management Method
EP2108154A4 (en) * 2007-01-30 2011-03-02 Alibaba Group Holding Ltd Distributed task system and distributed task management method
US9027025B2 (en) 2007-04-17 2015-05-05 Oracle International Corporation Real-time database exception monitoring tool using instance eviction data
US20080263556A1 (en) * 2007-04-17 2008-10-23 Michael Zoll Real-time system exception monitoring tool
US20090089360A1 (en) * 2007-09-28 2009-04-02 Microsoft Corporation Central Service Control
US8903969B2 (en) * 2007-09-28 2014-12-02 Microsoft Corporation Central service control
US20090147770A1 (en) * 2007-12-11 2009-06-11 At&T Knowledge Ventures, Lp System and Method of Routing Voice Communications Via Peering Networks
US8411665B2 (en) * 2007-12-11 2013-04-02 At&T Intellectual Property I, L.P. System and method of routing voice communications via peering networks
US8681774B2 (en) 2007-12-11 2014-03-25 At&T Intellectual Property I, L.P. System and method of routing voice communications via peering networks
US8782206B2 (en) * 2008-08-27 2014-07-15 Siemens Aktiengesellschaft Load-balanced allocation of medical task flows to servers of a server farm
US20100057828A1 (en) * 2008-08-27 2010-03-04 Siemens Aktiengesellschaft Load-balanced allocation of medical task flows to servers of a server farm
US20100211681A1 (en) * 2009-02-19 2010-08-19 Oracle International Corporation Intelligent flood control management
US9128895B2 (en) 2009-02-19 2015-09-08 Oracle International Corporation Intelligent flood control management
US10055128B2 (en) 2010-01-20 2018-08-21 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
US10191656B2 (en) 2010-01-20 2019-01-29 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
US20110202640A1 (en) * 2010-02-12 2011-08-18 Computer Associates Think, Inc. Identification of a destination server for virtual machine migration
US9058252B2 (en) * 2010-03-24 2015-06-16 Microsoft Technology Licensing, Llc Request-based server health modeling
US20110238733A1 (en) * 2010-03-24 2011-09-29 Microsoft Corporation Request-based server health modeling
US8732534B2 (en) 2010-09-17 2014-05-20 Oracle International Corporation Predictive incident management
US20120072780A1 (en) * 2010-09-21 2012-03-22 Oracle International Corporation Continuous System Health Indicator For Managing Computer System Alerts
US8458530B2 (en) * 2010-09-21 2013-06-04 Oracle International Corporation Continuous system health indicator for managing computer system alerts
US8918509B1 (en) * 2011-12-20 2014-12-23 The Mathworks, Inc. Dynamic arbitrary data simulation using fixed resources
US20140108648A1 (en) * 2012-10-11 2014-04-17 International Business Machines Corporation Transparently enforcing policies in hadoop-style processing infrastructures
US20140108639A1 (en) * 2012-10-11 2014-04-17 International Business Machines Corporation Transparently enforcing policies in hadoop-style processing infrastructures
US9253053B2 (en) * 2012-10-11 2016-02-02 International Business Machines Corporation Transparently enforcing policies in hadoop-style processing infrastructures
US9253055B2 (en) * 2012-10-11 2016-02-02 International Business Machines Corporation Transparently enforcing policies in hadoop-style processing infrastructures
WO2014100244A1 (en) * 2012-12-18 2014-06-26 Microsoft Corporation Application intelligent request management based on server health and client information
US9300577B2 (en) 2012-12-18 2016-03-29 Microsoft Technology Licensing, Llc Application intelligent request management based on server health and client information
US10255148B2 (en) * 2013-12-09 2019-04-09 Amazon Technologies, Inc. Primary role reporting service for resource groups
US20150286519A1 (en) * 2014-04-03 2015-10-08 Industrial Technology Research Institue Session-based remote management system and load balance controlling method
US9535775B2 (en) * 2014-04-03 2017-01-03 Industrial Technology Research Institute Session-based remote management system and load balance controlling method
US20160103750A1 (en) * 2014-10-10 2016-04-14 Adp, Llc Application programming interface monitoring tool notification and escalation method and system
US20190238630A1 (en) * 2015-12-23 2019-08-01 Github, Inc. Using read weight affinities to optimize the reading of block cache data
US10666719B2 (en) * 2015-12-23 2020-05-26 Github, Inc. Using read weight affinities to optimize the reading of block cache data
US10193823B2 (en) 2016-09-12 2019-01-29 Microsoft Technology Licensing, Llc Rich resource management incorporating usage statistics for fairness
CN108694087A (en) * 2017-03-31 2018-10-23 英特尔公司 For the dynamic load leveling in the network interface card of optimal system grade performance
US20180285151A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Dynamic load balancing in network interface cards for optimal system level performance
US11646980B2 (en) 2018-03-30 2023-05-09 Intel Corporation Technologies for packet forwarding on ingress queue overflow

Also Published As

Publication number Publication date
EP1661013A4 (en) 2006-11-08
WO2005017719A2 (en) 2005-02-24
CA2532677C (en) 2012-03-13
WO2005017719A3 (en) 2005-09-15
CA2532677A1 (en) 2006-04-12
EP1661013A2 (en) 2006-05-31

Similar Documents

Publication Publication Date Title
CA2532677C (en) Communications system providing server load balancing based upon weighted health metrics and related methods
CN110365765B (en) Bandwidth scheduling method and device of cache server
US8560667B2 (en) Analysis method and apparatus
US20090119233A1 (en) Power Optimization Through Datacenter Client and Workflow Resource Migration
US7467291B1 (en) System and method for calibrating headroom margin
CN107124472A (en) Load-balancing method and device, computer-readable recording medium
US20070250630A1 (en) Method and a system of generating and evaluating potential resource allocations for an application
CN108173937A (en) Access control method and device
CN103995735A (en) Device and method for scheduling working flow
Meyerson et al. Online multidimensional load balancing
US20210365426A1 (en) Generating Compact Data Structures for Monitoring Data Processing Performance Across High Scale Network Infrastructures
US20140181174A1 (en) Distributed processing of stream data on an event protocol
EP1927921A1 (en) Communications system providing server load balancing based upon weighted health metrics and related method
US20070226744A1 (en) Methods and systems for partitioning data in parallel processing systems
Al-Mistarihi et al. On fairness, optimizing replica selection in data grids
US8549078B2 (en) Communications system providing load balancing based upon connectivity disruptions and related methods
Rathore et al. Evaluating qos parameters for ranking web service
JP4526774B2 (en) Apparatus and method for performing performance balance evaluation and sizing of computer system components
CN109842665B (en) Task processing method and device for task allocation server
CN109040283A (en) A kind of modified load-balancing algorithm based on difference reaction type
CN112019630B (en) Load balancing method and device
CN115329005A (en) Multi-cluster cooperation method, system, device and computer readable storage medium
CN111258729B (en) Redis-based task allocation method and device, computer equipment and storage medium
CN114003345A (en) Cloud-native-based Kubernetes platform health degree determination method and device
Son et al. Stochastic distributed data stream partitioning using task locality: design, implementation, and optimization

Legal Events

Date Code Title Description
AS Assignment

Owner name: TEAMON SYSTEMS, INC., WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCCARTHY, STEVEN J.;GARDNER, DARREN L.;REEL/FRAME:015009/0370;SIGNING DATES FROM 20040210 TO 20040211

AS Assignment

Owner name: RESEARCH IN MOTION LIMITED, ONTARIO

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TEAMON SYSTEMS, INC.;REEL/FRAME:030681/0234

Effective date: 20130624

AS Assignment

Owner name: BLACKBERRY LIMITED, ONTARIO

Free format text: CHANGE OF NAME;ASSIGNOR:RESEARCH IN MOTION LIMITED;REEL/FRAME:034030/0941

Effective date: 20130709

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE

AS Assignment

Owner name: MALIKIE INNOVATIONS LIMITED, IRELAND

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BLACKBERRY LIMITED;REEL/FRAME:064104/0103

Effective date: 20230511