Shared Memory Channel for Low-Latency VM Hypervisor Communication

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In virtualized computing systems, communication between clients in virtual machines (VMs) and filesystem servers in hypervisors involves multiple system calls and context switches, leading to latency issues when accessing shared storage, which is undesirable for most applications.

Innovation Solution

A method is introduced where a client driver in a VM allocates shared memory and establishes a shared memory channel with a filesystem server in the hypervisor, allowing direct communication through this channel without the need for system calls or VM exits, using inter-process communication and kernel cooperation to manage the shared memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If multiple system calls and context switches are used for communication between clients in VMs and filesystem servers in hypervisors, then communication can be established, but latency increases

Engineering Contradiction:
Improvecommunication latencyVSAvoidcommunication mechanism complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent introduces a shared memory channel as an intermediary mechanism between the client driver in the VM and the filesystem server in the hypervisor. This shared memory channel acts as a direct communication pathway that eliminates the need for repeated system calls and context switches, thereby reducing communication latency while maintaining the necessary interaction between different address spaces.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent implements preliminary allocation of shared memory resources before actual communication occurs. The client driver allocates shared memory in advance, and the hypervisor prepares the corresponding memory region, establishing the communication pathway before data transfer begins. This preliminary setup eliminates the need for repeated system calls during actual data communication.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If system calls and context switches are used for communication, then process isolation is maintained, but performance deteriorates

Engineering Contradiction:
Improvedata transfer performanceVSAvoidtime for system calls and context switches
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The shared memory channel serves as an intermediary that allows direct data transfer between the client driver and filesystem server without requiring continuous system call overhead. This intermediary mechanism maintains process isolation through proper memory space management while dramatically improving data transfer performance by eliminating repeated context switches.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Loss of time

If shared memory channel is established without system calls, then latency is reduced, but memory management complexity increases

Engineering Contradiction:
Improvecommunication latencyVSAvoidmemory management complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The hypervisor kernel acts as an intermediary memory manager that handles the complexity of shared memory allocation and mapping between different address spaces. The client driver simply allocates memory in its own address space, and the hypervisor manages the correspondence with the filesystem server's memory region, abstracting away the complex memory management details while enabling low-latency communication.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11513832B2Low-latency shared memory channel across address spaces in a computing system
Publication Date: 2022.11.29 VMWARE INC
  • US11513832B2 patent drawing
  • US11513832B2 patent drawing
  • US11513832B2 patent drawing

AI summary

Examples provide a method of communication between a client driver and a filesystem server. The client driver executes in a virtual machine (VM) and the filesystem server executes in a hypervisor. The method includes: allocating, by the client driver, shared memory in an address space of the VM for the communication; sending identification information for the shared memory from the client driver to the filesystem server through an inter-process communication channel between the client driver and the filesystem server; identifying, by the filesystem server in cooperation with a kernel of the hypervisor, the shared memory within an address space of the hypervisor, based on the identification information, to create a shared memory channel; sending commands from the client driver to the filesystem server through the shared memory channel; and receiving completion messages for the commands from the filesystem server to the client driver through the shared memory channel.