Adaptive bandwidth throttling for individual virtual services supported on a network server
First Claim
1. A bandwidth throttling system for use in a computer network system having at least one network server connected to serve one or more clients over a network, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients via a data transmission network connection of a predetermined bandwidth, the bandwidth throttling system comprising:
- a measuring subsystem to measure a presently used bandwidth for individual ones of the virtual services supported by the network server;
multiple bandwidth throttling objects created for corresponding ones of the virtual services, the bandwidth throttling objects tracking the bandwidth presently used by the corresponding virtual services, the bandwidth throttling objects specifying bandwidth thresholds for the corresponding virtual services, each bandwidth threshold indicating a level of I/O activity for an associated virtual service that is effective to trigger throttling actions on requests to the associated virtual service; and
a control subsystem to provide a throttling strategy that selectively throttles requests for the virtual services independently on a per virtual service basis according to the presently used bandwidths measured for the virtual services.
3 Assignments
0 Petitions
Accused Products
Abstract
A bandwidth throttling system is implemented on a server network connected to a computer network system to serve one or more clients over a network. The network server supports a service that presents multiple virtual services that can be individually requested by the clients. The bandwidth throttling system controls bandwidth on a per virtual service basis. The bandwidth throttling system has a measuring subsystem to measure the amount of bandwidth being used by each virtual service supported by the network server. The bandwidth throttling system also has a control subsystem to selectively throttle requests for a particular virtual service independently of others based upon the bandwidth used by the particular virtual service. The bandwidth throttling system utilizes an adaptive, hierarchical throttling strategy that is applied to each virtual service independently. The bandwidth throttling system compares the bandwidth usage for the virtual service against the administrator-defined thresholds for that virtual service. If the presently used bandwidth exceeds a first threshold, a first set of throttling actions is applied. If the presently used bandwidth exceeds a second threshold greater than the first threshold, a different second set of throttling actions is applied. In this manner, the administrator is given maximum control at setting throttling policies for each individual virtual service independently of other virtual services.
178 Citations
30 Claims
-
1. A bandwidth throttling system for use in a computer network system having at least one network server connected to serve one or more clients over a network, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients via a data transmission network connection of a predetermined bandwidth, the bandwidth throttling system comprising:
-
a measuring subsystem to measure a presently used bandwidth for individual ones of the virtual services supported by the network server;
multiple bandwidth throttling objects created for corresponding ones of the virtual services, the bandwidth throttling objects tracking the bandwidth presently used by the corresponding virtual services, the bandwidth throttling objects specifying bandwidth thresholds for the corresponding virtual services, each bandwidth threshold indicating a level of I/O activity for an associated virtual service that is effective to trigger throttling actions on requests to the associated virtual service; and
a control subsystem to provide a throttling strategy that selectively throttles requests for the virtual services independently on a per virtual service basis according to the presently used bandwidths measured for the virtual services.
-
-
2. A bandwidth throttling system for use in a computer network system having at least one network server connected to serve one or more clients over a network, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients via a data transmission network connection of a predetermined bandwidth the bandwidth throttling system comprising:
-
a measuring subsystem to measure a presently used bandwidth for individual ones of the virtual services supported by the network server;
multiple bandwidth throttling objects created for corresponding ones of the virtual services the bandwidth throttling objects tracking the bandwidth presently used by the corresponding virtual services; and
a control subsystem to provide a throttling strategy that selectively throttles requests for the virtual services independently on a per virtual service basis according to the presently used bandwidths measured for the virtual services, the control subsystem maintaining a born list of the bandwidth throttling objects that have been created for the corresponding virtual services and an active list, the control subsystem adding a particular bandwidth throttling object to the active list when the particular bandwidth throttling object is presently receiving requests and removing the particular bandwidth throttling object when the particular bandwidth throttling object ceases to receive requests.
-
-
3. A bandwidth throttling module embodied as a computer program on a computer-readable medium, the bandwidth throttling module being implemented in a network server connected to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the bandwidth throttling module comprising:
-
a measuring subsystem to measure a presently used bandwidth for a particular virtual service; and
a control subsystem to selective throttle requests for the particular virtual service independently of the requests for others of the virtual services based upon the presently used bandwidth. - View Dependent Claims (4, 5, 6, 7, 8, 9)
requests in a first manner for the particular virtual service if the presently used bandwidth measured for the particular virtual service exceeds a first threshold and requests in a second manner for the particular virtual service if the presently used bandwidth measured for the particular virtual service exceeds a second threshold greater than the first threshold.
-
-
5. A bandwidth throttling module as recited in claim 3, further comprising a bandwidth throttling object for each of the virtual services to track the bandwidth being presently used by said each of the virtual services.
-
6. A bandwidth throttling module as recited in claim 5, further comprising a born list to list the bandwidth throttling objects that have been created.
-
7. A bandwidth throttling module as recited in claim 5, further comprising an active list to list a subset of the created bandwidth throttling objects to identify those bandwidth throttling objects that are presently receiving requests.
-
8. A bandwidth throttling module as recited in claim 7, wherein the control subsystem is configured to remove a bandwidth throttling object from the active list after the bandwidth throttling object ceases to receive requests.
-
9. A network server operating system embodied on the computer-readable medium comprising the bandwidth throttling module as recited in claim 3.
-
10. A bandwidth throttling module embodied as a computer program on a computer-readable medium, the bandwidth throttling module being implemented in a network server connected to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the bandwidth throttling module comprising:
-
computer-executable instructions that, when executed, direct a computing device to;
associate a request for a particular virtual service to a bandwidth throttling object representative of the particular virtual service;
track I/O activity for the particular virtual service using the bandwidth throttling object;
process the request;
ascertain a present set of throttling actions based on I/O activity for the particular virtual service; and
handle the request according to the present set of throttling actions. - View Dependent Claims (11, 12, 13)
computer-executable instructions that, when executed, direct a computing device to;
assess a current level of I/O activity for the particular virtual service; and
update the present set of throttling actions based on the current level of I/O activity.
-
-
12. A bandwidth throttling module as recited in claim 10, wherein the bandwidth throttling object specifies a bandwidth threshold indicating a level of I/O activity for the particular virtual service, further comprising:
-
computer-executable instructions that, when executed, direct a computing device to;
determine whether a current level of I/O activity for the particular virtual service exceeds the bandwidth threshold maintained in the bandwidth throttling object; and
selectively apply one set of throttling actions when the I/O activity does not exceed the bandwidth threshold and another set of throttling actions when the I/O activity exceeds the bandwidth threshold.
-
-
13. A network server operating system embodied on a computer-readable medium comprising the bandwidth throttling module as recited in claim 10.
-
14. A network server operating system for execution on a network server that is configured to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the network server operating system comprising:
- a bandwidth throttling system to measure bandwidths presently used by individual ones of the virtual services and to selectively throttle requests for the virtual services independently on a per virtual service basis according to the measured bandwidths corresponding to the virtual services, the bandwidth throttling system implementing a throttling strategy that adaptively applies one of the throttling actions comprising allowing a request, delaying the request, and rejecting the request.
-
15. A network server operating system for execution on a network server that is configured to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the network server operating system comprising:
- a bandwidth throttling system to measure bandwidths presently used by individual ones of the virtual services and to selectively throttle requests for the virtual services independently on a per virtual service basis according to the measured bandwidths corresponding to the virtual services, the bandwidth throttling system creating bandwidth throttling objects for corresponding ones of the virtual services, the bandwidth throttling objects tracking the bandwidth presently used by the corresponding virtual services.
- View Dependent Claims (16, 17, 18, 19)
-
20. A computer-executable bandwidth throttling object embodied on a computer-readable medium for execution on a network server that is connected to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server being configured to support a service that presents multiple virtual services that can be individually requested by the clients whereby the bandwidth throttling object is created to represent a particular virtual service, the bandwidth throttling object comprising:
-
a threshold data field for holding a bandwidth threshold characterizing a level of I/O activity for the particular virtual service;
a measured bandwidth data field for holding a bandwidth that is presently being used by the particular virtual service to accommodate the level of I/O activity; and
computer-executable instructions to facilitate access to the data fields to assist in controlling and throttling the bandwidth for the particular virtual service. - View Dependent Claims (21, 22, 23, 24)
instructions that, when executed, direct a computing device to;
set the bandwidth threshold;
get the bandwidth threshold;
update the I/O activity; and
get statistics on the measured bandwidth.
-
- 25. A method for throttling bandwidth used by a network server that is connected to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the network server implementing a bandwidth throttling system to measure bandwidths presently used by individual ones of the virtual services and to selectively throttle requests for the virtual services independently on a per virtual service basis according to the measured bandwidths corresponding to the virtual services, the method comprising the step of creating bandwidth throttling objects for corresponding ones of the virtual services to track the bandwidth being presently used by the corresponding virtual services.
-
29. A method for throttling bandwidth used by a network server that is connected to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the method comprising the following steps:
-
associating a request for a particular virtual service to a bandwidth throttling object representative of the particular virtual service;
tracking I/O activity for the particular virtual service using the bandwidth throttling object;
processing the request;
ascertaining a present set of throttling actions based on the I/O activity for the particular virtual service;
handling the request according to the present set of throttling actions;
assessing a current level of I/O activity for the particular virtual service; and
updating the bandwidth throttling object to reflect the I/O activity.
-
-
30. A method for throttling bandwidth used by a network server that is connected to serve one or more clients over a computer network system via a data transmission connection of predetermined bandwidth, the network server supporting a service that presents multiple virtual services that can be individually requested by the clients, the method comprising the following steps:
-
associating a request for a particular virtual service to a bandwidth throttling object representative of the particular virtual service;
tracking I/O activity for the particular virtual service using the bandwidth throttling object, the bandwidth throttling object specifying a bandwidth threshold indicating a level of I/O activity for the particular virtual service;
determining whether a current level of I/O activity for the particular virtual service exceeds the bandwidth threshold maintained in the bandwidth throttling object;
processing the request; and
handling the request by selectively applying one set of throttling actions when the I/O activity does not exceed the bandwidth threshold and another set of throttling actions when the I/O activity exceeds the bandwidth threshold.
-
Specification