IP Library › Granted Patent US 11,175,936
Granted Patent B2
US 11,175,936 · App. 16/744,773 · Granted Nov 16, 2021

Dynamic I/O virtualization system having guest memory management for mapping virtual addresses in a hybrid address space

Inventor: Sreekumar Nair (San Jose, CA)
Assignee: Dynavisor, Inc.
G06F9/45533G06F3/061G06F3/0664G06F3/0665G06F3/0685G06F3/0689G06F9/45558G06F12/0868G06F12/1081G06F13/28G06F3/0673G06F9/4411G06F12/084G06F12/0864G06F2009/45579G06F2212/152G06F2212/2532G06F2212/314G06F2212/463
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,175,936
App. No.
16/744,773
Granted
Nov 16, 2021
Kind
B2
Abstract

A system and method for providing dynamic I/O virtualization is herein disclosed. According to one embodiment, a device capable of performing hypervisor-agnostic and device-agnostic I/O virtualization includes a host computer interface, memory, I/O devices (GPU, disk, NIC), and efficient communication mechanisms for virtual machines to communicate their intention to perform I/O operations on the device. According to one embodiment, the communication mechanism may use shared memory. According to some embodiments, the device may be implemented purely in hardware, in software, or using a combination of hardware and software. According to some embodiments, the device may share its memory with guest processes to perform optimizations including but not limited to a shared page cache and a shared heap.

Claims (31)

1. A system, comprising:

a host having an input/output driver;

a file system connected to the host; and

a block device connected to the file system;

wherein the input/output driver exports a host directory of the file system to a directory of a first guest operating system having a first input/output virtual file system that mounts the host directory, and

wherein when the first guest requests an I/O operation from the block device, virtual addresses of guest user memory are passed to the input/output driver of the host, and the host accesses guest user memory though the virtual addresses of a guest user application mapped in a hybrid address space.

2. The system of claim 1 , wherein the input/output driver exports a host directory of the file system to a directory of a second guest operating system having a second input/output virtual file system that mounts the host directory.

3. The system of claim 1 , wherein the first guest and the host communicate using a shared memory, the shared memory including a plurality of streams.

4. The system of claim 1 , further comprising an access control mechanism.

5. The system of claim 3 , wherein the first input/output virtual file system requests remote system calls to be performed via the plurality of streams.

6. The system of claim 1 , further comprising a plurality of first guest contexts of the first guest.

7. The system of claim 6 , further comprising a plurality of host contexts of the host.

8. The system of claim 2 , further comprising a shared file cache connected to the first input/output virtual file system and the second input/output virtual file system.

9. The system of claim 1 , further comprising a second guest having a second file system, a page cache, and a virtual block device driver, the second file system being one of nffs, ext4, and ufs.

10. A system, comprising:

a host having an input/output driver;

a file system of the host; and

a block device connected to the file system having a shared storage cache,

wherein the shared storage cache is connected to a first input/output virtual file system of a first guest,

wherein the first input/output virtual file system has a cache interface,

wherein the cache interface communicates with an application running on the first guest, a plurality of stream buffers of the shared storage cache; and a cache manager of the shared storage cache, and

wherein the shared storage cache is extended across multiple physical computers on the system where cache blocks are globally indexed across the multiple physical computers.

11. The system of claim 10 , wherein the cache interface redirects all reads and writes to the shared storage cache.

12. The system of claim 11 , wherein open, close, and operations on directories are performed through a plurality of streams corresponding to the plurality of stream buffers.

13. The system of claim 10 , wherein the shard storage cache holds data blocks.

14. The system of claim 10 , wherein the shared storage cache is transparently shared across a plurality of domains that do not know about the existence of each other.

15. The system of claim 14 , wherein each process has a file descriptor for each copy of a corresponding file opened, the file descriptor is mapped to a global file descriptor, the file descriptor maintains access controls.

16. The system of claim 10 , wherein when a file is opened with a synchronous read, the shared storage cache is updated and the system waits for data to be read from a destination storage device; and wherein when a file is opened with a direct read, the shared storage cache is invalidated, and reads directly operate on the destination storage device without caching the file on the shared storage cache.

17. The system of claim 10 , wherein the shared storage cache provides a Quality-of-Service (QoS) option to indicate that cache blocks for a file to be persisted in the shared storage cache.

18. The system of claim 10 , wherein the shared storage cache ensures that all write operations are sent to a destination storage device when initiated by a guest process, wherein the guest process does not wait for the write operation to complete, wherein data is written to a write buffer of the shared storage cache, and wherein the guest process resumes execution.

19. The system of claim 10 , wherein the shared storage cache includes a read cache and a write buffer integrated into a single cache unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 10, 2020
From: NAIR, SREEKUMAR R.
To: DYNAVISOR, INC.
Reel/Frame 053445/0859 →
Continuity (5)
Continuation 16128913 · Sep 12, 2018
Continuation 15880092 · Jan 25, 2018
Continuation 14555473 · Nov 26, 2014
Provisional Application 61909324 · Nov 26, 2013
Related Publication 20200150987A1 · May 14, 2020
Cited By (1)
US 12,406,323