IP Library › Granted Patent US 8,667,504
Granted Patent B2
US 8,667,504 · App. 12/143,592 · Granted Mar 4, 2014

System and method for achieving high performance data flow among user space processes in storage system

Inventors: Randy Thelen (Mountain View, CA); Garth Goodson (Fremont, CA); Kiran Srinivasan (Cupertino, CA); Sai Susarla (Bangalore, IN)
Assignee: NetApp, Inc.
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 8,667,504
App. No.
12/143,592
Granted
Mar 4, 2014
Kind
B2
Abstract

Fault isolation capabilities made available by user space can be provided for a embedded network storage system without sacrificing efficiency. By giving user space processes direct access to specific devices (e.g., network interface cards and storage adapters), processes in a user space can initiate Input/Output requests without issuing system calls (and entering kernel mode). The multiple user spaces processes can initiate requests serviced by a user space device driver by sharing a read-only address space that maps the entire physical memory one-to-one. In addition, a user space process can initiate communication with another user space process by use of transmit and receive queues similar to transmit and receiver queues used by hardware devices. And, a mechanism of ensuring that virtual addresses that work in one address space reference the same physical page in another address space is used.

Claims (42)

1. A computer system comprising:

a host operating system kernel running at a first logical level above a hardware level of the computer system, wherein no intervening level exists between the first logical level and the hardware level of the computer system;

a physical memory;

a physical hardware device operating at the hardware level of the computer system;

a read-only address space mapped to the entire physical memory, the read-only address space shared by multiple processes; and

multiple processors to collectively execute the processes,

wherein each of the processes operates logically above the host operating system kernel and is configured to communicate with other processes and the hardware device using the read-only address space without issuing system calls to the host operating system kernel.

2. A computer system as recited in claim 1 , wherein the processes are in a user space.

3. A computer system as recited in claim 1 , wherein the computer system is an embedded system environment.

4. A computer system as recited in claim 1 , wherein the processes include an N-module and a D-module, wherein the N-module communicates with clients, the D-module communicates with storage devices, and the N-module and D-module communicate with each other by sharing the read-only address space.

5. A computer system as recited in claim 1 , wherein the processes communicate asynchronously with each other.

6. A computer system as recited in claim 1 , wherein the hardware device is a network interface card.

7. A computer system as recited in claim 1 , wherein the hardware device is a storage adapter.

8. A computer system as recited in claim 1 , wherein each process has a separate threading model from the host operating system kernel.

9. A computer system as recited in claim 1 , wherein each process has a separate scheduler from the host operating system kernel.

10. A computer system as recited in claim 1 , wherein the host operating system kernel does not interrupt the process.

11. A computer system as recited in claim 1 , wherein the kernel uses unobtrusive notifications instead of interrupt or signal notification for notifications of started and terminated processes.

12. A computer system as recited in claim 1 , wherein the multiple processes comprise Excessive Symmetric Multi-Processing (XSMP) processes.

13. A network storage server system comprising:

a host operating system kernel running at a first logical level above a hardware level of the network storage server system, wherein no intervening level exists between the first logical level and the hardware level of the computer system;

multiple physical hardware devices running at the hardware level of the computer system, wherein the physical hardware devices include an I/O device;

a physical memory;

a read-only address space, wherein the read-only address space is shared by multiple processes and maps one to one to the entire physical memory of a network storage server, and wherein each process of the processes has an individual process address space;

multiple processors to collectively execute the processes of the network storage server, wherein each of the processes operates logically above the host operating system kernel, and communicates asynchronously with another one or more of the processes using the read-only address space without issuing system calls to the host operating system kernel, each process having a separate threading model; and

wherein the computer system is in an embedded system environment and the processes include an N-module, a D-module, and a hardware driver, wherein the N-module communicates with clients, the D-module communicates with storage devices, and the N-module and D-module communicates by sharing the read-only address space and have direct access to the hardware devices.

14. A network storage server system as recited in claim 13 , wherein the read-only address space maps one to one to the entire physical memory of a network storage server.

15. A method comprising:

creating a read-only address space by operation of a host operating system kernel running at a first logical level above a hardware level of a network storage system, wherein no intervening level exists between the first logical level and the hardware level of the network storage system;

mapping a physical memory of the entire network storage system to the read-only address space;

sharing the read-only address space among multiple processes, wherein multiple processors collectively execute the processes, the processes operate logically above the host operating system kernel, and the processes communicate with each other using the read-only address space without issuing system calls to the host operating system kernel; and

allowing the process to directly access a physical hardware device running at the hardware level of the computer system without issuing system calls to the host operating system kernel.

16. A method as recited in claim 15 , further comprising using a separate scheduler from the kernel for each process.

17. A method as recited in claim 15 , further comprising using a separate threading model from the kernel for each process.

18. A method as recited in claim 15 , further comprising using unobtrusive notifications for notifications of started and terminated processes instead of interrupt or signal notification.

19. A method as recited in claim 15 , wherein the processes operate in an embedded system environment.

20. A method comprising:

creating a read-only address space by operation of a host operating system kernel running at a first logical level above a hardware level of a network storage system, wherein no intervening level exists between the first logical level and the hardware level of the network storage system;

mapping a physical memory of the network storage system to the entire read-only address space;

sharing the read-only address space among multiple processes, wherein multiple processors collectively execute the processes, the processes operate logically above the host operating system kernel in an embedded system environment, the processes communicate with each other using the read-only address space without issuing system calls to the host operating system kernel, and each of the processes use a separate threading model from the host operating system kernel;

allowing the processes to directly access a physical hardware device running at the hardware level of the computer system without issuing system calls to the host operating system kernel; and

using unobtrusive notifications for notifications of started and terminated processes instead of interrupt or signal notification.

21. A method as recited in claim 20 , wherein the processes communicate with each other asynchronously.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2008
From: THELEN, RANDY; GOODSON, GARTH; SRINIVASAN, KIRAN; SUSARLA, SAI
To: NETAPP, INC.
Reel/Frame 021351/0334 →
Continuity (1)
Related Publication 20090320042A1 · Dec 24, 2009