A Method and System for Coherently Caching I/O Devices Across a Network
First Claim
1. A computer network that comprises:
- one or more I/O devices on which data may be stored in files; and
multiple computers coupled together, with each computer including a system memory having a plurality of caches with different bucket sizes,wherein each of the multiple computers is configured to cache data from the one or more I/O devices in the plurality of caches, andwherein each cache in the plurality of caches is capable of caching data from multiple files stored on the one or more I/O devices.
1 Assignment
0 Petitions
Accused Products
Abstract
The cache keeps regularly accessed disk I/O data within RAM that forms part of a computer systems main memory. The cache operates across a network of computers systems, maintaining cache coherency for the disk I/O devices that are shared by the multiple computer systems within that network. Read access for disk I/O data that is contained within the RAM is returned much faster than would occur if the disk I/O device was accessed directly. The data is held in one of three areas of the RAM for the cache, dependent on the size of the I/O access. The total RAM containing the three areas for the cache does not occupy a fixed amount of a computers main memory. The RAM for the cache grows to contain more disk I/O data on demand and shrinks when more of the main memory is required by the computer system for other uses. The user of the cache is allowed to specify which size of I/O access is allocated to the three areas for the RAM, along with a limit for the total amount of main memory that will be used by the cache at any one time.
25 Citations
110 Claims
-
1. A computer network that comprises:
-
one or more I/O devices on which data may be stored in files; and multiple computers coupled together, with each computer including a system memory having a plurality of caches with different bucket sizes, wherein each of the multiple computers is configured to cache data from the one or more I/O devices in the plurality of caches, and wherein each cache in the plurality of caches is capable of caching data from multiple files stored on the one or more I/O devices. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computer network that comprises:
- one or more I/O devices capable of storing data in a file; and
multiple computers coupled together, with each computer including a system memory having multiple caches with different bucket sizes, and wherein each of the multiple caches is capable of caching data from said file. - View Dependent Claims (10, 11, 12, 13)
- one or more I/O devices capable of storing data in a file; and
-
14. A cache driver to be executed by each of multiple computers coupled together in a network with at least one I/O device on which data may be stored in files, each of said multiple computers having an associated system memory, wherein the cache driver comprises:
- code to create in the associated system memory at least two caches having different bucket sizes, wherein each cache is capable of caching data from multiple files stored on said I/O device; and
a routine that configures the computer to use said caches to cache data from said I/O device. - View Dependent Claims (15, 16, 17, 18, 19, 20)
- code to create in the associated system memory at least two caches having different bucket sizes, wherein each cache is capable of caching data from multiple files stored on said I/O device; and
-
21. A cache driver to be executed by each of multiple computers coupled together in a network with at least one I/O device on which data may be stored in files, each of said multiple computers having an associated system memory, wherein the cache driver comprises:
- code to create in the associated system memory at least two caches having different bucket sizes, wherein each cache is capable of caching data from a given file stored on said I/O device; and
a routine that configures the computer to use said caches to cache data from said I/O device. - View Dependent Claims (22, 23, 24)
- code to create in the associated system memory at least two caches having different bucket sizes, wherein each cache is capable of caching data from a given file stored on said I/O device; and
-
25. A method of caching data from an I/O device that is coupled to a computer that includes a system memory, wherein the I/O device stores said data in multiple files, wherein the method comprises:
- creating in system memory at least two caches with different bucket sizes; and
caching in each of the two caches data from multiple files stored on the I/O device. - View Dependent Claims (26, 27)
- creating in system memory at least two caches with different bucket sizes; and
-
28. A method of caching data from a file on at least one I/O device that is coupled to a computer having a system memory, wherein the method comprises:
- creating in system memory at least two caches with different bucket sizes; and
caching in each of the two caches data from said file. - View Dependent Claims (29, 30)
- creating in system memory at least two caches with different bucket sizes; and
-
31. A computer network that comprises:
- one or more I/O devices configured to store data; and
multiple computers coupled together, wherein each of the multiple computers is configured to cache said data, and wherein each of the multiple computers is configured to monitor which computers in the network are configured to cache said data. - View Dependent Claims (32, 33, 34, 35, 36)
- one or more I/O devices configured to store data; and
-
37. A cache driver to be executed by each of multiple computers coupled together in a network with at least one I/O device configured to store data, the cache driver comprising:
- a routine that configures each of said multiple computers to cache said data from said at least one I/O device; and
a program that configures each of said multiple computers to monitor which computers in the network are configured to cache said data. - View Dependent Claims (38, 39, 40, 41, 42)
- a routine that configures each of said multiple computers to cache said data from said at least one I/O device; and
-
43. A method of caching, in a network having multiple computers and at least one I/O device, wherein each of the multiple computers has an associated system memory, wherein the at least one I/O device stores data, wherein the method comprises:
- determining a list of computers in the network that are configured to cache said data;
updating the list when a computer joins the network;
determining a remote connection address for each computer in the list;
caching said data in the system memory of one or more of said multiple computers; and
maintaining cache coherency by communicating targeted messages among said multiple computers. - View Dependent Claims (44, 45, 46, 47, 48)
- determining a list of computers in the network that are configured to cache said data;
-
49. A computer network that comprises:
- one or more I/O devices configured to store data; and
multiple computers coupled together, wherein each of the multiple computers is configured to cache data from the one or more I/O devices, wherein each of the multiple computers is configured to determine for each of the one or more I/O devices a list of computers in the network that are configured to cache data from that device. - View Dependent Claims (50, 51, 52)
- one or more I/O devices configured to store data; and
-
53. A cache driver to be executed by each of multiple computers, wherein the multiple computers are coupled together in a network that includes multiple I/O devices, wherein the cache driver configures each of the multiple computers to:
- determine for each of the multiple I/O devices a list of computers in the network that are configured to cache data from that I/O device; and
update the lists when a computer joins the network. - View Dependent Claims (57, 58)
- determine for each of the multiple I/O devices a list of computers in the network that are configured to cache data from that I/O device; and
-
54. The cache driver of clam 53, wherein the cache driver further configures each of the multiple computers to:
- determine a remote connection address for each remote computer in the lists.
- View Dependent Claims (55, 56)
-
59. A method of caching in multiple computers data from one or more I/O devices coupled to a network, wherein the method comprises:
- determining for each of the one or more I/O devices a list of computers in the network that are configured to cache data from that I/O device; and
updating the lists when a computer joins the network. - View Dependent Claims (60, 61, 62, 63)
- determining for each of the one or more I/O devices a list of computers in the network that are configured to cache data from that I/O device; and
-
64. A computer network that comprises:
- one or more I/O devices configured to store data; and
multiple servers clustered together, wherein each of the multiple servers is configured to cache data retrieved from the one or more I/O devices in a local memory, and wherein each of the multiple servers is capable of reducing the amount of local memory dedicated to caching if available memory on that server falls below a predetermined threshold. - View Dependent Claims (65, 66, 67, 68, 69, 70, 71)
- one or more I/O devices configured to store data; and
-
72. A cache driver that can be installed in each of multiple servers clustered together in a network having at least one I/O device configured to store data, the cache driver comprising:
- a routine that configures each of said multiple servers to cache data from said at least one I/O device; and
a procedure that configures each of said multiple servers to reduce cache size if free memory on that server is less than a specified value. - View Dependent Claims (73, 74, 75, 76, 77, 78, 79, 86)
- a routine that configures each of said multiple servers to cache data from said at least one I/O device; and
-
80. A method of caching in a network having multiple computers and at least one I/O device, wherein each of the multiple computers has an associated system memory, wherein the at least one I/O device stores data, wherein the method comprises:
- caching said data in the system memory of one or more of said multiple computers; and
reducing cache size on one of said computers if free memory on that computer is less than a predetermined value. - View Dependent Claims (81, 82, 83, 84, 85)
- caching said data in the system memory of one or more of said multiple computers; and
-
87. A computer network that comprises:
- one or more I/O devices configured to store data; and
multiple computers coupled together, wherein the multiple computers are each configured to cache a respective set of I/O devices selected from said one or more I/O devices, and wherein the sets are each independently changeable while caching operations are ongoing. - View Dependent Claims (88)
- one or more I/O devices configured to store data; and
-
89. A cache driver capable of being installed on each of multiple servers clustered together in a network with a set of I/O devices configured to store data, the cache driver comprising:
- a routine that configures the executing server to cache data from a subset of said I/O devices; and
a procedure that configures the executing server to change the subset of said I/O devices while caching operations are ongoing. - View Dependent Claims (90)
- a routine that configures the executing server to cache data from a subset of said I/O devices; and
-
91. A method of caching in a network having multiple servers and multiple I/O devices, wherein each of the multiple servers has an associated system memory, and wherein the multiple I/O devices are each configured to store data, the method comprising:
- caching on each of the multiple servers data from a respective set of said I/O devices; and
dynamically changing the set of I/O devices being cached by one of the multiple servers. - View Dependent Claims (92, 93, 94)
- caching on each of the multiple servers data from a respective set of said I/O devices; and
-
95. A method of caching in multiple computers data from one or more information storage devices coupled to a network, wherein the method comprises:
- constructing for each computer a set of all information storage devices accessible by that computer;
determining for each information storage device in each set a list of computers in the network that are configured to cache data from that information storage device; and
reconstructing the lists after detecting a change in network configuration. - View Dependent Claims (96, 97, 98, 99, 100, 101)
- constructing for each computer a set of all information storage devices accessible by that computer;
-
102. A computer network that comprises:
- one or more I/O devices; and
multiple servers clustered together, wherein each of the multiple servers is configured to determine a set of all I/O devices accessible by that server, wherein each of the multiple servers is further configured to construct for each storage device in the set a list of servers that are configured to cache data from that I/O device, and wherein each of the multiple servers is further configured to reconstruct the lists after detecting a change in network configuration. - View Dependent Claims (103, 104)
- one or more I/O devices; and
-
105. A cache driver that can be installed on, and executed by, each of multiple servers clustered together in a network that includes at least one information storage device, wherein the cache driver configures each of the multiple servers to:
- construct for each server a set of all I/O devices accessible by that server;
determine for each I/O device in the set a list of servers that are configured to cache data from that I/O device; and
reconstruct the lists after detecting a change in network configuration. - View Dependent Claims (106, 107, 108, 109, 110)
- construct for each server a set of all I/O devices accessible by that server;
Specification