IP Library Granted Patent US 11,948,001
Granted Patent B2
US 11,948,001 · App. 17/350,239 · Granted Apr 2, 2024

Adaptive CPU usage mechanism for networking system in a virtual environment

Inventors: Miao Mao (Shanghai, CH); Wei Zhou (Shanghai, CH); Zhong Chen (Shanghai, CH)
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 11,948,001
App. No.
17/350,239
Granted
Apr 2, 2024
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 (53)

1. A method for controlling processing tasks, the method comprising:

setting a first sleep timer to an initial value when a no-sleep variable is determined to be set to a value of zero, the initial value of the first sleep timer identifying a first time that a first virtual process will be paused, wherein a processor executes instructions associated with at least one other process when the first virtual process is paused, and wherein the initial value is set based on a number of processing tasks including the at least one other process to be performed;

executing by the processor instructions associated with the first virtual process after identifying that the first sleep timer corresponds to a zero value;

identifying that the number of processing tasks associated with the first virtual process at least meets a threshold number;

identifying an allocated time for processing one or more processing tasks of the number of processing tasks based on a time difference, wherein the allocated time is greater when the time difference is less than or equal to a first time setting and the allocated time is less when the time difference is greater than the first time setting; and

processing the one or more processing tasks for a time span not exceeding the allocated time wherein the allocated time includes a number of iterations that the number of processing tasks is processed.

2. The method of claim 1 , further comprising calculating the time difference by subtracting a last time that data packets associated with the first virtual process were processed from a current time.

3. The method of claim 1 , further comprising calculating the time difference based on a fill rate of a task buffer.

4. The method of claim 1 , wherein the number of processing tasks are associated with processing data packets.

5. The method of claim 1 , further comprising:

identifying that a first no-sleep timer corresponds to a non-zero no-sleep time;

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

setting the first no-sleep timer to a zero no-sleep time.

6. The method of claim 5 , further comprising:

identifying that the no-sleep time corresponds to the zero no-sleep time; and

setting the first sleep timer to a default value.

7. The method of claim 6 , further comprising identifying that there are additional processing tasks associated with the first virtual process and waking the paused first virtual process.

8. The method of claim 1 , further comprising:

processing data packets associated with a second virtual process when the first virtual process is paused; and

processing data packets associated with the first virtual process when the second virtual process is paused.

9. The method of claim 1 , further comprising:

receiving a plurality of data packets of the first virtual process when the first virtual process is paused; and

storing each of the plurality of data packets of the first virtual process in a buffer.

10. The method of claim 1 , further comprising identifying that the processor is available to process the instructions associated with the first virtual process.

11. A non-transitory computer-readable storage medium having embodied thereon a program executable by a processor for implementing a method for controlling processing tasks, the method comprising:

setting a first sleep timer to an initial value when a no-sleep variable is determined to be set to a value of zero, the initial value of the first sleep timer identifying a first time that a first virtual process will be paused, wherein the processor executes instructions associated with at least one other process when the first virtual process is paused, wherein the initial value is set based on a number of processing tasks including the at least one other process to be performed;

executing by the processor instructions associated with the first virtual process after identifying that the first sleep timer corresponds to a zero value;

identifying that the number of processing tasks associated with the first virtual process at least meets a threshold number;

identifying an allocated time for processing one or more processing tasks of the number of processing tasks based on a time difference, wherein the allocated time is greater when the time difference is less than or equal to a first time setting and the allocated time is less when the time difference is greater than the first time setting; and

processing the one or more processing tasks for a time span not exceeding the allocated time wherein the allocated time includes a number of iterations that the number of processing tasks is processed.

12. The non-transitory computer-readable storage medium of claim 11 , the program further executable to calculate the time difference by subtracting a last time that data packets associated with the first virtual process were processed from a current time.

13. The non-transitory computer-readable storage medium of claim 11 , the program further executable to calculate the time difference based on a fill rate of a task buffer.

14. The non-transitory computer-readable storage medium of claim 11 , wherein the number of processing tasks are associated with processing data packets.

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

identify that a first no-sleep timer corresponds to a non-zero no-sleep time; identify that there are no additional processing tasks associated with the first virtual process; and

set the first no-sleep timer to a zero no-sleep time.

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

identify that the no-sleep time corresponds to the zero no-sleep time; and

set the first sleep timer to a default value.

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

identify that there are additional processing tasks associated with the first virtual process; and

wake the paused first virtual process.

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

process data packets associated with a second virtual process when the first virtual process is paused; and

process data packets associated with the first virtual process when the second virtual process is paused.

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

receive a plurality of data packets of the first virtual process when the first virtual process is paused; and

store each of the plurality of data packets of the first virtual process in a buffer.

20. An apparatus for controlling processing tasks, the apparatus comprising:

a memory; and

a processor that executes instructions out of the memory to:

set a first sleep timer to an initial value when a no-sleep variable is determined to be set to a value of zero, the initial value of the first sleep timer identifying a first time that a first virtual process will be paused, wherein the initial value is set based on a number of processing tasks including at least one other process to be performed, wherein the processor executes instructions associated with at least one other process when the first virtual process is paused, identify that the first sleep timer corresponds to a zero value, identify that the number of processing tasks associated with the first virtual process at least meets a threshold number, identify an allocated time for processing one or more processing tasks of the number of processing tasks based on a time difference, wherein the allocated time is greater when the time difference is less than or equal to a first time setting and the allocated time is less when the time difference is greater than the first time setting;

and process the one or more processing tasks for a time span not exceeding the allocated time, wherein the allocated time includes a number of iterations that the number of processing tasks is processed.

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 Mar 1, 2022
From: MAO, MIAO; ZHOU, WEI; CHEN, ZHONG
To: SONICWALL, INC.
Reel/Frame 059132/0678 →
Continuity (2)
Provisional Application 63041003 · Jun 18, 2020
Related Publication 20210397475A1 · Dec 23, 2021
Cited By (1)
US 12,399,741