Virtual Machine Shared Memory Buffer for Inter-VM Communication

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Developers face challenges in creating, deploying, and executing distributed programs in distributed computing environments in a robust, efficient, and scalable manner due to increased complexity and the need for optimized configuration and execution.

Innovation Solution

The implementation of optimization components that configure, deploy, and execute program components in a distributed computing environment with minimal developer input, determining optimal execution mechanisms, locations, and inter-program communication strategies, including containerization and shared memory optimization, to enhance scalability and performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If program components are executed in separate virtual machines in a distributed computing environment, then system scalability and resource utilization are improved, but communication latency and complexity increase

Engineering Contradiction:
ImprovescalabilityVSAvoidcommunication complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces a shared memory buffer as an intermediary mechanism between virtual machines. This buffer enables direct memory access and communication between program components across virtual machine boundaries, eliminating the need for complex network protocols and serialization/deserialization processes. The shared memory acts as a mediator that simplifies inter-VM communication while maintaining the scalability benefits of distributed execution.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent combines multiple communication optimization techniques into a unified architecture: containerization of program components, shared memory buffer implementation, and direct memory access mechanisms. This merging of approaches creates a comprehensive solution that addresses both scalability and communication complexity simultaneously, allowing program components to execute in separate virtual machines while communicating efficiently through the integrated optimization framework.

Inventive Principle:
Principle #5Merging (Combining)

2Productivity

If optimization components automate the configuration and deployment of program components, then developer burden is reduced and execution efficiency is improved, but system complexity increases

Engineering Contradiction:
Improveexecution efficiencyVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The optimization component implements self-service capabilities by automatically analyzing program component dependencies, determining optimal execution locations across virtual machines, and configuring communication channels without requiring explicit developer specification. The system autonomously makes deployment decisions based on runtime information and performance metrics, reducing developer burden while managing complexity through automated decision-making algorithms.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The optimization component performs preliminary analysis and configuration actions before program execution begins. It pre-determines the optimal deployment strategy, containerization requirements, and shared memory buffer allocations based on static program analysis. This preliminary action reduces runtime complexity and improves execution efficiency by having optimization decisions already in place before the distributed program starts running.

Inventive Principle:
Principle #10Preliminary action

3Speed

If shared memory buffers are used for inter-VM communication, then communication latency is reduced and performance is improved, but memory management complexity increases

Engineering Contradiction:
Improvecommunication speedVSAvoidmemory management complexity
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The shared memory buffer serves as an intermediary layer that abstracts the complexity of inter-VM memory management. Instead of requiring direct memory mapping between virtual machines, the buffer provides a standardized interface that handles memory allocation, address translation, and synchronization. This mediator approach maintains high communication speed while encapsulating memory management complexity within the buffer management mechanism.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The optimization component dynamically adjusts memory buffer parameters such as buffer size, allocation strategy, and access patterns based on runtime conditions and communication requirements. By changing these parameters adaptively, the system optimizes communication speed for different workloads while managing memory resources efficiently. The parameter changes allow the system to balance performance and memory management complexity based on actual program execution needs.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS9588788B1Optimized communication between program components executing in virtual machines
Publication Date: 2017.03.07 AMAZON TECH INC
  • US9588788B1 patent drawing
  • US9588788B1 patent drawing
  • US9588788B1 patent drawing

AI summary

Communication between program components executing in different virtual machines on the same physical computer may be optimized utilizing various mechanisms. A virtual machine manager may be configured to route network communications between virtual machines on the same physical host through a memory buffer. The virtual machine manager might also be configured to provide a shared memory and/or a shared data structure for enabling data communication between program components executing in different virtual machines on the same physical computing device. Mechanisms might also be implemented in order to prevent inconsistent read and/or write operations from being performed on the shared memory and/or the shared data structure. Mechanisms might also be implemented to minimize copying of a memory buffer, shared memory, and/or shared data structure.