Adaptive Thread Processing for IO Requests

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Data storage systems face efficiency drops when CPU cores become busy due to increased competition for resources, leading to higher CPI (Cycles Per Instruction) and reduced performance, especially when using a single thread for processing IO requests.

Innovation Solution

An adaptive technique that allows a first thread to execute initial instructions for IO requests and, based on CPU core busyness, either continue processing or pass the request to a second thread, dynamically adjusting the number of threads used to optimize efficiency by avoiding context switching costs.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a single thread is used to process IO requests, then context switching costs are avoided and efficiency is improved, but when the CPU core becomes busy, competition for core resources increases and CPI increases significantly

Engineering Contradiction:
ImproveIO request processing efficiencyVSAvoidCPI (Cycles Per Instruction)
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system dynamically adjusts the number of threads used for processing IO requests based on real-time CPU core busyness conditions. When the core is idle, a single thread processes requests to avoid context switching overhead. When the core becomes busy, the system transitions to using multiple threads to distribute the processing load and reduce CPI, making the threading strategy adaptive rather than static.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The invention changes the parameter of thread count based on system conditions. By monitoring CPU core utilization and adjusting the number of active threads accordingly, the system optimizes the balance between context switching costs and resource competition effects, thereby maintaining efficient IO request processing across varying workload conditions.

Inventive Principle:
Principle #35Parameter changes

2Device complexity

If a single thread processes IO requests, then system simplicity is maintained, but when the CPU core is busy, the thread ties up the core and reduces overall system throughput

Engineering Contradiction:
Improvethread management complexityVSAvoidsystem throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The system employs dynamic thread management where the number of threads active for IO request processing changes based on CPU core utilization. This allows the system to maintain simplicity with single-threaded processing during idle periods while transitioning to multi-threaded processing during busy periods to prevent a single thread from monopolizing the core and reducing throughput.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The system automatically monitors its own CPU core busyness and makes decisions about thread allocation without external intervention. This self-service mechanism allows the system to adaptively optimize its own performance by adjusting thread count based on real-time conditions, balancing complexity and throughput autonomously.

Inventive Principle:
Principle #25Self-service

3Loss of time

If multiple threads are used to process IO requests, then CPU core resource competition is reduced and CPI is lowered, but context switching costs increase and efficiency decreases

Engineering Contradiction:
ImproveCPI (Cycles Per Instruction)VSAvoidIO request processing efficiency
Core Design Contradiction:
Loss of timeVSProductivity

Solution Approach 1:

The system dynamically selects between single-threaded and multi-threaded processing modes based on CPU core busyness. When the core is idle, it uses a single thread to avoid context switching overhead. When the core is busy, it switches to multiple threads to reduce resource competition and CPI, thereby optimizing the trade-off between these two factors under different system conditions.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The invention changes the operational parameter of thread count based on system state. By monitoring CPU utilization and adjusting whether to use one or multiple threads, the system optimizes the balance between context switching costs and resource competition effects, achieving efficient IO processing across varying workload conditions.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10838721B1Adaptive thread processing of IO requests
Publication Date: 2020.11.17 EMC IP HLDG CO LLC
  • US10838721B1 patent drawing
  • US10838721B1 patent drawing
  • US10838721B1 patent drawing

AI summary

A technique for processing IO (Input/Output) requests includes executing a first set of instructions for processing an IO request using a first thread on a CPU core and providing the first thread with an option, based on how busy the CPU core is, either (i) to execute a second set of instructions for further processing the IO request itself or (ii) to pass the IO request to a second thread on the CPU core, such that the second thread executes the second set of instructions instead of the first thread.