Container Persistent Volume I/O Share Control in Virtualized Storage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing virtualization systems face challenges in distributing disk I/O bandwidth fairly among containers backed by a single virtual disk file, leading to performance issues where high disk activity by one container monopolizes resources, affecting others.
Innovation Solution
Implement a mechanism to partition I/O bandwidth among persistent volumes based on application type, using in-memory counters and metadata tables to manage and distribute I/O operations, ensuring each container gets its allocated share.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If disk I/O bandwidth is limited to prevent monopolization, then I/O performance for other containers is improved, but write I/O performance for containers with high disk activity is reduced
Solution Approach 1:
The patent segments the disk I/O bandwidth into multiple shares, where each persistent volume is assigned a specific share of the total I/O bandwidth. This segmentation prevents any single container from monopolizing the entire bandwidth while ensuring that all containers receive a fair portion of the resources, thus resolving the contradiction between preventing monopolization and maintaining high throughput.
Solution Approach 2:
The patent changes the parameter of I/O bandwidth allocation from a fixed total limit to a dynamic share-based distribution. By introducing share weights that can be configured per persistent volume, the system can adapt bandwidth allocation to match the actual needs of different containers, allowing high-throughput workloads to get more resources when needed while preventing monopolization.
2Ease of operation
If I/O bandwidth is allocated to virtual disk files, then disk I/O operations are managed, but fair distribution among multiple containers is not achieved
Solution Approach 1:
The patent divides the I/O bandwidth into discrete shares that can be independently allocated to different persistent volumes. Each container receives a predictable share based on its configuration, ensuring fair distribution while maintaining ease of management through a simple share-based model that the hypervisor can enforce automatically.
Solution Approach 2:
The patent implements a feedback mechanism where the hypervisor monitors and tracks the share of I/O bandwidth consumed by each persistent volume. This feedback allows the system to dynamically adjust and enforce bandwidth limits, ensuring that containers receive their allocated shares and preventing monopolization while maintaining simple operational management.
3Adaptability or versatility
If a single virtual disk file is used for multiple persistent volumes, then storage resources are shared, but I/O bandwidth monopolization occurs
Solution Approach 1:
The patent segments the I/O bandwidth associated with a single virtual disk file into multiple shares that correspond to different persistent volumes. This allows the system to maintain the versatility of using a single shared storage file while preventing any single container from monopolizing the I/O bandwidth, thus resolving the contradiction between resource sharing and bandwidth availability.
Solution Approach 2:
The patent applies local quality by assigning different I/O bandwidth shares to different persistent volumes based on their specific needs and configurations. Each persistent volume receives a tailored share of the bandwidth rather than uniform treatment, allowing the system to maintain shared storage versatility while ensuring adequate I/O bandwidth availability for each container.
Data Source
AI summary
The disclosure provides a method for handling heterogeneous input/output (I/O) load for containers running in a virtualized environment. The method generally includes receiving, from an application running in a container, an I/O indicating to write data to a persistent volume backed by a virtual disk file in storage, determining a maximum number of in-flight write I/Os allowed for the persistent volume based on a share of a total write I/O bandwidth assigned to the virtual disk file and allocated to the persistent volume, determining a current number of in-flight write I/Os for the persistent volume, and determining whether the current number of in-flight write I/Os for the persistent volume is greater than or equal to the maximum number of in-flight write I/Os allowed for the persistent volume to determine whether the received I/O is to be rejected or processed.


