Browse Prior Art Database

Method of Reducing Inter-VM Communication Costs

IP.com Disclosure Number: IPCOM000175736D
Original Publication Date: 2008-Oct-22
Included in the Prior Art Database: 2008-Oct-22
Document File: 4 page(s) / 196K

Publishing Venue

IBM

Abstract

In this invention, we optimize inter-process communication across virtual machines in the same hypervisor by changing the message or data routing from virtual network to shared memory. There are two components in this invention, a shared memory pool and IPC optimizer. The shared memory pool is allocated by hypervisor and all virtual machines hosted can access it via the IPC optimizer. The IPC optimizer is set in the modified guest operating system of each virtual machine. It can determine whether the inbound data is from or the outbound data is to a virtual machine hosted in the same hypervisor. Besides, it has the capability to fetch and place data from the shared memory. With the help of shared memory in hypervisor and IPC optimizer in each virtual machine, data or message can be exchanged directly in the memory and bypass the virtual network. It improves the IPC performance between two virtual machines hosted in the same hypervisor. Besides, it is transparent for application-level processes that use socket API to communicate with each other.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 46% of the total text.

Page 1 of 4

Method of Reducing Inter-VM Communication Costs

1. Background: What is the problem solved by your invention? Describe known solutions to this problem (if any). What are the drawbacks of such known solutions, or why is an additional solution required? Cite any relevant technical documents or references.

Generally speaking, Inter-Process Communication

(

                  data, handles data transfer between computer systems with different endian conventions, invoke user-defined handlers when a message is received, and invoke user-defined callbacks at set intervals.

Since virtualization technology offers an abstract layer that decouples the physical hardware from the operating system, multiple virtual machines are able to run in a single hypervisor simultaneously. There are several ways to implement virtualization. Two leading approaches are full virtualization and para-virtualization. Full virtualization is designed to provide total abstraction of the underlying physical system and creates a complete virtual system in which the guest operating systems can execute. No modification is required in the guest OS or application. However, full virtualization may incur a performance penalty. The hypervisor must provide the virtual machine with an image of an entire system, including virtual BIOS, virtual memory space, and virtual devices. The hypervisor also must create and maintain data structures for the virtual components, such as a shadow memory page table. These data structures must be updated for every corresponding access by the virtual machines.

In contrast, para-virtualization presents each virtual machine with an abstraction of the hardware that is similar but not identical to the underlying physical hardware. Para-virtualization techniques require modifications to the guest operating systems that are running on the virtual machines. As a result, the guest operating systems are aware that they are executing on a virtual machine -- allowing for near-native performance.

The classical implementation architecture of para-virtualization is XEN

)

                                         provides high-level support for connecting processes using TCP/IP sockets and sending data between processes. It enables message passing and data transmission between processes either within a single computer system or across two different computer systems. It can transparently send and receive complex data structures, including lists and variable length arrays, using various message-passing paradigms. A wide variety of languages and operating systems have already been supported .

It takes care of opening sockets, registering messages, and sending and receiving messages, including both anonymous publish/subscribe and client/server type messages. The IPC library contains functions to marshall

(

serialize

)

IPC

)

and

unmarshall

de-serialize

(

'

s front-end /

1

Page 2 of 4

back

-

end model

.

In th...