Priority-Based CPU Multitasking for Storage Systems
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional approaches to managing CPU usage in storage systems with continuous background activity result in significant penalties due to unused CPU cycles and unnecessary context-switches, as they suspend and resume operating system threads, leading to inefficiencies in multitasking.
Innovation Solution
Implementing a method that utilizes execution priorities to manage CPU multitasking by releasing the CPU for a defined period, lowering the execution priority of the operating system thread below that of applications, allowing other applications to utilize the CPU, and then raising the priority when needed, thereby avoiding context-switch penalties and optimizing CPU usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the operating system thread suspends itself to allow other applications to utilize the CPU, then other applications can execute on the CPU, but there are significant penalties from unused CPU cycles and unnecessary context-switches
Solution Approach 1:
The patent implements dynamic CPU time-slice allocation where the operating system thread can flexibly adjust its execution timing. Instead of rigid suspension, the thread dynamically releases the CPU for a defined time period and automatically resumes when the time expires, adapting to varying system conditions and eliminating wasted CPU cycles.
Solution Approach 2:
The patent introduces periodic CPU release mechanisms where the operating system thread releases the CPU in defined time intervals. This periodic action ensures that other applications get scheduled execution slots while the original thread maintains its position in the execution queue, preventing both CPU waste and excessive context-switching.
2Adaptability or versatility
If the operating system thread suspends itself to allow other applications to utilize the CPU, then other applications can execute on the CPU, but there are unnecessary context-switches
Solution Approach 1:
The patent creates a dynamic execution model where threads can voluntarily yield CPU time without full suspension. The operating system thread maintains its execution context while temporarily releasing the CPU, reducing the need for complete context switches and associated overhead while still enabling multitasking.
Solution Approach 2:
The patent ensures continuous useful action by implementing a mechanism where the operating system thread remains in the execution queue and automatically resumes after releasing the CPU for a defined period. This continuity eliminates the need for repeated suspend/resume cycles, reducing context-switch overhead while maintaining adaptability.
3Ease of operation
If conventional approaches release the CPU by suspending the operating system thread, then other applications can utilize the CPU, but there are significant penalties from unused CPU cycles
Solution Approach 1:
The patent implements periodic CPU release where the operating system thread releases the CPU for defined time intervals rather than indefinite suspension. This periodic approach ensures that CPU cycles are not wasted, as the thread automatically resumes after the time period expires, maintaining both ease of operation and high productivity.
Solution Approach 2:
The patent incorporates feedback mechanisms where the operating system thread monitors CPU usage and automatically adjusts its release timing. When other applications complete their execution or when system conditions change, the thread receives feedback and resumes execution, ensuring optimal CPU utilization without manual intervention.
Data Source
AI summary
A method, computer program product, and computing system for executing a first sub-thread of an operating system thread on a central processing unit (CPU) of the computing device. The CPU may be released for a defined period of time. One of an application and a second sub-thread of the operating system thread may be executed based upon, at least in part, an execution priority of the operating system thread and an execution priority of the application.


