US7006512B2 - Apparatus and methods for managing queues on a mobile device system - Google Patents

Apparatus and methods for managing queues on a mobile device system Download PDF

Info

Publication number
US7006512B2
US7006512B2 US09/781,591 US78159101A US7006512B2 US 7006512 B2 US7006512 B2 US 7006512B2 US 78159101 A US78159101 A US 78159101A US 7006512 B2 US7006512 B2 US 7006512B2
Authority
US
United States
Prior art keywords
request
destination
requests
logic code
list
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.)
Expired - Lifetime, expires
Application number
US09/781,591
Other versions
US20020105924A1 (en
Inventor
Shuowen Yang
Luosheng Peng
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.)
Qualcomm Inc
Original Assignee
Innopath Software 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 Innopath Software Inc filed Critical Innopath Software Inc
Priority to US09/781,591 priority Critical patent/US7006512B2/en
Assigned to DOONGO TECHNOLOGIES, INC. reassignment DOONGO TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: PENG, LUOSHENG, YANG, SHUOWEN
Priority to PCT/US2002/003969 priority patent/WO2003067825A1/en
Publication of US20020105924A1 publication Critical patent/US20020105924A1/en
Assigned to INNOPATH SOFTWARE, INC. reassignment INNOPATH SOFTWARE, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: DOONGO TECHNOLOGIES, INC.
Application granted granted Critical
Publication of US7006512B2 publication Critical patent/US7006512B2/en
Assigned to SILICON VALLEY BANK reassignment SILICON VALLEY BANK SECURITY AGREEMENT Assignors: INNOPATH SOFTWARE, INC.
Assigned to INNOPATH SOFTWARE INC. reassignment INNOPATH SOFTWARE INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: SILICON VALLEY BANK
Assigned to QUALCOMM TECHNOLOGIES, INC. reassignment QUALCOMM TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INNOPATH SOFTWARE, INC.
Assigned to QUALCOMM INCORPORATED reassignment QUALCOMM INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: QUALCOMM TECHNOLOGIES, INC.
Adjusted expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/02Traffic management, e.g. flow control or congestion control
    • H04W28/06Optimizing the usage of the radio link, e.g. header compression, information sizing, discarding information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6235Variable service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/50Allocation or scheduling criteria for wireless resources
    • H04W72/56Allocation or scheduling criteria for wireless resources based on priority criteria
    • H04W72/566Allocation or scheduling criteria for wireless resources based on priority criteria of the information or information source or recipient

Definitions

  • This invention relates to apparatus and methods for managing queues.
  • this invention relates to apparatus and methods for managing queues on a mobile device system.
  • connections between a client and a server have to be opened and closed through a handshaking process (e.g., in a TCP/IP based data transmission network) or a login/logout process (e.g., in a database connection). Both the handshaking and the login/logout processes undesirably increase traffic. This traffic increase is especially problematic in networks having limited resources, such as wireless networks.
  • Queuing systems are generally used to improve traffic efficiency in a network.
  • queuing systems can be classified into two categories: single station queuing systems and queuing networks.
  • a single station queuing system (or a node) comprises a queuing buffer and one or more servers.
  • a server typically can only serve one request at a time; thus, such a server is always either “busy” or “idle.” If all servers are “busy” upon receipt of a new request, the new request is buffered when queue space is available to await its turn.
  • each request in the buffer is serviced in accordance with a scheduling discipline.
  • a queuing network typically comprises multiple station queuing systems (or nodes) that may be connected to each other.
  • requests can be transferred between station queuing systems within the queuing network to speed up the servicing process.
  • queuing networks are generally more efficient than a single station queuing system. Efficient use of queuing networks, however, require more complex queue management techniques.
  • An exemplary method for managing requests in a mobile device system comprises the steps of assigning a priority to each queue in a set of priority queues, inputting requests into the set of priority queues based on a priority associated with each request, merging multiple requests in the set of priority queues into a merged request based on priorities associated with the multiple requests and a destination for the multiple requests, and sending the merged request to a request queue for a connection in a connection pool for the destination.
  • the merging step includes the steps of multiplexing the multiple requests and selectively building the merged request based on the multiplexing.
  • the sending includes the step of sending a dummy request to extend the connection duration with the destination.
  • the sending step includes the steps of calculating a total processing time of each request queue for each connection in the connection pool and sending a next request into a request queue having the lowest total processing time in the connection pool.
  • the exemplary method further comprises the steps of assigning a high priority to a request if the request is user initiated and assigning a low priority to a request if the request is not user initiated.
  • the exemplary method further comprises the steps of initiating a sampling process to sample all requests, compiling a first list of frequently requested destinations based on the sampling process, assigning a set of connections to each destination on the first list, and dynamically updating the first list and the set of connections assigned to each destination.
  • the step of assigning a set of connections includes the steps of ranking destinations in the first list from a most frequently requested destination to a least frequently requested destination and assigning a set of request queues for a set of connections to each destination on the first list in accordance with the destination's position on the first list.
  • the step of dynamically updating the first list includes the steps of initiating a next sampling process to sample all requests, compiling a new list of frequently requested destinations based on the next sampling process, comparing the first list to the new list, updating the first list based on the comparing step, and reassigning the set of connections to each destination on the first list based on the updating step.
  • a destination is a server identified by a domain name. In another embodiment, a destination is a database.
  • An exemplary computer program product for managing requests in a mobile device system comprises logic code for assigning a priority to each queue in a set of priority queues, logic code for inputting requests into the set of priority queues based on a priority associated with each request, logic code for merging multiple requests in the set of priority queues into a merged request based on priorities associated with the multiple requests and a destination for the multiple requests, and logic code for sending the merged request to a request queue for a connection in a connection pool for the destination.
  • the logic code for merging includes logic code for multiplexing the multiple requests and logic code for selectively building the merged request based on the multiplexing.
  • the logic code for sending includes logic code for sending a dummy request to extend the connection duration with the destination.
  • the logic code for sending includes logic code for calculating a total processing time of each request queue for each connection in the connection pool and logic code for sending a next request into a request queue having the lowest total processing time in the connection pool.
  • the exemplary computer program product further comprises logic code for initiating a sampling process to sample all requests, logic code for compiling a first list of frequently requested destinations based on the sampling process, logic code for assigning a set of connections to each destination on the first list, and logic code for dynamically updating the first list and the set of connections assigned to each destination.
  • the logic code for assigning a set of connections includes logic code for ranking destinations in the first list from a most frequently requested destination to a least frequently requested destination and logic code for assigning a set of request queues for a set of connections to each destination on the first list in accordance with the destination's position on the first list.
  • the logic code for dynamically updating includes logic code for initiating a next sampling process to sample all requests, logic code for compiling a new list of frequently requested destinations based on the next sampling process, logic code for comparing the first list to the new list, logic code for updating the first list based on the comparing, and logic code for reassigning the set of connections to each destination on the first list based on the updating.
  • An exemplary apparatus for managing data in a mobile device system comprises a request receiver for receiving requests, a set of priority queues for storing the requests, a dispatch manager for dispatching the requests from the set of priority queues, and a set of request queues, each request queue being assigned to a connection.
  • requests are stored into the priority queue based on priorities associated with each request and the dispatch manager sends each of the requests into a request queue for a connection based on each request's destination.
  • the dispatch manager merges multiple requests into a merged request before sending the merged request to a request queue for a connection in a connection pool.
  • the dispatch manager includes multiplexors for multiplexing the multiple requests into the merged request based on priorities assigned to the multiple requests when the multiple requests are destined to the same destination.
  • FIG. 1 schematically illustrates an exemplary queue management system in accordance with an embodiment of the invention.
  • FIG. 2 schematically illustrates another exemplary queue management system in accordance with an embodiment of the invention.
  • FIG. 3 illustrate an exemplary process in accordance with an embodiment of the invention.
  • FIG. 4 illustrate another exemplary process in accordance with an embodiment of the invention.
  • FIG. 5 illustrate yet another exemplary process in accordance with an embodiment of the invention.
  • FIG. 1 illustrates an exemplary prior art system 100 .
  • the system 100 includes multiple servers connected to multiple gateways that service multiple mobile devices. For ease of explanation, only a representative number of servers, gateways, and mobile devices are shown in FIG. 1 .
  • the system 100 includes server A 102 , server B 104 , server C 106 , gateways 108 A– 108 B, and mobile devices 110 A– 110 C.
  • a queue management system in accordance with this invention is implemented at the gateway 108 to manage traffic between the mobile devices 110 and the servers 102 – 106 .
  • FIG. 2 schematically illustrates an exemplary queue management system 200 in accordance with an embodiment of the invention.
  • the queue management system 200 includes a request receiver 204 for receiving requests 202 , multiple priority queues 206 a – 206 d , a dispatch manager 208 , and multiple request queues 210 a – 210 f for a connection pool comprising a set of connections to servers such as server A 102 and server B 104 .
  • a request queue is assigned to each connection in a connection pool.
  • the request receiver 204 determines the request's assigned priority in accordance with a predetermined policy.
  • a request initiated by a user has higher priority over a request initiated by a gateway 108 .
  • the dispatch manager 208 services priority queues 206 based on the priority assigned to each queue, such that a queue having a higher priority is serviced before another queue having a relatively lower priority.
  • the dispatch manager 208 places each request in a request queue 210 for a connection to a server (or Web Site) that is appropriate for the request being serviced. For example, if a user requests to be connected to server A 102 to download some data, the dispatch manager 208 will place the request in one of the request queues 210 a – 210 c for connections to the server A 102 .
  • the request receiver 204 and the dispatch manager 208 can be implemented using currently available off-the-shelf computer systems that are configured to perform data queuing functions.
  • FIG. 3 illustrates an exemplary process in accordance with an embodiment of the invention.
  • a number of priority levels is selected (e.g., three levels: high priority, medium priority, low priority).
  • a user can manually select a desired number of priorities.
  • a default number of priorities is provided by the software automatically.
  • each selected priority is assigned to a queue in a set of priority queues 206 (step 304 ).
  • a request 202 is received (step 306 )
  • it is parsed by the request receiver 204 to determine its priority (step 308 ). For example, a user initiated request has a higher priority than a gateway initiated request.
  • a user initiated status-check request may have a higher priority over a user initiated update request and a user initiated update request may have a higher priority over a user initiated download request.
  • the request is then placed into a priority queue 206 suitable for its priority (step 310 ).
  • Requests placed into the set of priority queues 206 are processed in turn by the dispatch manager 108 , which places each request into a connection queue depending on the requested destination and the connection queue capacity. For example, each destination or Web Site (e.g., server A) is pre-assigned a connection pool comprising one or more connection queues (e.g., 5 connection queues). Thus, a request destined to server A is placed in one of the 5 connection queues.
  • FIG. 4 below illustrates an exemplary process for determining how many connection queues should be assigned to each destination or Web Site.
  • FIG. 5 illustrates an exemplary process for determining which connection queue within a connection pool should receive the next request.
  • multiple requests destined to the same Web Site can be merged into one request to improve efficiency.
  • one or more requests can be merged into one request.
  • a status-check request is a request to check the status of an application.
  • An update request is a request to get an update for an application.
  • a download request is a request to download an application.
  • a download request encloses both an update request and a status-check request because the latter requests ask for a subset of an application while the former request asks for the entire application.
  • An update request encloses a status-check request because the latter request may not ask for any portion of the application at all.
  • a first request can be merged into a second request if the first request is enclosed by the second request and if the second request has the same or higher priority than the first request.
  • an update request and a status-check request can be merged into a download request and a status-check request can also be merged into an update request.
  • FIG. 4 illustrates another exemplary process in accordance with an embodiment of the invention.
  • an initial sampling of requests from all mobile devices 110 is performed. That is, all requests are recorded and analyzed to determine the frequency of request of each destination or Web Site. In an exemplary embodiment, the initial sampling lasts for about one hour.
  • the top N e.g., 100
  • a subset of the total number of available connections are assigned to each Web Site based on the Web Site's popularity (step 406 ).
  • CQ the total available connections
  • only 80% of the total available connections (CQ) are assigned to the most popular Web Sites; 20% of the total available connections (CQ) are reserved as idle connections that can be allocated on a first-in-first-out basis for establishing connections to other Web Sites that are not on the most popular Web Site list or to provide additional connections when assigned connections for the popular Web Sites overflow.
  • the most popular Web Site list is dynamically updated.
  • a next sampling is performed (e.g., for another one hour sampling duration) (step 408 ).
  • the most popular Web Site list is updated according to the next sampling (step 410 ).
  • the connection assignments are also updated (step 412 ). For example, if as a result of the next sampling at step 410 , server A 102 , which is on the most popular Web Site list, is replaced by server B 104 , some or all of the connections that were originally assigned to server A 102 will get reassigned to server B 104 , depending on how popular server B is (see Step 406 ). Steps 408 – 412 are repeated at every predetermined time interval (e.g., every 10 minutes) to continuously update the most popular Web Site list.
  • FIG. 5 illustrates yet another exemplary process in accordance with an embodiment of the invention.
  • all requests in a connection pool are classified based on their average processing time.
  • For each request queue for a connection in the connection pool calculate the total average processing time to process all of the requests in the request queue (step 504 ). Compare the total average processing time for each request queue in the connection pool (step 506 ). Load balance each request queue in accordance with the comparing (step 508 ). For example, the request queue with the least total average processing time should receive the next request received by the connection pool.
  • load balancing is performed only among request queues for connections to the same Web Site.

Abstract

An exemplary method for managing requests in a mobile device system comprises the steps of assigning a priority to each queue in a set of priority queues, inputting requests into the set of priority queues based on a priority associated with each request, merging multiple requests in the set of priority queues into a merged request based on priorities associated with the multiple requests and a destination for the multiple requests, and sending the merged request to a request queue for a connection in a connection pool for the destination.

Description

FIELD OF THE INVENTION
This invention relates to apparatus and methods for managing queues. In particular, this invention relates to apparatus and methods for managing queues on a mobile device system.
BACKGROUND OF THE INVENTION
When transferring data through a typical client-server network, connections between a client and a server have to be opened and closed through a handshaking process (e.g., in a TCP/IP based data transmission network) or a login/logout process (e.g., in a database connection). Both the handshaking and the login/logout processes undesirably increase traffic. This traffic increase is especially problematic in networks having limited resources, such as wireless networks.
Queuing systems are generally used to improve traffic efficiency in a network. In general, queuing systems can be classified into two categories: single station queuing systems and queuing networks. Generally, a single station queuing system (or a node) comprises a queuing buffer and one or more servers. A server typically can only serve one request at a time; thus, such a server is always either “busy” or “idle.” If all servers are “busy” upon receipt of a new request, the new request is buffered when queue space is available to await its turn. Generally, each request in the buffer is serviced in accordance with a scheduling discipline.
A queuing network typically comprises multiple station queuing systems (or nodes) that may be connected to each other. Thus, requests can be transferred between station queuing systems within the queuing network to speed up the servicing process. As a result, queuing networks are generally more efficient than a single station queuing system. Efficient use of queuing networks, however, require more complex queue management techniques.
Thus, it is desirable to provide apparatus and methods for providing an efficient queue management system for use in a queuing network.
SUMMARY OF THE INVENTION
An exemplary method for managing requests in a mobile device system comprises the steps of assigning a priority to each queue in a set of priority queues, inputting requests into the set of priority queues based on a priority associated with each request, merging multiple requests in the set of priority queues into a merged request based on priorities associated with the multiple requests and a destination for the multiple requests, and sending the merged request to a request queue for a connection in a connection pool for the destination. In an exemplary embodiment, the merging step includes the steps of multiplexing the multiple requests and selectively building the merged request based on the multiplexing. In one embodiment, the sending includes the step of sending a dummy request to extend the connection duration with the destination. In another embodiment, the sending step includes the steps of calculating a total processing time of each request queue for each connection in the connection pool and sending a next request into a request queue having the lowest total processing time in the connection pool.
In one embodiment, the exemplary method further comprises the steps of assigning a high priority to a request if the request is user initiated and assigning a low priority to a request if the request is not user initiated. In another embodiment, the exemplary method further comprises the steps of initiating a sampling process to sample all requests, compiling a first list of frequently requested destinations based on the sampling process, assigning a set of connections to each destination on the first list, and dynamically updating the first list and the set of connections assigned to each destination. In an exemplary embodiment, the step of assigning a set of connections includes the steps of ranking destinations in the first list from a most frequently requested destination to a least frequently requested destination and assigning a set of request queues for a set of connections to each destination on the first list in accordance with the destination's position on the first list. In another exemplary embodiment, the step of dynamically updating the first list includes the steps of initiating a next sampling process to sample all requests, compiling a new list of frequently requested destinations based on the next sampling process, comparing the first list to the new list, updating the first list based on the comparing step, and reassigning the set of connections to each destination on the first list based on the updating step.
In one embodiment, a destination is a server identified by a domain name. In another embodiment, a destination is a database.
An exemplary computer program product for managing requests in a mobile device system comprises logic code for assigning a priority to each queue in a set of priority queues, logic code for inputting requests into the set of priority queues based on a priority associated with each request, logic code for merging multiple requests in the set of priority queues into a merged request based on priorities associated with the multiple requests and a destination for the multiple requests, and logic code for sending the merged request to a request queue for a connection in a connection pool for the destination. In an exemplary embodiment, the logic code for merging includes logic code for multiplexing the multiple requests and logic code for selectively building the merged request based on the multiplexing. In another exemplary embodiment, the logic code for sending includes logic code for sending a dummy request to extend the connection duration with the destination. In yet another exemplary embodiment, the logic code for sending includes logic code for calculating a total processing time of each request queue for each connection in the connection pool and logic code for sending a next request into a request queue having the lowest total processing time in the connection pool.
In one embodiment, the exemplary computer program product further comprises logic code for initiating a sampling process to sample all requests, logic code for compiling a first list of frequently requested destinations based on the sampling process, logic code for assigning a set of connections to each destination on the first list, and logic code for dynamically updating the first list and the set of connections assigned to each destination. In an exemplary embodiment, the logic code for assigning a set of connections includes logic code for ranking destinations in the first list from a most frequently requested destination to a least frequently requested destination and logic code for assigning a set of request queues for a set of connections to each destination on the first list in accordance with the destination's position on the first list. In another exemplary embodiment, the logic code for dynamically updating includes logic code for initiating a next sampling process to sample all requests, logic code for compiling a new list of frequently requested destinations based on the next sampling process, logic code for comparing the first list to the new list, logic code for updating the first list based on the comparing, and logic code for reassigning the set of connections to each destination on the first list based on the updating.
An exemplary apparatus for managing data in a mobile device system comprises a request receiver for receiving requests, a set of priority queues for storing the requests, a dispatch manager for dispatching the requests from the set of priority queues, and a set of request queues, each request queue being assigned to a connection. In an exemplary embodiment, requests are stored into the priority queue based on priorities associated with each request and the dispatch manager sends each of the requests into a request queue for a connection based on each request's destination. In another exemplary embodiment, the dispatch manager merges multiple requests into a merged request before sending the merged request to a request queue for a connection in a connection pool. In yet another exemplary embodiment, the dispatch manager includes multiplexors for multiplexing the multiple requests into the merged request based on priorities assigned to the multiple requests when the multiple requests are destined to the same destination.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 schematically illustrates an exemplary queue management system in accordance with an embodiment of the invention.
FIG. 2 schematically illustrates another exemplary queue management system in accordance with an embodiment of the invention.
FIG. 3 illustrate an exemplary process in accordance with an embodiment of the invention.
FIG. 4 illustrate another exemplary process in accordance with an embodiment of the invention.
FIG. 5 illustrate yet another exemplary process in accordance with an embodiment of the invention.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 illustrates an exemplary prior art system 100. The system 100 includes multiple servers connected to multiple gateways that service multiple mobile devices. For ease of explanation, only a representative number of servers, gateways, and mobile devices are shown in FIG. 1. The system 100 includes server A 102, server B 104, server C 106, gateways 108A–108B, and mobile devices 110A–110C. In an exemplary embodiment, a queue management system in accordance with this invention is implemented at the gateway 108 to manage traffic between the mobile devices 110 and the servers 102106.
FIG. 2 schematically illustrates an exemplary queue management system 200 in accordance with an embodiment of the invention. The queue management system 200 includes a request receiver 204 for receiving requests 202, multiple priority queues 206 a206 d, a dispatch manager 208, and multiple request queues 210 a210 f for a connection pool comprising a set of connections to servers such as server A 102 and server B 104. In an exemplary embodiment, a request queue is assigned to each connection in a connection pool. When a request 202 is received, the request receiver 204 determines the request's assigned priority in accordance with a predetermined policy. For example, a request initiated by a user (at a mobile device 110) has higher priority over a request initiated by a gateway 108. The dispatch manager 208 services priority queues 206 based on the priority assigned to each queue, such that a queue having a higher priority is serviced before another queue having a relatively lower priority. During servicing, the dispatch manager 208 places each request in a request queue 210 for a connection to a server (or Web Site) that is appropriate for the request being serviced. For example, if a user requests to be connected to server A 102 to download some data, the dispatch manager 208 will place the request in one of the request queues 210 a210 c for connections to the server A 102. In an exemplary embodiment, the request receiver 204 and the dispatch manager 208 can be implemented using currently available off-the-shelf computer systems that are configured to perform data queuing functions.
FIG. 3 illustrates an exemplary process in accordance with an embodiment of the invention. At step 302, a number of priority levels is selected (e.g., three levels: high priority, medium priority, low priority). In one embodiment, a user can manually select a desired number of priorities. In another embodiment, a default number of priorities is provided by the software automatically. Next, each selected priority is assigned to a queue in a set of priority queues 206 (step 304). When a request 202 is received (step 306), it is parsed by the request receiver 204 to determine its priority (step 308). For example, a user initiated request has a higher priority than a gateway initiated request. Further, a user initiated status-check request may have a higher priority over a user initiated update request and a user initiated update request may have a higher priority over a user initiated download request. The request is then placed into a priority queue 206 suitable for its priority (step 310).
Requests placed into the set of priority queues 206 are processed in turn by the dispatch manager 108, which places each request into a connection queue depending on the requested destination and the connection queue capacity. For example, each destination or Web Site (e.g., server A) is pre-assigned a connection pool comprising one or more connection queues (e.g., 5 connection queues). Thus, a request destined to server A is placed in one of the 5 connection queues. FIG. 4 below illustrates an exemplary process for determining how many connection queues should be assigned to each destination or Web Site. FIG. 5 below illustrates an exemplary process for determining which connection queue within a connection pool should receive the next request.
In an exemplary embodiment, multiple requests destined to the same Web Site can be merged into one request to improve efficiency. In one embodiment, when three request types are involved (e.g., status-check, update, and download request types) one or more requests can be merged into one request. A status-check request is a request to check the status of an application. An update request is a request to get an update for an application. A download request is a request to download an application. Thus, logically, a download request encloses both an update request and a status-check request because the latter requests ask for a subset of an application while the former request asks for the entire application. An update request encloses a status-check request because the latter request may not ask for any portion of the application at all. In an exemplary embodiment, a first request can be merged into a second request if the first request is enclosed by the second request and if the second request has the same or higher priority than the first request. In the above example, an update request and a status-check request can be merged into a download request and a status-check request can also be merged into an update request.
FIG. 4 illustrates another exemplary process in accordance with an embodiment of the invention. At step 402, an initial sampling of requests from all mobile devices 110 is performed. That is, all requests are recorded and analyzed to determine the frequency of request of each destination or Web Site. In an exemplary embodiment, the initial sampling lasts for about one hour. Next, the top N (e.g., 100) most popular destinations or Web Sites are selected based on the initial sampling (step 404). In one embodiment, a probability density Pi for each requested destination or Web Site is calculated using the following equation: Pi=Ni/Nt, where Ni is the number of times a Web Site “i” is requested and Nt is the total number of requests within the sampling period. A subset of the total number of available connections are assigned to each Web Site based on the Web Site's popularity (step 406). For example, the number of connections for Web Site i (Qi) is calculated using the following equation: Qi=Pi*80%*CQ, where CQ is equal to the total number of available connections. In an exemplary embodiment, only 80% of the total available connections (CQ) are assigned to the most popular Web Sites; 20% of the total available connections (CQ) are reserved as idle connections that can be allocated on a first-in-first-out basis for establishing connections to other Web Sites that are not on the most popular Web Site list or to provide additional connections when assigned connections for the popular Web Sites overflow. In an exemplary embodiment, the most popular Web Site list is dynamically updated. At a predetermined time intervals (e.g., every 10 minutes), a next sampling is performed (e.g., for another one hour sampling duration) (step 408). Next, the most popular Web Site list is updated according to the next sampling (step 410). As a result of the update of the most popular Web Site list, the connection assignments are also updated (step 412). For example, if as a result of the next sampling at step 410, server A 102, which is on the most popular Web Site list, is replaced by server B 104, some or all of the connections that were originally assigned to server A 102 will get reassigned to server B 104, depending on how popular server B is (see Step 406). Steps 408412 are repeated at every predetermined time interval (e.g., every 10 minutes) to continuously update the most popular Web Site list.
FIG. 5 illustrates yet another exemplary process in accordance with an embodiment of the invention. At step 502, all requests in a connection pool are classified based on their average processing time. For each request queue for a connection in the connection pool, calculate the total average processing time to process all of the requests in the request queue (step 504). Compare the total average processing time for each request queue in the connection pool (step 506). Load balance each request queue in accordance with the comparing (step 508). For example, the request queue with the least total average processing time should receive the next request received by the connection pool. In an exemplary embodiment, load balancing is performed only among request queues for connections to the same Web Site.
The foregoing examples illustrate certain exemplary embodiments of the invention from which other embodiments, variations, and modifications will be apparent to those skilled in the art. The invention should therefore not be limited to the particular embodiments discussed above, but rather is defined by the claims.

Claims (18)

1. A method for managing requests in a mobile device system, comprising the steps of:
assigning a priority to each queue in a set of priority queues;
inputting requests into said set of priority queues based on a priority associated with each request;
merging multiple requests in said set of priority queues into a merged request based on priorities associated with said multiple requests and a destination for said multiple requests; and
sending said merged request to a request queue for a connection in a connection pool for said destination, wherein said sending includes sending a dummy request to extend the connection duration with said destination.
2. The method of claim 1, further comprising the steps of:
assigning a high priority to a request if the request is user initiated; and
assigning a low priority to a request if the request is not user initiated.
3. The method of claim 1, wherein said merging step includes the steps of:
multiplexing said multiple requests; and
selectively building said merged request based on said multiplexing.
4. The method of claim 1, wherein said sending step includes the steps of:
calculating a total processing time of each request queue for each connection in said connection pool; and
sending a next request into a request queue having the lowest total processing time in said connection pool.
5. The method of claim 1, further comprising the steps of:
initiating a sampling process to sample all requests;
compiling a first list of frequently requested destinations based on said sampling process;
assigning a set of connections to each destination on said first list; and
dynamically updating said first list and said set of connections assigned to each destination.
6. The method of claim 5, wherein said step of assigning a set of connections includes the steps of:
ranking destinations in said first list from a most frequently requested destination to a least frequently requested destination; and
assigning a set of request queues for a set of connections to each destination on said first list in accordance with said destination's position on said first list.
7. The method of claim 5, wherein said step of dynamically updating includes the steps of:
initiating a next sampling process to sample all requests;
compiling a new list of frequently requested destinations based on said next sampling process;
comparing said first list to said new list;
updating said first list based on said comparing step; and
reassigning said set of connections to each destination on said first list based on said updating step.
8. The method of claim 1, wherein a destination is a server identified by a domain name.
9. The method of claim 1, wherein a destination is a database.
10. A computer program product for managing requests in a mobile device system, comprising:
logic code for assigning a priority to each queue in a set of priority queues;
logic code for inputting requests into said set of priority queues based on a priority associated with each request;
logic code for merging multiple requests in said set of priority queues into a merged request based on priorities associated with said multiple requests and a destination for said multiple requests; and
logic code for sending said merged request to a request queue for a connection in a connection pool for said destination, wherein said logic code for sending includes logic code for sending a dummy request to extend the connection duration with said destination.
11. The computer program product of claim 10, further comprising:
logic code for assigning a high priority to a request if the request is user initiated; and
logic code for assigning a low priority to a request if the request is not user initiated.
12. The computer program product of claim 10, wherein said logic code for merging includes:
logic code for multiplexing said multiple requests; and
logic code for selectively building said merged request based on said multiplexing.
13. The computer program product of claim 10, wherein said logic code for sending includes:
logic code for calculating a total processing time of each request queue for each connection in said connection pool; and
logic code for sending a next request into a request queue having the lowest total processing time in said connection pool.
14. The computer program product of claim 10, further comprising:
logic code for initiating a sampling process to sample all requests;
logic code for compiling a first list of frequently requested destinations based on said sampling process;
logic code for assigning a set of connections to each destination on said first list; and
logic code for dynamically updating said first list and said set of connections assigned to each destination.
15. The computer program product of claim 14, wherein said logic code for assigning a set of connections includes:
logic code for ranking destinations in said first list from a most frequently requested destination to a least frequently requested destination; and
logic code for assigning a set of request queues for a set of connections to each destination on said first list in accordance with said destination's position on said first list.
16. The computer program product of claim 14, wherein said logic code for dynamically updating includes:
logic code for initiating a next sampling process to sample all requests;
logic code for compiling a new list of frequently requested destinations based on said next sampling process;
logic code for comparing said first list to said new list;
logic code for updating said first list based on said comparing; and
logic code for reassigning said set of connections to each destination on said first list based on said updating.
17. An apparatus for managing data in a mobile device system, comprising:
a request receiver for receiving requests;
a set of priority queues for storing said requests;
a dispatch manager for dispatching said requests from said set of priority queues; and
a set of request queues, each request queue being assigned to a connection;
wherein said requests are stored into said priority queue based on priorities associated with each request and said dispatch manager sends each of said requests into a request queue for a connection based on a destination of each request; and wherein said dispatch manager merges multiple requests into a merged request before sending said merged request to a request queue for a connection in a connection pool, wherein said sending includes sending dummy request to extend the connection duration with said destination.
18. An apparatus for managing data in a mobile device system, comprising:
a request receiver for receiving requests;
a set of priority queues for storing said requests;
a dispatch manager for dispatching said requests from said set of priority queues; and
a set of request queues, each request queue being assigned to a connection;
wherein said requests are stored into said priority queue based on priorities associated with each request and said dispatch manager sends each of said requests into a request queue for a connection based on a destination of each request; and wherein said dispatch manager includes multiplexers for multiplexing said multiple requests into said merged request based on priorities assigned to said multiple requests when said multiple requests are destined to a destination, wherein said sends includes sends a dummy request to extend the connection duration with said destination.
US09/781,591 2001-02-08 2001-02-08 Apparatus and methods for managing queues on a mobile device system Expired - Lifetime US7006512B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US09/781,591 US7006512B2 (en) 2001-02-08 2001-02-08 Apparatus and methods for managing queues on a mobile device system
PCT/US2002/003969 WO2003067825A1 (en) 2001-02-08 2002-02-08 Apparatus and methods for managing queues on a mobile device system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/781,591 US7006512B2 (en) 2001-02-08 2001-02-08 Apparatus and methods for managing queues on a mobile device system
PCT/US2002/003969 WO2003067825A1 (en) 2001-02-08 2002-02-08 Apparatus and methods for managing queues on a mobile device system

Publications (2)

Publication Number Publication Date
US20020105924A1 US20020105924A1 (en) 2002-08-08
US7006512B2 true US7006512B2 (en) 2006-02-28

Family

ID=29272503

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/781,591 Expired - Lifetime US7006512B2 (en) 2001-02-08 2001-02-08 Apparatus and methods for managing queues on a mobile device system

Country Status (2)

Country Link
US (1) US7006512B2 (en)
WO (1) WO2003067825A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188733A1 (en) * 2001-05-15 2002-12-12 Kevin Collins Method and apparatus to manage transactions at a network storage device
US20060031527A1 (en) * 2001-05-04 2006-02-09 Microsoft Corporation Expanded transmission control protocol, methods of operation and apparatus
US20060187834A1 (en) * 2001-08-23 2006-08-24 Nichols Stacy W Reassembly engines for multilink applications
US20100250651A1 (en) * 2009-03-31 2010-09-30 Inventec Corporation Data access method for making asynchronous request to block device
US11544187B2 (en) * 2015-11-03 2023-01-03 Samsung Electronics Co., Ltd. IO redirection methods with cost estimation

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154244A1 (en) * 2002-02-13 2003-08-14 Zellers Mark H. Method and system to provide flexible HTTP tunnelling
US7486618B2 (en) * 2003-05-27 2009-02-03 Oracle International Corporation Weighted attributes on connections and closest connection match from a connection cache
US7970863B1 (en) * 2003-12-29 2011-06-28 AOL, Inc. Using a home-networking gateway to manage communications
US7761350B1 (en) * 2006-04-26 2010-07-20 Aol Inc. Biasing of search result clustering to ensure more effective point of interest (POI) targeting
US7783747B2 (en) * 2006-07-24 2010-08-24 International Business Machines Corporation Method and apparatus for improving cluster performance through minimization of method variation
US8190561B1 (en) * 2006-12-06 2012-05-29 At&T Mobility Ii Llc LDAP replication priority queuing mechanism
US8108573B2 (en) * 2008-02-29 2012-01-31 International Business Machines Corporation Apparatus, system, and method for enqueue prioritization
US8006003B2 (en) * 2008-02-29 2011-08-23 International Business Machines Corporation Apparatus, system, and method for enqueue prioritization
US8639772B2 (en) * 2010-02-16 2014-01-28 Iboard Incorporated Centralized application resource manager
US9247023B2 (en) * 2011-07-27 2016-01-26 Qualcomm Incorporated System and method for prioritizing requests to a SIM
US20130283097A1 (en) * 2012-04-23 2013-10-24 Yahoo! Inc. Dynamic network task distribution
TW201616871A (en) * 2014-10-30 2016-05-01 富智康(香港)有限公司 An automatic series broadcast system and method for online movie
CN106406925A (en) * 2015-08-03 2017-02-15 阿里巴巴集团控股有限公司 An apparatus and a method used for supporting online upgrade
CN107807816A (en) * 2016-09-08 2018-03-16 阿里巴巴集团控股有限公司 The upgrade method of serve end program and database, device and equipment
US10810085B2 (en) * 2017-06-30 2020-10-20 Western Digital Technologies, Inc. Baseboard management controllers for server chassis
US10805264B2 (en) 2017-06-30 2020-10-13 Western Digital Technologies, Inc. Automatic hostname assignment for microservers
CN110634325A (en) * 2018-06-25 2019-12-31 贾刚 Vehicle queuing and lane-merging indicator based on wireless information exchange and fair comparison

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5500858A (en) * 1994-12-20 1996-03-19 The Regents Of The University Of California Method and apparatus for scheduling cells in an input-queued switch
US5621727A (en) * 1994-09-16 1997-04-15 Octel Communications Corporation System and method for private addressing plans using community addressing
US5838915A (en) * 1995-06-21 1998-11-17 Cisco Technology, Inc. System for buffering data in the network having a linked list for each of said plurality of queues
US6023722A (en) 1996-12-07 2000-02-08 International Business Machines Corp. High-availability WWW computer server system with pull-based load balancing using a messaging and queuing unit in front of back-end servers
US6091709A (en) * 1997-11-25 2000-07-18 International Business Machines Corporation Quality of service management for packet switched networks
US6304906B1 (en) 1998-08-06 2001-10-16 Hewlett-Packard Company Method and systems for allowing data service system to provide class-based services to its users
US20010040887A1 (en) 1997-10-09 2001-11-15 Yuri Shtivelman Apparatus and methods enhancing call routing to and within call-centers
US6539020B1 (en) * 1995-09-11 2003-03-25 Madge Networks Limited Bridge device
US6650651B1 (en) * 1999-12-13 2003-11-18 Nortel Networks Limited System and method to implement a packet switch output buffer
US6763520B1 (en) * 2000-08-24 2004-07-13 Cognos Incorporated Fair assignment of processing resources to queued requests
US6816458B1 (en) * 2000-09-13 2004-11-09 Harris Corporation System and method prioritizing message packets for transmission

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5621727A (en) * 1994-09-16 1997-04-15 Octel Communications Corporation System and method for private addressing plans using community addressing
US5500858A (en) * 1994-12-20 1996-03-19 The Regents Of The University Of California Method and apparatus for scheduling cells in an input-queued switch
US5838915A (en) * 1995-06-21 1998-11-17 Cisco Technology, Inc. System for buffering data in the network having a linked list for each of said plurality of queues
US6539020B1 (en) * 1995-09-11 2003-03-25 Madge Networks Limited Bridge device
US6023722A (en) 1996-12-07 2000-02-08 International Business Machines Corp. High-availability WWW computer server system with pull-based load balancing using a messaging and queuing unit in front of back-end servers
US20010040887A1 (en) 1997-10-09 2001-11-15 Yuri Shtivelman Apparatus and methods enhancing call routing to and within call-centers
US6091709A (en) * 1997-11-25 2000-07-18 International Business Machines Corporation Quality of service management for packet switched networks
US6304906B1 (en) 1998-08-06 2001-10-16 Hewlett-Packard Company Method and systems for allowing data service system to provide class-based services to its users
US6650651B1 (en) * 1999-12-13 2003-11-18 Nortel Networks Limited System and method to implement a packet switch output buffer
US6763520B1 (en) * 2000-08-24 2004-07-13 Cognos Incorporated Fair assignment of processing resources to queued requests
US6816458B1 (en) * 2000-09-13 2004-11-09 Harris Corporation System and method prioritizing message packets for transmission

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031527A1 (en) * 2001-05-04 2006-02-09 Microsoft Corporation Expanded transmission control protocol, methods of operation and apparatus
US8018929B2 (en) * 2001-05-04 2011-09-13 Microsoft Corporation Expanded transmission control protocol, methods of operation and apparatus
US20020188733A1 (en) * 2001-05-15 2002-12-12 Kevin Collins Method and apparatus to manage transactions at a network storage device
US8392586B2 (en) * 2001-05-15 2013-03-05 Hewlett-Packard Development Company, L.P. Method and apparatus to manage transactions at a network storage device
US20060187834A1 (en) * 2001-08-23 2006-08-24 Nichols Stacy W Reassembly engines for multilink applications
US20100250651A1 (en) * 2009-03-31 2010-09-30 Inventec Corporation Data access method for making asynchronous request to block device
US11544187B2 (en) * 2015-11-03 2023-01-03 Samsung Electronics Co., Ltd. IO redirection methods with cost estimation

Also Published As

Publication number Publication date
US20020105924A1 (en) 2002-08-08
WO2003067825A1 (en) 2003-08-14

Similar Documents

Publication Publication Date Title
US7006512B2 (en) Apparatus and methods for managing queues on a mobile device system
JP3382953B2 (en) Client management flow control method and apparatus on finite memory computer system
US6327568B1 (en) Distributed hardware sharing for speech processing
Zhang et al. Workload-aware load balancing for clustered web servers
US6725249B2 (en) Method for economically sub-optimizing interactions in data communications network environments, and a device according to the method
US7774782B1 (en) Limiting requests by web crawlers to a web host
US20030084144A1 (en) Network bandwidth optimization method and system
US20040158637A1 (en) Gated-pull load balancer
EP0756403A3 (en) A method for admission control and routing by allocating network resources in network nodes
US20010024452A1 (en) Data rate limiting
CN1988548A (en) Method and system for processing speech processing request
KR20090003275A (en) Centralized scheduler for content delivery network
US7512706B2 (en) Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network
CN109947574A (en) A kind of vehicle big data calculating discharging method based on mist network
KR100479306B1 (en) Reserving resources for anticipated work items via simulated work items
JPH05216842A (en) Resources managing device
US7003569B2 (en) Follow-up notification of availability of requested application service and bandwidth between client(s) and server(s) over any network
JP3545931B2 (en) Call control scheduling method
US6341134B1 (en) Process for the arrangement of equitable-loss packets
US20060072453A1 (en) Method and apparatus for assessing traffic load of a communication network
US6912586B1 (en) Apparatus for journaling during software deployment and method therefor
US20040114514A1 (en) Admission control in networked services
JP2002342193A (en) Method, device and program for selecting data transfer destination server and storage medium with data transfer destination server selection program stored therein
RU2702502C1 (en) Infocommunication system resources control method
CN114785790B (en) Cross-domain analysis system, cross-domain resource scheduling method, device and storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: DOONGO TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YANG, SHUOWEN;PENG, LUOSHENG;REEL/FRAME:011581/0277

Effective date: 20010205

AS Assignment

Owner name: INNOPATH SOFTWARE, INC., CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:DOONGO TECHNOLOGIES, INC.;REEL/FRAME:015083/0148

Effective date: 20040809

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: SILICON VALLEY BANK, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:INNOPATH SOFTWARE, INC.;REEL/FRAME:017262/0479

Effective date: 20060224

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
FEPP Fee payment procedure

Free format text: PAT HOLDER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO SMALL (ORIGINAL EVENT CODE: LTOS); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

REFU Refund

Free format text: REFUND - PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: R1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Free format text: REFUND - 7.5 YR SURCHARGE - LATE PMT W/IN 6 MO, LARGE ENTITY (ORIGINAL EVENT CODE: R1555); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 8

SULP Surcharge for late payment

Year of fee payment: 7

FEPP Fee payment procedure

Free format text: PAT HOLDER NO LONGER CLAIMS SMALL ENTITY STATUS, ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: STOL); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

AS Assignment

Owner name: INNOPATH SOFTWARE INC., CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:038335/0886

Effective date: 20160404

AS Assignment

Owner name: QUALCOMM TECHNOLOGIES, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INNOPATH SOFTWARE, INC.;REEL/FRAME:038943/0852

Effective date: 20160607

AS Assignment

Owner name: QUALCOMM INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUALCOMM TECHNOLOGIES, INC.;REEL/FRAME:039900/0760

Effective date: 20160901

FPAY Fee payment

Year of fee payment: 12