Interrupt Coalescing for Storage Virtual Function

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In virtualization scenarios, high input/output (IO) rates lead to significant processor overhead due to frequent interrupts, which can result in resource shortages, especially when multiple virtual machines share a single multi-processor system, and existing interrupt coalescing techniques are inefficient in hypervisor environments.

Innovation Solution

A method for coalescing IO interrupts to virtual machines by determining whether the virtual machine has responded to a previous interrupt, using a shared memory space for communication between the guest operating system and the virtualization intermediary to decide on interrupt delivery or coalescing based on IO completion queue fill levels and latency measures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If interrupt coalescing is implemented in hardware controllers with fine-grained timers, then IO latency is bounded, but the system becomes inefficient to use in a hypervisor environment

Engineering Contradiction:
ImproveIO latencyVSAvoidhypervisor efficiency
Core Design Contradiction:
Loss of timeVSEase of operation

Solution Approach 1:

The patent introduces a shared memory space as an intermediary between the guest operating system and the virtualization intermediary. This shared memory enables efficient communication and coordination for interrupt coalescing decisions without requiring complex timer mechanisms in the hypervisor, thus maintaining low latency while improving hypervisor efficiency.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Use of energy by moving object

If interrupt coalescing is used to limit the number of interrupts, then processor overhead is reduced, but IO latency increases

Engineering Contradiction:
Improveprocessor overheadVSAvoidIO latency
Core Design Contradiction:
Use of energy by moving objectVSLoss of time

Solution Approach 1:

The patent implements a feedback mechanism where the guest operating system writes information to shared memory indicating whether the IO completion queue has reached an unsafe fill level. The virtualization intermediary reads this information and makes informed decisions about interrupt delivery, dynamically balancing processor overhead reduction with latency maintenance based on real-time queue status.

Inventive Principle:
Principle #23Feedback

3Productivity

If multiple virtual machines share a single multi-processor system, then resource utilization improves, but processor overhead from frequent interrupts increases

Engineering Contradiction:
Improveresource utilizationVSAvoidprocessor overhead
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The patent merges interrupt handling operations across multiple virtual machines by implementing interrupt coalescing at the virtualization intermediary level. Multiple IO completions from different VMs can be coalesced into a single interrupt delivery when safe, reducing the total number of interrupts processed by the multi-processor system while maintaining efficient resource utilization.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8392623B2Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode
Publication Date: 2013.03.05 VMWARE INC
  • US8392623B2 patent drawing
  • US8392623B2 patent drawing
  • US8392623B2 patent drawing

AI summary

A method is described for coalescing input/output (IO) interrupts to a virtual machine (VM) running on a host computer. At a virtualization layer of the host computer that supports execution of the VM receives an IO interrupt in response to a completion of an IO request of the VM, wherein a transmission of the IO request by the VM to an IO device bypasses the virtualization layer. The virtualization layer then determines whether the VM has responded to a most recently delivered IO interrupt to the VM by the virtualization layer, and drops the IO interrupt if the VM has not responded to the most recently delivered IO interrupt, thereby failing to deliver the IO interrupt to the VM.