IP Library Granted Patent US 11,921,648
Granted Patent B1
US 11,921,648 · App. 17/958,810 · Granted Mar 5, 2024

Statistic-based adaptive polling driver

Inventors: Danny Lobo (Pleasanton, CA); Suhas Bhanushali (Westford, MA); Russell Erikson (Portola Valley, CA); Edward Charles Lombardo (Salem, NH); Michael Volante (Groton, MA)
Assignee: Netscout Systems Texas, LLC
G06F13/128H04L49/9047
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,921,648
App. No.
17/958,810
Granted
Mar 5, 2024
Kind
B1
Abstract

A processor having kernel space and user space and a method is provided. The method includes receiving in the user space at least one interface statistic about each hardware interface of one or more hardware interfaces receiving packets, wherein the at least one interface statistic is provided from the hardware interface. The method further includes dynamically adjusting, from within the user space, a priority at which each of the one or more hardware interfaces is polled as a function of the at least one interface statistic.

Claims (63)

1. A method implemented in a processor having kernel space and user space, the method comprising:

receiving in the user space at least one interface statistic about each hardware interface of one or more hardware interfaces receiving packets, wherein the at least one interface statistic is provided from the hardware interface; and

dynamically adjusting, from within the user space, a priority at which each of the one or more hardware interfaces is polled as a function of the at least one interface statistic, wherein dynamically adjusting the priority for a particular hardware interface of the one or more hardware interfaces includes changing between states of a state machine, including:

entering and remaining in a drop state while a dropped packet condition is detected and checking for dropped packets while in the drop state, wherein changing between states of the state machine includes:

entering and remaining in a receive (Rx) buffer filled state while an Rx buffer filled condition is detected and a dropped packet condition is not detected for the hardware interface, wherein the Rx buffer filled condition is a function of fill status of an Rx buffer in the hardware interface as reported to the kernel space; and

checking for the dropped packet condition and the Rx buffer filled condition while in the Rx buffer filled state.

2. The method of claim 1 , wherein the priority of the hardware interface is maximized when entering the drop state.

3. The method of claim 1 , wherein while the Rx buffer filled condition is detected for the hardware interface, the priority of the hardware interface is adjusted based on a calculated interval packet rate of the hardware interface.

4. The method of claim 1 , wherein changing between states of the state machine further includes:

entering and remaining in an Rx driver queue filled state while an Rx driver queue filled condition is detected and Rx buffer filled and dropped packet conditions are not detected for the hardware interface, wherein the Rx driver queue filled condition is a function of fill status of a receive queue established by Direct Access Memory (DMA) transfer from the hardware interface; and

checking for the dropped packet condition and the Rx driver queue filled condition while in the Rx buffer filled state.

5. The method of claim 4 , wherein,

checking for the dropped packet condition is performed before checking for the Rx driver queue filled condition, and/or

while the Rx driver queue filled condition is detected for the hardware interface, the priority of the hardware interface is adjusted based on a calculated interval packet rate of the hardware interface.

6. The method of claim 4 , wherein changing between states of the state machine further includes:

entering and remaining in a packet receiving state when the hardware interface is receiving packets and Rx driver queue filled, Rx buffer filled, and dropped packet conditions are not detected for the hardware interface, wherein while in the packet receiving state, the priority of the hardware interface is adjusted based on a calculated interval packet rate of the hardware interface.

7. The method of claim 4 , wherein,

checking for the dropped packet condition is performed before checking for the Rx buffer filled condition, and checking for the Rx buffer filled condition is performed before checking for the Rx driver queue filled condition, and/or

the priority is increased or decreased when changing to the Rx buffer filled state or the Rx driver queue filled state and the priority is maximized when changing to the drop state.

8. The method of claim 4 , wherein changing between states of the state machine further includes:

entering and remaining in an idle state when the hardware interface is not receiving packets, wherein the idle state includes refraining from monitoring for Rx driver queue filled, Rx buffer filled, and dropped packet conditions.

9. A method implemented in a processor having kernel space and user space, the method comprising:

receiving in the user space at least one interface statistic about each hardware interface of one or more hardware interfaces receiving packets, wherein the at least one interface statistic is provided from the hardware interface; and

dynamically adjusting, from within the user space, a priority at which each of the one or more hardware interfaces is polled as a function of the at least one interface statistic, wherein adjusting the priority includes:

maximizing the priority when a dropped packet condition is detected, and maximizing the priority includes maximizing a polling rate for polling the hardware interface, maximizing a nice value associated with the hardware interface, and maximizing a number of poll threads to allocate for the hardware interface; or

adjusting the priority when Rx driver queue filled or Rx buffer filled conditions are detected, wherein adjusting the priority includes activating or deactivating one or more poll threads for the hardware interface, increasing or decreasing a nice value associated with the hardware interface, and increasing or decreasing a polling rate for polling the hardware interface.

10. A processor having kernel space and user space and a polling engine in the user space, the polling engine comprising:

at least one memory configured to store instructions; and

at least one processing device disposed in communication with the at least one memory, wherein the at least one processing device upon execution of the instructions is configured to:

receive at least one interface statistic about each hardware interface of one or more hardware interfaces receiving packets, wherein the at least one interface statistic is provided from the hardware interface;

dynamically adjust, from within the user space, a priority at which each of the one or more hardware interfaces is polled as a function of the at least one interface statistic;

dynamically adjust the priority for a particular hardware interface of the one or more hardware interfaces by changing between states of a state machine, including entering and remaining in a drop state while a dropped packet condition is detected and checking for dropped packets while in the drop state; and

change between states of the state machine by:

entering and remaining in a receive (Rx) buffer filled state while an Rx buffer filled condition is detected and a dropped packet condition is not detected for the hardware interface, wherein the Rx buffer filled condition is a function of fill status of an Rx buffer in the hardware interface as reported to the kernel space; and

checking for the dropped packet condition and the Rx buffer filled condition while in the Rx buffer filled state.

11. The processor of claim 10 , wherein the priority of the hardware interface is maximized when entering the drop state.

12. The processor of claim 10 , wherein while the Rx buffer filled condition is detected for the hardware interface, the at least one processing device upon execution of the instructions is further configured to adjust priority of the hardware interface based on a calculated interval packet rate of the hardware interface.

13. The processor of claim 10 , wherein the at least one processing device upon execution of the instructions is further configured to change between states of the state machine by:

entering and remaining in an Rx driver queue filled state while an Rx driver queue filled condition is detected and Rx buffer filled and dropped packet conditions are not detected for the hardware interface, wherein the Rx driver queue filled condition is a function of fill status of a receive queue established by Direct Access Memory (DMA) transfer from the hardware interface; and

checking for the dropped packet condition and the Rx driver queue filled condition while in the Rx buffer filled state.

14. The processor of claim 13 , wherein,

the at least one processing device upon execution of the instructions is further configured to check for the dropped packet condition before checking for the Rx driver queue filled condition, and/or

while the Rx driver queue filled condition is detected for the hardware interface, the at least one processing device upon execution of the instructions is further configured to adjust priority of the hardware interface based on a calculated interval packet rate of the hardware interface.

15. The processor of claim 13 , wherein the at least one processing device upon execution of the instructions is further configured to change between states of the state machine further by entering and remaining in a packet receiving state when the hardware interface is receiving packets and Rx driver queue filled, Rx buffer filled, and dropped packet conditions are not detected for the hardware interface, wherein while in the packet receiving state, the at least one processing device upon execution of the instructions is further configured to adjust priority of the hardware interface based on a calculated interval packet rate of the hardware interface.

16. The processor of claim 13 , wherein,

the at least one processing device upon execution of the instructions is further configured to check for the dropped packet condition before checking for the Rx buffer filled condition, and to check for the Rx buffer filled condition before checking for the Rx driver queue filled condition, and/or

the at least one processing device upon execution of the instructions is further configured to increase or decrease the priority when changing to the Rx buffer filled state or the Rx driver queue filled state and to maximize the priority when changing to the drop state.

17. The processor of claim 13 , wherein the at least one processing device upon execution of the instructions is further configured to change between states of the state machine further by:

entering and remaining in an idle state when the hardware interface is not receiving packets, wherein the idle state includes refraining from monitoring for Rx driver queue filled, Rx buffer filled, and dropped packet conditions.

18. The processor of claim 10 , wherein the at least one processing device upon execution of the instructions is further configured to adjust the priority by:

maximizing the priority when a dropped packet condition is detected, and maximizing the priority includes maximizing a polling rate for polling the hardware interface, maximizing a nice value associated with the hardware interface, and maximizing a number of poll threads to allocate for the hardware interface; or

adjusting the priority when Rx driver queue filled or Rx buffer filled conditions are detected, wherein adjusting the priority includes activating or deactivating one or more poll threads for the hardware interface, increasing or decreasing a nice value associated with the hardware interface, and increasing or decreasing a polling rate for polling the hardware interface.

19. A non-transitory computer readable storage medium and one or more computer programs embedded therein is provided, which when executed by a computer system, cause the computer system to:

receive at least one interface statistic about each hardware interface of one or more hardware interfaces receiving packets, wherein the at least one interface statistic is provided from the hardware interface; and

dynamically adjust, from within the user space, a priority at which each of the one or more hardware interfaces is polled as a function of the at least one interface statistic, wherein dynamically adjusting the priority for a particular hardware interface of the one or more hardware interfaces includes changing between states of a state machine, including:

entering and remaining in a drop state while a dropped packet condition is detected and checking for dropped packets while in the drop state, wherein changing between states of the state machine includes:

entering and remaining in a receive (Rx) buffer filled state while an Rx buffer filled condition is detected and a dropped packet condition is not detected for the hardware interface, wherein the Rx buffer filled condition is a function of fill status of an Rx buffer in the hardware interface as reported to the kernel space; and

checking for the dropped packet condition and the Rx buffer filled condition while in the Rx buffer filled state.

20. The non-transitory computer readable storage of claim 19 , wherein the priority of the hardware interface is maximized when entering the drop state.

21. The non-transitory computer readable storage of claim 19 , wherein while the Rx buffer filled condition is detected for the hardware interface, the priority of the hardware interface is adjusted based on a calculated interval packet rate of the hardware interface.

22. The non-transitory computer readable storage of claim 19 , wherein changing between states of the state machine further includes:

entering and remaining in an Rx driver queue filled state while an Rx driver queue filled condition is detected and Rx buffer filled and dropped packet conditions are not detected for the hardware interface, wherein the Rx driver queue filled condition is a function of fill status of a receive queue established by Direct Access Memory (DMA) transfer from the hardware interface; and

checking for the dropped packet condition and the Rx driver queue filled condition while in the Rx buffer filled state.

Assignments (2)
SECURITY INTEREST Recorded Oct 22, 2024
From: NETSCOUT SYSTEMS, INC.; ARBOR NETWORKS LLC; NETSCOUT SYSTEMS TEXAS, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 069216/0007 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2023
From: LOBO, DANNY, MR.; BHANUSHALI, SUHAS; ERIKSON, RUSSELL, MR.; LOMBARDO, EDWARD CHARLES; VOLANTE, MICHAEL
To: NETSCOUT SYSTEMS TEXAS, LLC
Reel/Frame 062364/0284 →