Zero-copy network and file offload for web and application servers
First Claim
Patent Images
1. A computer-implemented method to transfer data via a buffer cache and in response to a command issued from a first application server, the command issued responsive to a request from a first client, the method comprising:
- creating an offload stack running on a multiprocessing host having the buffer cache and on which a plurality of operating systems is running, wherein the plurality of operating systems includes a first operating system executing the first application server, wherein the offload stack is configured to provide a set of resources to one or more applications executing on the plurality of operating systems, the set of resources including network, file, and block I/O resources;
providing an interface to share the set of resources of the offload stack among the plurality of operating systems running on the multiprocessing host; and
providing zero-copy data transfer support for the first application server by processing the command issued from the first application server to the offload stack, in order to transfer data targeted by the command, to the first client, via the buffer cache of the multiprocessing host and not via any address space of the first operating system on which the first application server is running, wherein the command specifies a source of the data to transfer, a destination to transfer the data to, and an offset to start reading the data from.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and apparatus for transferring data from an application server are provided. By offloading network and file system stacks to a common stack accessible by multiple operating systems in a virtual computing system, embodiments of the present invention may achieve data transfer support for web and application servers without the data needing to be copied to or reside in the address space of the server operating systems.
15 Citations
24 Claims
-
1. A computer-implemented method to transfer data via a buffer cache and in response to a command issued from a first application server, the command issued responsive to a request from a first client, the method comprising:
-
creating an offload stack running on a multiprocessing host having the buffer cache and on which a plurality of operating systems is running, wherein the plurality of operating systems includes a first operating system executing the first application server, wherein the offload stack is configured to provide a set of resources to one or more applications executing on the plurality of operating systems, the set of resources including network, file, and block I/O resources; providing an interface to share the set of resources of the offload stack among the plurality of operating systems running on the multiprocessing host; and providing zero-copy data transfer support for the first application server by processing the command issued from the first application server to the offload stack, in order to transfer data targeted by the command, to the first client, via the buffer cache of the multiprocessing host and not via any address space of the first operating system on which the first application server is running, wherein the command specifies a source of the data to transfer, a destination to transfer the data to, and an offset to start reading the data from. - View Dependent Claims (2, 3, 4, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
5. A host system to transfer data via a buffer cache and in response to a command issued from a first application server, the command issued responsive to a request from a first client, the host system comprising:
-
one or more processing cores; the buffer cache; multiple operating systems running on at least one of the one or more processing cores; a first application server running on a first operating system of the multiple operating systems; an offload stack running on at least one of the one or more processing cores, the offload stack providing zero-copy data transfer support for the first application server by processing the command issued from the first application server, in order to transfer data targeted by the command, to the first client, via the buffer cache of the host system and not via any address space of the first operating system on which the first application server is running, wherein the offload stack is configured to provide a set of resources to one or more applications executing on the plurality of operating systems, the set of resources including network, file, and block I/O resources, wherein the command specifies a source of the data to transfer, a destination to transfer the data to, and an offset to start reading the data from; and an interface to share the set of resources of the offload stack between the multiple operating systems. - View Dependent Claims (6, 7, 8)
-
-
9. A system to transfer data via a buffer cache and in response to a command issued from a first application server, the command issued responsive to a request from a first client, the system comprising:
-
one or more computer processors; a buffer cache; a memory containing a program which, when executed by the one or more computer processors, performs an operation comprising; creating an offload stack running on the system, on which system a plurality of operating systems is running, the plurality of operating systems including a first operating system executing the first application server, wherein the offload stack is configured to provide a set of resources to one or more applications executing on the plurality of operating systems, the set of resources including network, file, and block I/O resources; providing an interface to share the set of resources of the offload stack among the plurality of operating systems running on the system; and providing zero-copy data transfer support for the first application server by processing the command issued from the first application server to the offload stack, in order to transfer data targeted by the command, to the first client, via the buffer cache of the system and not via any address space of the first operating system on which the first application server is running, wherein the command specifies a source of the data to transfer, a destination to transfer the data to, and an offset to start reading the data from. - View Dependent Claims (10, 11, 12)
-
-
13. A non-transitory computer-readable medium containing program code which, when executed, performs an operation to transfer data via a buffer cache and in response to a command issued from a first application server, the command issued responsive to a request from a first client, the operation comprising:
-
creating an offload stack running on a multiprocessing host having the buffer cache and on which a plurality of operating systems is running, wherein the plurality of operating systems includes a first operating system executing the first application server, wherein the offload stack is configured to provide a set of resources to one or more applications executing on the plurality of operating systems, the set of resources including network, file, and block I/O resources; providing an interface to share the set of resources of the offload stack among the plurality of operating systems running on the multiprocessing host; and providing zero-copy data transfer support for the first application server by processing the command issued from the first application server to the offload stack, in order to transfer data targeted by the command, to the first client, via the buffer cache of the multiprocessing host and not via any address space of the first operating system on which the first application server is running, wherein the command specifies a source of the data to transfer, a destination to transfer the data to, and an offset to start reading the data from. - View Dependent Claims (14)
-
Specification