Storage Subsystem Near Zero Overhead Command Timeout Scheme
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current command timeout schemes in enterprise storage subsystems incur significant overhead due to regular interval checks of I/O commands, which can lead to system complexity and delayed processing as new I/Os have to wait while the queue is locked.
Innovation Solution
Implementing a near zero overhead command timeout scheme using two counters (count_1 and count_2) where I/Os increment and decrement these counters, and the storage subsystem switches between them every 5 seconds, only performing explicit checks when a counter is non-zero, thereby reducing unnecessary checks and system overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If regular interval checks of I/O commands are performed, then timeout detection reliability is improved, but system overhead and complexity increase
Solution Approach 1:
Each I/O command autonomously manages its own timeout tracking by maintaining a counter in its control block and comparing it against the timeout threshold, eliminating the need for centralized periodic checking of all I/O commands. This self-service approach reduces system overhead while maintaining reliable timeout detection.
Solution Approach 2:
The centralized timeout checking mechanism is segmented into individual I/O command instances, where each command has its own timeout counter and detection logic. This segmentation distributes the timeout management burden across individual I/O operations rather than requiring a single centralized checking process.
2Reliability
If regular interval checks of I/O commands are performed, then timeout detection reliability is improved, but processing speed decreases
Solution Approach 1:
The system skips periodic overhead checks and rushes through I/O processing by using event-driven timeout detection. Timeout checking occurs only when necessary (when I/O commands are submitted or completed), allowing normal processing to proceed without interruption or waiting for periodic check intervals.
Solution Approach 2:
The useful action of I/O processing continues uninterrupted without periodic pauses for timeout checking. The timeout detection mechanism operates continuously in the background through event triggers rather than interrupting the processing flow with periodic checks, maintaining continuous productive action.
3Measurement precision
If queue locking is performed during checking, then I/O flow accuracy is improved, but system overhead increases
Solution Approach 1:
Each I/O command independently tracks its own timeout status through counters in its control block, eliminating the need for centralized queue locking to ensure accurate timeout detection. This self-service approach maintains measurement precision without the overhead of queue locking mechanisms.
4Measurement precision
If new I/Os wait during queue locking, then I/O flow accuracy is improved, but loss of time increases
Solution Approach 1:
The system skips the time-consuming queue locking operation entirely by using event-driven timeout detection. New I/O commands are submitted and processed immediately without waiting for periodic check intervals or queue lock availability, eliminating waiting time while maintaining accurate timeout detection through autonomous counter management.
Data Source
AI summary
A method for handling input/output (I/O) commands in a storage system includes establishing first and second counters for counting unfinished I/O commands, and establishing a reference which is initially set to the first counter. The reference is periodically switched between the first counter and the second counter, and the switching interval is less than the I/O timeout value. Upon placing an I/O command into an I/O command queue, a copy of the current reference is made into an I/O specific control block and the current referenced counter is incremented. Upon finishing of an I/O command, the counter referenced by the I/O specific control block is decremented and the I/O command is removed from the I/O command queue. When switching the reference, a problem is detected in the event that the counter being switched to is above a predetermined threshold. Upon detection of a problem, a more explicit I/O check is conducted.


