IP Library Granted Patent US 11,693,799
Granted Patent B2
US 11,693,799 · App. 17/479,992 · Granted Jul 4, 2023

Bandwidth control for input/output channels

Inventors: David Butenhof (Westford, MA); Lennart Poettering (Brasbrunn, DE); Peter Portante (Westford, MA); W Webb Scales (Concord, MA)
Assignee: RED HAT, INC.
G06F13/225G06F13/102G06F13/1605
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,693,799
App. No.
17/479,992
Granted
Jul 4, 2023
Kind
B2
Abstract

Bandwidth control can be provided for input/output channels according to some aspects described herein. In one example, a system can detect an input/output (I/O) request transmitted by a software application. In response to detecting the I/O request, the system can determine a bandwidth group that corresponds to an I/O channel associated with the I/O request. The system can then determine whether bandwidth consumption of the bandwidth group exceeds a predefined bandwidth limit. If so, the system can execute a predefined policy assigned to the I/O channel for handling the I/O request.

Claims (51)

1. A non-transitory computer-readable medium comprising program code that is executable by a processor for causing the processor to perform operations including:

detecting an input/output (I/O) request from a software application;

in response to detecting the I/O request, determining a bandwidth group that corresponds to an I/O channel associated with the I/O request;

determining whether bandwidth consumption of the bandwidth group exceeds a predefined bandwidth limit;

selecting a predefined policy from among a plurality of predefined policies based on the predefined policy being assigned to the I/O channel; and

in response to determining that the bandwidth consumption of the bandwidth group exceeds the predefined bandwidth limit, executing the predefined policy assigned to the I/O channel for handling the I/O request.

2. The non-transitory computer-readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to:

determine the bandwidth group by selecting the bandwidth group from among a plurality of bandwidth groups based on the I/O channel, wherein each respective bandwidth group of the plurality of bandwidth groups encompasses one or more corresponding I/O channels; and

based on selecting the bandwidth group, determine the predefined bandwidth limit that is assigned to the bandwidth group, wherein each respective bandwidth group of the plurality of bandwidth groups is assigned a respective bandwidth limit.

3. The non-transitory computer-readable medium of claim 2 , wherein each I/O channel in each respective bandwidth group of the plurality of bandwidth groups is assigned a respective predefined policy specifying how I/O requests from one or more software applications are to be handled when the respective bandwidth limit for the respective bandwidth group is exceeded.

4. The non-transitory computer-readable medium of claim 3 , wherein the plurality of predefined policies specify a plurality of different techniques for handling the I/O requests.

5. The non-transitory computer-readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to, prior to receiving the I/O request from the software application:

receive a command from the software application;

based on the command, select the predefined policy from among the plurality of predefined policies; and

assign the predefined policy to the I/O channel.

6. The non-transitory computer-readable medium of claim 1 , wherein the predefined policy is configured for causing the I/O request to be discarded, or wherein the predefined policy is configured for causing the I/O request to be delayed for a particular time period.

7. The non-transitory computer-readable medium of claim 1 , further comprising program code that is executable by the processor for causing the processor to:

in response to determining that the bandwidth consumption of the bandwidth group does not exceed the predefined bandwidth limit, allow the I/O request to be performed without executing the predefined policy in relation to the I/O request.

8. The non-transitory computer-readable medium of claim 1 , wherein the predefined bandwidth limit is user customizable.

9. The non-transitory computer-readable medium of claim 1 , wherein the I/O request is a write request for storing data output by the software application to a log file on a storage system, and wherein the I/O channel is an output channel for writing the data to the log file.

10. The non-transitory computer-readable medium of claim 1 , wherein the program code corresponds to a kernel of an operating system, the kernel being configured to execute the operations.

11. A method comprising:

detecting, by a processor, an input/output (I/O) request from a software application;

in response to detecting the I/O request, determining, by the processor, a bandwidth group that corresponds to an I/O channel;

in response to determining the bandwidth group, determining, by the processor, that bandwidth consumption of the bandwidth group exceeds a predefined bandwidth limit assigned to the bandwidth group;

selecting, by the processor, a predefined policy from among a plurality of predefined policies based on the predefined policy being assigned to the I/O channel; and in response to determining that the bandwidth consumption of the bandwidth group exceeds the predefined bandwidth limit, executing, by the processor, the predefined policy assigned to the I/O channel for handling the I/O request.

12. The method of claim 11 , further comprising:

selecting, by the processor, the bandwidth group from among a plurality of bandwidth groups based on the I/O channel, wherein each respective bandwidth group of the plurality of bandwidth groups encompasses one or more corresponding I/O channels; and

based on selecting the bandwidth group, determining, by the processor, the predefined bandwidth limit assigned to the bandwidth group, wherein each respective bandwidth group of the plurality of bandwidth groups is assigned a respective bandwidth limit.

13. The method of claim 12 , wherein each I/O channel in each respective bandwidth group of the plurality of bandwidth groups is assigned a respective predefined policy specifying how I/O requests from one or more software applications are to be handled when the respective bandwidth limit for the respective bandwidth group is exceeded.

14. The method of claim 11 , wherein the predefined policy is configured for causing the I/O request to be discarded.

15. The method of claim 11 , wherein the predefined policy is configured for causing the I/O request to be delayed for a particular time period.

16. A computing device comprising:

a processor; and

a non-transitory memory including:

a software application; and

a bandwidth management service that is separate from the software application, the bandwidth management service being executable by the processor to perform operations including:

detecting an input/output (I/O) request from the software application;

in response to detecting the I/O request, determining a bandwidth group that corresponds to an I/O channel associated with the I/O request;

in response to determining the bandwidth group that corresponds to the I/O channel, determining whether bandwidth consumption of the bandwidth group exceeds a predefined bandwidth limit assigned to the bandwidth group;

selecting a predefined policy from among a plurality of predefined policies based on the predefined policy being assigned to the I/O channel; and

in response to determining that the bandwidth consumption of the bandwidth group exceeds the predefined bandwidth limit, executing the predefined policy assigned to the I/O channel for preventing the I/O request from being performed for at least a particular time period.

17. The computing device of claim 16 , wherein the bandwidth management service is further configured to:

determine the bandwidth group by selecting the bandwidth group from among a plurality of bandwidth groups based on the I/O channel, wherein each respective bandwidth group of the plurality of bandwidth groups encompasses a corresponding set of I/O channels, and wherein each respective bandwidth group of the plurality of bandwidth groups is assigned a respective bandwidth limit; and

wherein each I/O channel in each respective bandwidth group of the plurality of bandwidth groups is assigned a respective predefined policy of the plurality of predefined policies, the respective predefined policy specifying how the bandwidth management service is to handle I/O requests from one or more software applications when the respective bandwidth limit for the respective bandwidth group is exceeded.

18. The computing device of claim 16 , wherein the bandwidth group includes a plurality of I/O channels.

19. The computing device of claim 16 , wherein the bandwidth management service is further configured to, prior to receiving the I/O request from the software application:

receive a command;

select, based on the command, the predefined policy from among a plurality of predefined policies; and

assign the predefined policy to the I/O channel.

20. The computing device of claim 16 , wherein the I/O request is a write request for writing data to a destination, and wherein the bandwidth management service is further configured to execute the predefined policy prior to the data being transferred out of application memory.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2021
From: BUTENHOF, DAVID; POETTERING, LENNART; PORTANTE, PETER; SCALES, W WEBB
To: RED HAT, INC.
Reel/Frame 057580/0341 →
Continuity (1)
Related Publication 20230086172A1 · Mar 23, 2023