File System I/O Request Concurrency and Lock Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional file systems process random write I/O requests sequentially, leading to degraded performance, increased response time, and heightened CPU contention due to synchronous processing of write operations, which negatively impacts storage system efficiency and file system integrity.

Innovation Solution

Implementing a method to gather and process multiple write I/O requests concurrently, allowing map-for-write and commit-map-for-write operations to be performed together, thereby reducing the number of times file system locks are acquired and inodes updated, and optimizing RAID disk usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If write I/O requests are processed sequentially, then file system consistency is maintained, but write throughput and performance degrade

Engineering Contradiction:
Improvewrite throughputVSAvoidwrite latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the write I/O request processing into distinct phases (map-for-write operations, data transfer, commit-map-for-write operations) that can be executed concurrently for different requests. This segmentation allows the system to process multiple requests in parallel while maintaining the necessary ordering within each phase, thereby improving write throughput without sacrificing consistency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements dynamic processing where the system adapts the execution order of I/O requests based on their phases. Different phases of different requests can be executed in different orders concurrently, with the system dynamically managing the execution flow to optimize performance while ensuring that committed operations are properly ordered. This dynamic approach resolves the contradiction between sequential processing safety and parallel processing speed.

Inventive Principle:
Principle #15Dynamics

2Reliability

If synchronous processing is used for write operations, then file system integrity is ensured, but CPU contention increases

Engineering Contradiction:
Improvefile system integrityVSAvoidCPU contention
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

By segmenting write operations into distinct phases and allowing concurrent execution of different phases for different requests, the patent reduces the time each CPU core needs to hold locks and maintain state. This segmentation decreases CPU contention while preserving file system integrity through proper phase ordering and commit protocols.

Inventive Principle:
Principle #1Segmentation

3Productivity

If random write I/O requests are processed sequentially, then resource conflicts are avoided, but storage system efficiency decreases

Engineering Contradiction:
Improvestorage system efficiencyVSAvoidresponse time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements dynamic request scheduling that allows multiple random write requests to be processed concurrently by adapting the execution order based on request phases and resource availability. This dynamic approach improves storage system efficiency and reduces response time compared to rigid sequential processing, while still avoiding resource conflicts through proper synchronization at phase boundaries.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9760574B1Managing I/O requests in file systems
Publication Date: 2017.09.12 EMC IP HLDG CO LLC
  • US9760574B1 patent drawing
  • US9760574B1 patent drawing
  • US9760574B1 patent drawing

AI summary

A method is used in managing I/O requests in file systems. A first and second I/O requests are received. The first I/O request is directed to a first portion of a file and the second I/O request is directed to a second portion of the file. Respective first portions of the first and second I/O requests are performed concurrently. Respective second portions of the first and second I/O requests are performed concurrently. Execution of the second I/O request starts before execution of the first I/O request finishes.