Storage Volume Creation Batching for High-Load Throughput
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional storage systems experience inefficiency and insufficient throughput when handling a large number of concurrent volume creation requests, as each request is serviced immediately by a single thread, leading to inefficiencies under high load.
Innovation Solution
Implementing a new threading model that utilizes waiting buffers to combine incoming volume creation requests, placing them in appropriate buffers based on storage groups or API calls, and executing them as a single workload after a predetermined waiting period.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If each volume creation request is serviced immediately by a single thread, then the system responds quickly to individual requests, but the throughput is insufficient when handling a large number of concurrent requests
Solution Approach 1:
Multiple volume creation requests that arrive within a predetermined time window are merged into a single batch operation. The system collects requests in waiting buffers and processes them together as one consolidated workload, thereby increasing throughput by reducing the number of separate storage device calls while maintaining acceptable response times for individual requests.
Solution Approach 2:
The system performs preliminary collection and buffering of volume creation requests before executing them. By anticipating that multiple requests will arrive in succession and preparing to batch them together, the system optimizes processing efficiency without significantly impacting the perceived response time for any single request.
2Productivity
If multiple volume creation requests are combined into a single workload, then the number of calls to storage devices is reduced and throughput is improved, but the system complexity increases due to buffer management
Solution Approach 1:
The system segments the processing of volume creation requests by creating separate waiting buffers for different storage groups and API calls. This segmentation allows independent batch processing of different request types without interfering with each other, managing complexity through organized separation while still achieving throughput improvements through batching.
Solution Approach 2:
Waiting buffers serve as intermediary structures between request reception and execution. These buffers mediate the flow of requests, allowing the system to decouple the arrival of requests from their processing timing, thereby enabling batch operations without requiring complex direct coordination between multiple threads and storage devices.
3Productivity
If volume creation requests are batched with a predetermined waiting period, then throughput is improved by combining requests, but the response time for individual requests increases
Solution Approach 1:
The system applies partial batching by setting a predetermined time window that is long enough to capture multiple requests but short enough to maintain acceptable response times. This partial action approach batches requests when possible without requiring excessive waiting, thereby achieving throughput improvement while limiting the maximum delay for any single request.
Data Source
AI summary
An example methodology includes, responsive to receiving a first volume creation request to create one or more volumes on a storage device, creating a first operation object for the first volume creation request and determining that a waiting buffer is appropriate for the first operation object. The method also includes placing the first operation object in the waiting buffer and, responsive to a determination that the first operation object is a first operation object placed in the waiting buffer, notifying a waiting buffer thread of the first operation object in the waiting buffer. The method further includes, upon expiration of a predetermined buffer waiting period defined for the waiting buffer, by the waiting buffer thread, extracting the first volume creation request and a second volume creation request from the waiting buffer, combining the first and second operation objects into single workload, and executing the single workload.


