IP Library Granted Patent US 12,399,741
Granted Patent B2
US 12,399,741 · App. 18/624,288 · Granted Aug 26, 2025

Adaptive CPU usage mechanism for networking system in a virtual environment

Inventors: Miao Mao (Shanghai, CN); Wei Zhou (Shanghai, CN); Zhong Chen (Shanghai, CN)
Assignee: SONICWALL INC.
G06F9/4881G06F9/455G06F9/46G06F9/461G06F9/466G06F9/48G06F9/4806G06F9/4843G06F9/485G06F9/4887G06F9/50G06F9/5005G06F9/5022G06F9/5027G06F9/505
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 12,399,741
App. No.
18/624,288
Granted
Aug 26, 2025
Kind
B2
Abstract

Methods and apparatus consistent with the present disclosure may be used in environments where multiple different virtual sets of program instructions are executed by shared computing resources. These methods may allow actions associated with a first set of virtual software to be paused to allow a second set of virtual software to be executed by the shared computing resources. In certain instances, methods and apparatus consistent with the present disclosure may manage the operation of one or more sets of virtual software at a point in time. Apparatus consistent with the present disclosure may include a memory and one or more processors that execute instructions out of the memory. At certain points in time, a processors of a computing system may pause a virtual process while allowing instructions associated with another virtual process to be executed.

Claims (57)

1. A method for adaptive control of virtualized processes, the method comprising:

tracking a number of packets associated with a first virtual process in a packet buffer waiting to be processed by a shared set of processing hardware;

assigning a no-sleep value based on a current time difference when the number of the packets meets a first threshold number;

processing one or more of the packets for at least a time corresponding to the current no-sleep value as weighted in accordance with a weighting factor;

pausing the first virtual process by using a sleep command, wherein the first virtual process is paused in accordance with a sleep timer; and

processing one or more packets associated with a second virtual process during the pause.

2. The method of claim 1 , wherein processing the packets is associated with the pause in accordance with the sleep timer.

3. The method of claim 1 , further comprising:

identifying that a number of processing tasks associated with the first virtual process exceeds the first threshold number;

allocating an amount of time for processing one or more of the processing tasks based on the current time difference; and

executing the number of processing tasks in accordance with the allocated amount of time.

4. The method of claim 3 , wherein the allocated amount of time is set to a first time span when the time difference is less than or equal to the sleep timer or a second time span when the time difference is greater than the sleep timer.

5. The method of claim 1 , wherein assigning the no-sleep value includes determining a last-full variable corresponding to a time when the packet buffer is filled to at least a threshold level, and wherein the no-sleep value is assigned based on the current time difference from the last-full variable.

6. The method of claim 1 , further comprising:

determining that there are no additional packets to process in the packet buffer after the one or more packets are processed for at least the time corresponding to the current no-sleep value; and

resetting the no-sleep value to zero to await new data packets for processing.

7. The method of claim 1 , wherein processing the packets associated with the second virtual process during the pause is further based on the number of packets waiting to be processed meeting a second threshold number that exceeds the first threshold number, the packets being processed at varying allocated times based on time differences corresponding to a number of processing tasks available to be performed in the packet buffer.

8. The method of claim 1 , further comprising:

determining that there are no processing tasks associated with the first virtual process; and

setting the sleep timer associated with the first virtual process to a value based on a set of criteria regarding historical timing or a number of processing tasks stored in a processing buffer.

9. The method of claim 1 , further comprising:

identifying processing tasks associated with the first virtual process that are available to process;

identifying that processing hardware is available to perform one or more of the processing tasks identified as available to process; and

processing the processing tasks identified as available to process with the identified processing hardware.

10. The method of claim 1 , further comprising processing the packets associated with the first virtual process when the second virtual process is later paused.

11. A non-transitory computer-readable storage medium having embodied thereon a program executable by a processor for implementing a method for adaptive control of virtualized processes, the method comprising:

tracking a number of packets associated with a first virtual process in a packet buffer waiting to be processed by a shared set of processing hardware;

assigning a no-sleep value based on a current time difference when the number of the packets meets a first threshold number;

processing one or more of the packets for at least a time corresponding to the current no-sleep value as weighted in accordance with a weighting factor;

pausing the first virtual process by using a sleep command, wherein the first virtual process is paused in accordance with a sleep timer; and

processing one or more packets associated with a second virtual process during the pause.

12. The non-transitory computer-readable storage medium of claim 11 , wherein processing the packets is associated with the pause in accordance with the sleep timer.

13. The non-transitory computer-readable storage medium of claim 11 , the program further executable to:

identify that a number of processing tasks associated with the first virtual process exceeds the first threshold number;

allocate an amount of time for processing one or more of the processing tasks based on the current time difference; and

execute the number of processing tasks in accordance with the allocated amount of time.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the allocated amount of time is set to a first time span when the time difference is less than or equal to the sleep timer or a second time span when the time difference is greater than the sleep timer.

15. The non-transitory computer-readable storage medium of claim 11 , wherein assigning the no-sleep value includes: determining a last-full variable corresponding to a time when the packet buffer is filled to at least a threshold level, and wherein the no-sleep value is assigned based on the current time difference from the last-full variable.

16. The non-transitory computer-readable storage medium of claim 11 , the program further executable to:

determine that there are no additional packets to process in the packet buffer after the one or more packets are processed for at least the time corresponding to the current no-sleep value; and

reset the no-sleep value to zero to await new data packets for processing.

17. The non-transitory computer-readable storage medium of claim 11 , wherein processing the packets associated with the second virtual process during the pause is further based on the number of packets waiting to be processed meeting a second threshold number that exceeds the first threshold number, the packets being processed at varying allocated times based on time differences corresponding to a number of processing tasks available to be performed in the packet buffer.

18. The non-transitory computer-readable storage medium of claim 11 , the program further executable to:

determine that there are no processing tasks associated with the first virtual process; and

set the sleep timer associated with the first virtual process to a value based on a set of criteria regarding historical timing or a number of processing tasks stored in a processing buffer.

19. The non-transitory computer-readable storage medium of claim 11 , the program further executable to:

identify processing tasks associated with the first virtual process that are available to process;

identify that processing hardware is available to perform one or more of the processing tasks identified as available to process; and

process the processing tasks identified as available to process with the identified processing hardware.

20. An apparatus for adaptive control of virtualized processes, the apparatus comprising:

a memory; and

a processor that executes instructions out of the memory to:

track a number of packets associated with a first virtual process in a packet buffer waiting to be processed by a shared set of processing hardware;

assign a no-sleep value based on a current time difference when the number of the packets meets a first threshold number;

process one or more of the packets for at least a time corresponding to the current no-sleep value as weighted in accordance with a weighting factor;

pause the first virtual process by using a sleep command, wherein the first virtual process is paused in accordance with a sleep timer; and

process one or more packets associated with a second virtual process during the pause.

Assignments (2)
FIRST LIEN IP SUPPLEMENT Recorded Jun 30, 2025
From: SONICWALL INC.
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 071758/0159 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2024
From: MAO, MIAO; ZHOU, WEI; CHEN, ZHONG
To: SONICWALL INC.
Reel/Frame 067596/0982 →
Continuity (3)
Continuation 17350239 · Jun 17, 2021
Provisional Application 63041003 · Jun 18, 2020
Related Publication 20240311185A1 · Sep 19, 2024
References Cited (14)
US 9893999B2 · Mavroidis · 2018 [cited by examiner]
US 11948001B2 · Mao et al. · 2024 [cited by applicant]
US 20090049451A1 · Bates · 2009 [cited by applicant]
US 20130132711A1 · Shah · 2013 [cited by applicant]
US 20140022901A1 · Suzuki · 2014 [cited by applicant]
US 20160224373A1 · Harris · 2016 [cited by applicant]
US 20160275025A1 · Accapadi · 2016 [cited by applicant]
US 20170221173A1 · Acharya · 2017 [cited by applicant]
US 20170249152A1 · Cuadra · 2017 [cited by applicant]
US 20180212886A1 · Contavalli · 2018 [cited by applicant]
US 20200026561A1 · Slinger · 2020 [cited by applicant]
US 20210397475A1 · Mao et al. · 2021 [cited by applicant]
U.S. Appl. No. 17/350,239, Office Action mailed Dec. 12, 2022. [cited by applicant]
U.S. Appl. No. 17/350,239, Final Office Action mailed Apr. 3, 2023. [cited by applicant]