A computerized method, system and computer program product for managing an object store is disclosed. An exemplary method includes the the steps of: collecting performance statistics about storage repositories from which an object(s) can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (RFP) for the object; determining and associating a replacement penalty (RPP) with the object wherein the RPP is based on the one or more performance statistics and the RFP; and storing the object and an associated RPP for the object. The storage repositories could be locally attached devices, network sites, and/or remotely attached devices. If there is insufficient space in the object store for a new object, an object(s) can be replaced with the new object based on the associated RPP of the cached objects. Alternatively, the resolution of one or more objects in the object store can be reduced until sufficient space is available. The RPP determination is preferably based on the RFP for the object and performance and/or usage statistics. Examples of the performance statistics include: availability; size; latency; and bandwidth. An example of the usage statistics includes statistics on time delays (D) associated with abort requests made via the Internet, for example, using a browser. The RPP could include an annoyance function for a specific requester or set of requesters by instrumenting the browser STOP function and analyzing time interval statistics associated with its usage.
|
14. A computerized method for managing an object store based on replacement penalty comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (P) for the object comprising the steps of: determining and associating a replacement penalty (R) with the object, wherein the replacement penalty is based on the reference probability (P) for the object and information selected from the group consisting of: an availability of the object (A); a size of the object (S), a latency associated with retrieving the object from a storage repository (L); or a bandwidth of the path to the storage repository (B); wherein said step of determining a replacement penalty (R) is based on the availability of the object (A): where W is an average waiting time before an unavailable storage repository becomes available; and storing the object and an associated replacement penalty for the object.
13. A computerized method for managing an object store based on replacement penalty comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (P) for the object comprising the steps of: determining and associating a replacement penalty (R) with the object, wherein the replacement penalty is based on the reference probability (P) for the object and information selected from the group consisting of: an availability of the object (A); a size of the object (S), a latency associated with retrieving the object from a storage repository (L); or a bandwidth of the path to the storage repository (B); wherein said step of determining a replacement penalty (R) is represented as a cost/benefit ratio where P×(L+S/B) represents an expected cost, in seconds of response time, for replacing the object; and S represents that the benefit of selecting the object for replacement is proportional to its size; and storing the object and an associated replacement penalty for the object.
29. A computer program product readable by machine, tangibly embodying a program of instructions executable by the machine to perform method steps for managing an object store based on replacement penalty said method comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (P) for the object comprising the steps of: determining and associating a replacement penalty (R) with the object, wherein the replacement penalty is based on the reference probability (P) for the object and information selected from the group consisting of: an availability of the object (A); a size of the object (S), a latency associated with retrieving the object from a storage repository (L); or a bandwidth of the path to the storage repository (B); wherein said step of determining a replacement penalty (R) is based on the availability of the object (A): where W is an average waiting time before an unavailable storage repository becomes available; and storing the object and an associated replacement penalty for the object.
28. A computer program product readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for managing an object store based on replacement penalty comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (P) for the object comprising the steps of: determining and associating a replacement penalty (R) with the object, wherein the replacement penalty is based on the reference probability (P) for the object and information selected from the group consisting of: an availability of the object (A); a size of the object (S), a latency associated with retrieving the object from a storage repository (L); or a bandwidth of the path to the storage repository (B); wherein said step of determining a replacement penalty (R) is represented as a cost/benefit ratio where P×(L+S/B) represents an expected cost, in seconds of response time, for replacing the object; and S represents that the benefit of selecting the object for replacement is proportional to its size; and storing the object and an associated replacement penalty for the object.
1. A computerized method for managing an object store based on replacement penalty comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (P) for the object comprising the steps of: associating and maintaining a least recently used (lru) list of records corresponding to objects in the object store; partitioning the lru list into a number of sections; inserting a record associated with a most recently referenced object at a head of the lru list, in response to said storing step; and maintaining reference probability statistics for a set of objects in each section of the lru list including incrementing a reference count n(i) for a section i if an object currently in said section i is referenced; wherein the reference probability (P) that an object in said section i will be referenced is P (reference to object in section i)-n(i)/(O(i)×T), wherein O(i) represents the number of objects in said section i, and T represents a total number of references for all sections; determining and associating a replacement penalty (R) with the object, wherein the replacement penalty is based on the one or more performance statistics and the reference probability; and storing the object and an associated replacement penalty for the object.
16. A computer program product readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for managing an object store based on replacement penalty comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability (P) for the object comprising the steps of: determining and associating a replacement penalty (R) with the object, wherein the replacement penalty is based on one or more performance statistics and the references probability; and wherein said determining further comprises the steps of: associating and maintaining a least recently used (lru) list of records corresponding to objects in the object store; partitioning the lru list into a number of sections; inserting a record associated with a most recently referenced object at a head of the lru list, in response to said storing step; and maintaining reference probability statistics for a set of objects in each section of the lru list including incrementing a reference count n(i) for a section i if an object currently in said section i is referenced; wherein the reference probability (P) that an object in said section i will be referenced is P (reference to object in section i)-n(i)/(O(i)×T), wherein O(i) represents the number of objects in said section i, and T represents a total number of references for all sections; and
storing the object and an associated replacement penalty for the object.
15. A computerized method for managing an object store based on replacement penalty comprising the steps of:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; estimating a reference probability (P) for said one or more objects wherein said estimating a reference probability comprises the steps of: associating and maintaining a least recently used (lru) list of records corresponding to objects in the object store; partitioning the lru list into a number of sections; inserting a record associated with a most recently referenced object at a head of the lru list, in response to said storing step; and maintaining object reference probability statistics for a set of objects in each section of the lru list including incrementing a reference count n(i) for a section i if an object currently in said section i is referenced; wherein the reference probability (P) that an object in said section i will be referenced is P (reference to object in section i)-n(i)/(O(i)×T), wherein O(i) represents the number of objects in said section i, and T represents a total number of references for all sections; receiving an object reference to an object not in the object store; retrieving an object from a storage repository, in response to said receiving step; determining there is insufficient free space in the object store for the new object; and replacing one or more objects in the object store, a sum of sizes of which is equal to or greater than a size of the new object, with the new object based on the associated replacement penalty of the one or more cached objects; wherein the replacement penalty is based on the one or more performance statistics and the reference probability.
30. A computer program product readable by machine, tangibly embodying a program of instructions readable by the machine to perform method steps for managing an object store based on replacement penalty said method steps comprising:
collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; estimating a reference probability (P) for said one or more objects wherein said estimating a reference probability comprises the steps of: associating and maintaining a least recently used (lru) list of records corresponding to objects in the object store; partitioning the lru list into a number of sections; inserting a record associated with a most recently referenced object at a head of the lru list, in response to said storing step; and maintaining object reference probability statistics for a set of objects in each section of the lru list including incrementing a reference count n(i) for a section i if an object currently in said section i is referenced; wherein the reference probability (P) that an object in said section i will be referenced is P (reference to object in section i)-n(i)/(O(i)×T), wherein O(i) represents the number of objects in said section i, and T represents a total number of references for all sections; receiving an object reference to an object not in the object store; retrieving an object from a storage repository, in response to said receiving step; determining there is insufficient free space in the object store for the new object; and replacing one or more objects in the object store, a sum of sizes of which is equal to or greater than a size of the new object, with the new object based on the associated replacement penalty of the one or more cached objects; wherein the replacement penalty is based on the one or more performance statistics and the reference probability.
2. The method of
receiving a new object reference to a new object, not in the object cache; retrieving the new object from a storage repository, in response to the new object reference; determining there is insufficient free space in the object cache for the new object; and replacing one or more objects in the object cache, a sum of sizes of which is equal to or greater than a size of the new object, based on the associated replacement penalty of one or more cached objects.
3. The method of
prioritizing the objects based on the associated replacement penalty of the one or more cached objects; and replacing the one or more cached objects having a minimum associated replacement penalty priority.
4. The method of
5. The method of
6. The method of
said step of determining a replacement penalty (R) is based on the reference probability (P) for the object and information selected from the group consisting of: an availability of the object (A); a size of the object (S), a latency associated with retrieving the object from a storage repository (L); or a bandwidth of the path to the storage repository (B).
7. The method of
collecting usage statistics for one or more users who would be issuing one of stop and abort requests; and said step of determining a replacement penalty (R) is based on the usage statistics.
8. The method of
said step of collecting usage statistics includes the step of collecting statistics on time delays (D) associated with said one of stop and abort requests; and
where said U has a maximum value of 1 and represents a user annoyance function indicating that an average time after issuing an object request that a given user issues an abort request and where said value of U increases linearly with D, up to the maximum value.
9. The method of
10. The method of
receiving a new object reference to a new object, not in the object cache; retrieving the new object from a storage repository, in response to the new object reference; determining there is insufficient free space in the object cache for the new object; and reducing the resolution of one or more objects in the object cache, as a function of the replacement penalty for the objects in the object cache, until sufficient space is available to store the new object; and storing the new object and an associated replacement penalty for the new object, in response to said reducing.
11. The method of
12. The method of
17. The computer program product of
receiving a new object reference to a new object, not in the object cache; retrieving the new object from a storage repository, in response to the new object reference; determining there is insufficient free space in the object cache for the new object; and replacing one or more objects in the object cache, a sum of sizes of which is equal to or greater than a size of the new object, based on the associated replacement penalty of one or more cached objects.
18. The computer program product of
prioritizing the objects based on the associated replacement penalty of the one or more caches objects; and replacing the one or more caches objects having a minimum associated replacement penalty priority.
19. The computer program product of
20. The computer program product of
21. The computer program product of
22. The computer program product of
collecting usage statistics for one or more users who would be issuing one of stop and abort requests; and said step of determining a replacement penalty (R) is based on the usage statistics.
23. The computer program product of
said step of collecting usage statistics includes the step of collecting statistics on time delays (D) associated with said one of stop and abort requests; and R=P×((1-A)×1+A×U(L+S/B))/S; where said U has a maximum value of 1 and represents a user annoyance function indicating that an average time after issuing an object request that a given user issues an abort request and where said value of U increases linearly with D, up to the maximum value.
24. The computer program product of
25. The computer program product of
receiving a new object reference to a new object, not in the object cache; retrieving the new object from a storage repository, in response to the new object reference; determining there is insufficient free space in the object cache for the new object; and reducing the resolution of one or more objects in the object cache, as a function of the replacement penalty for the objects in the object cache, until sufficient space is available to store the new object; and storing the new object and an associated replacement penalty for the new object, in response to said reducing.
26. The computer program product of
27. The computer program product of
|
The present invention is related to co-pending patent application Ser. No. 08/958,506, by Challenger et al., filed Oct. 27, 1997, IBM Docket No. YO997321. This co-pending application and the present invention are commonly assigned to the International Business Machines Corporation, Armonk, N.Y. This co-pending application is hereby incorporated by reference in its entirety into the present application.
A paging system is a computer system in which the appearance of a large virtual memory is provided through a combination of high speed main memory and slower speed auxiliary memory. The first computer system to use paging was the Atlas machine (Sumner, T. K., One Level Storage System, IEEE Transactions on Computers, April 1962, pp. 223-235).
The original idea of a CPU managed memory hierarchy was introduced by Wilkes (Wilkes, M. V., Slave Memories and Dynamic Storage Allocation, IEEE Transactions on Electronic Computers, pp. 270-271, 1965). The key concept is that a small buffer of frequently referenced data can more quickly respond to fetch requests. Requests that are not in the buffer are fetched from main memory. A small amount of expensive high speed buffer can have a disproportionally good improvement on average access time. The first production computer with cache memory was the IBM 360 Model 85 (Liptay, J. S., Structural aspects of the System/360 Model 85 II--The Cache, IBM Systems Journal, 7, 1968, pp. 15-21 and Conti, C. J., Concepts for buffer storage, Computer Group News, 2, 1969, pp. 9-13).
Paging systems provide a memory cache of recently used pages and therefore can be considered a specific instance of a caching system. Both caching systems and paging systems require a dynamic mechanism for deciding which data to keep in the buffer. The decision hinges on which page to remove when a new candidate is to be inserted. It is frequently called the replacement algorithm.
The most often used replacement algorithm in computing systems is the Least Recently Used (LRU) algorithm (see Baylis, M. H., Fletcher, D. G., and Howarth, D. J., Paging Studies on the I.C.T. Atlas Computer, Proceedings of the IFIP Congress, pp. 831-837, 1968; Belady, L. A., A Study of Replacement Algorithms for a Virtual-memory Computer, IBM Systems Journal, 5, 1966, pp. 78-100; and U.S. Pat. No. 3,964,028, issued Jun. 15, 1976 to Belady et al.). In many cases the algorithm used is an LRU approximation that will operate with lower overhead. Belady showed that the optimal algorithm would replace the page with the longest time until next reference. However, this is not implementable. In general, replacement algorithms (LRU included) are trying to predict the next reference.
Effelsberg (Effelsberg, W., and Haerder, T., Principles of Database Buffer Management, ACM Transactions on Data Base Systems, 9, 1984, pp. 560-595) analyzed frequency based approaches. The frequency approach was later refined in U.S. Pat. No. 5,043,885, issued Aug. 27, 1991, entitled Data Cache Using Dynamic Frequency Based Replacement and Boundary Criteria, by Robinson). Frequency based algorithms place a higher value on frequently referenced blocks. This is another attempt at ranking blocks by the time of estimated next reference.
These paging and caching techniques have been incorporated into database buffer caches, file system buffer caches, and caches in disk control units. In all cases, LRU variants or frequency based replacement algorithms are used. The systems all share two important characteristics: first, all objects are the same size (or one of a small number of predetermined sizes); second, all blocks take approximately the same time to retrieve from the backing store. In these systems improvements to the replacement algorithm will result in higher hit ratios, lower miss ratios and reduced average latency.
Web page caching introduces two new deviations from previous automatic storage hierarchy systems. First, objects are of a wide range of different sizes. Second, the fetch time in the event of a miss is different (often very different due to network latency, server load and object size). The relaxation that allows variable fetch times and variable size decouples the relationship between hit ratio and average fetch time.
Average user fetch time is a reasonable objective function for the optimization problem for which the replacement algorithm is used. If objects are variable in size, then the fast buffer may be more effectively used for multiple small objects instead of one large object that is referenced more often than any one of the small objects. Long network latency to a particular object may make it a better candidate to retain in memory than other objects that are referenced more frequently but have lower miss penalties.
One proposed solution is a server centric system in which the server gives hints to clients about what to cache (see Using the Overhead Costs of Network Messages to Choose Between Cache Coherency Strategies in a Distributed File System, IBM Technical Disclosure Bulletin (TDB), pp. 266-268, (August 1991)). Here, the server decides whether to cache an item. The concern is the tradeoff, in network traffic, of invalidate messages versus more data movement when caching is not done. The TDB article does not make any proposal about which cacheable items should actually be cached. The TDB article makes use of a cost function (which are pervasive in optimizations) for making decisions.
The Hybrid algorithm uses a cost function that includes: time to connect to a server; bandwidth to the server; the number of times requested; and the size (see Wooster, R., and Abrams, M. Proxy Caching That Estimates Page Load Delays, 6th International World Wide Web Conference, Apr. 7-11, 1997, Santa Clara, Calif.). It also includes a number of tuning parameters that must be experimentally determined. The cost function should really be viewed as a heuristic because it is not dimensionally meaningfull (time is added to time divided by size). It does not use reference probabilities for evaluating a cost function.
The current state of the art is recognizing that size, retrieval time, and frequency of reference may play a role in replacement algorithms. However, at this time, it is only entering in empirically created decision functions. Thus, the need remains for an improved method and system for evaluating the relative value of cacheable objects. The need also remains for a method and system that makes use of reference probabilities in evaluating replacement costs. The present invention addresses these needs.
In accordance with the aforementioned needs, the present invention is directed to a computerized method, system and program storage device for managing an object store, such as a cache, based on a replacement penalty.
An example of a method having features of the present invention includes the the steps of: collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; retrieving an object from a storage repository, in response to an object reference; determining a reference probability for an object; determining and associating a replacement penalty with the object wherein the replacement penalty is based on the one or more performance statistics and the reference probability; and storing the object and an associated replacement penalty for the object. The storage repositories include but are not limited to locally attached devices, network sites, and/or remotely attached devices.
The replacement penalty of the present invention can be used to free storage, for example, by reducing the storage used by stored objects or replacing stored objects. An example of a method for reducing the storage used by stored objects includes the additional steps of: receiving a new object reference to a new object, not in the object store; retrieving an object from a storage repository, in response to an object reference; determining there is insufficient free space in the object store for the new object; and reducing the resolution of one or more objects in the object store until sufficient space is available to store the new object; and storing the new object and an associated replacement penalty for the new object.
An example of a method for cache replacement according to the present invention includes the steps of: collecting one or more performance statistics about one or more storage repositories from which one or more objects can be retrieved; estimating a reference probability for the one or more objects; receiving an object reference to an object not in the object store; retrieving an object from a storage repository, in response to receiving the object reference; determining there is insufficient free space in the object store for the new object; and replacing one or more objects in the object store, the sum of the sizes of which is equal to or greater than the size of the new object, with the new object based on the associated replacement penalty of the one or more cached objects; wherein the replacement penalty is based on the one or more performance statistics and the reference probability.
The present invention also has features for prioritizing the objects based on the associated replacement penalty of the one or more cached objects; and replacing the one or more cached objects having a minimum associated replacement penalty priority.
The present invention has other features for determining a reference probability, including the steps of: associating and maintaining a least recently used (LRU) list of records corresponding to objects in the object store; partitioning the LRU list into a number of sections; inserting a record associated with a most recently referenced object at a head of the LRU list, in response to said storing step; and maintaining object reference probability statistics for a set of objects in each section of the LRU.
The present invention also has features wherein maintaining the object reference probability statistics further includes the steps of: incrementing a reference count N(i) for a section i if an object currently in said section i is referenced; wherein the probability (P) that an object in said section i will be referenced is: P (reference to object in section i)=N(i)/(O(i)×T), wherein O(i) represents the number of objects in said section i, and T represents a total number of references for all sections. The replacement penalty can be recalculated each time a change is made to the set of objects in any section of the LRU, based on the reference probability specific to that section.
The replacement penalty (R) determination is preferably based on the reference probability (P) for the object and performance and/or usage statistics. An example of the performance statistics includes: an availability of the object (A); a size of the object (S); a latency associated with retrieving the object from a storage repository (L); or a bandwidth of the path to the storage repository (B).
An example of the usage statistics includes statistics on time delays (D) associated with abort requests. For example, in a system including a browser for retrieving objects via the Internet, the replacement penalty could factor in an annoyance function for a specific requester or set of requesters by instrumenting the browser STOP (also called Abort) function and analyzing time interval statistics associated with usage of the STOP function.
These and other features and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, wherein:
As is conventional, part of the memory of the computer system 10 is used as a cache 25 containing copies of some number of previously accessed objects (below, simply objects). Examples of objects include but are not limited to: disk blocks; file system blocks; entire files; HTML pages; text strings; images (of various types); audio segments (of various types); video clips (of various types); applets; and servlets. Also as is conventional, a cache manager 30 is used by one or more applications 60 running on the computer system 10 to determine if a copy of an object 28 required by an application resides in the cache 25. The cache manager determines this using a cache directory 35, which is used to record the current contents of the cache 25 at any point in time. When it is determined that a copy of an object not currently in the cache 25 should be stored in the cache, and there is insufficient space to store the new object, one or more of the objects 28 currently in the cache (25) must be replaced in order to create the space necessary to store the new object. This determination of objects to replace is made by the cache manager 30.
The present invention has features that can be embodied as software, tangibly embodied on a conventional computer program product or program storage device. As is conventional, the software comprises program instructions executable in some form, (e.g., interpreted or compiled for execution) on the computer system 10. For example, as will be described in detail below, the present invention has features which can be (embodied as software) included as part of, or that will work in conjunction with the cache manager 30.
The present invention can be used as part of a cache replacement determination to advantageously minimize a replacement penally associated with deleting an object 28 from the cache 25. Referring again to the example depicted in
In the case that a storage repository is a locally attached device of a known type, for example a given model disk storage unit, the storage repository performance characteristics may be known beforehand. For example, in the case of a given model disk storage unit, the known device characteristics can include the disk bandwidth, average seek time, and average rotational delay. In this case statistics collection may not be necessary, since the storage repository performance statistics could be set using the known device characteristics. For example, in the case of a given model disk storage unit, the availability could be set to one (that is, we assume the locally attached device is always available), the latency could be set to the sum of the average seek time and average rotational delay, and the bandwidth could be set to the known disk bandwidth for the given model of disk.
In other cases, for example when the device is remotely attached, or for the case of a network site, performance statistics can be collected in the following typical fashion. Consider the case of a network site N. When a connect request is made to N, the current system clock time T1 is read. When the connect request completes, the clock time T2 is again read; a connect request counter for N, C_count(N), is incremented, and a running total of connect times for N, C_time(N), is updated by C_time(N)=C_time(N)+T2-T1. The average latency for N is then updated by L(N)=C_time(N)/C_count(N). If however the connect request timed out, then instead: a connect failure counter for N, F_count(N), is incremented; C count(N) is incremented as before; and the availability of N is updated by A(N)=(C_count(N)-F_count(N))/C_count(N). Assuming the connect request succeeded, and that X bytes of data were subsequently transferred, then at the end of this transfer the clock time T3 is again read. Then, a running total of bytes of data transferred from N, X_total(N), is updated by X_total(N)=X_total(N)+X; next, a running total of data transfer times from N T_total(N), is updated by T_total(N)=T total(N)+T3-T2; finally, the average bandwidth for data transfers from N, B(N), is updated by B(N)=X_total(N)/T_total(N). Those skilled in the art will appreciate that within the spirit and scope of the present invention, the typical performance statistics collection as just described can be modified so as to give more weight to more recent statistics using standard techniques.
Some examples of the computation of replacement penalties by the replacement penalty evaluator 230 are as follows. In each example, P, L, B, A, and S are as in the previous discussion. First, disregarding availability, the time to retrieve an object is L+SIB, and the probability that this will be necessary is P. Therefore, the expected cost, in seconds of response time for example, for replacing the object is P×(L+S/B). However, the benefit of selecting the object for replacement is proportional to its size (that is, the larger the object, the more cache space is made free when it is selected for replacement). Therefore, an appropriate penalty measure is the cost/benefit ratio, which in this example is:
R(P,L,B,A,S)=P×(L+S/B)/S.
Next, consider use of the availability measure A, which was not used in the previous example. If a storage repository is unavailable, it could potentially be a relatively long time before it becomes available again. Let W be the average waiting time (either found from statistics or estimated from experience) before an unavailable storage repository becomes available. Then extending the previous example, the replacement penalty could be evaluated as:
The previous example is not realistic in certain cases. In particular, an end-user may "give up" after a certain delay in response time, that is, abort the current request. Statistics on time delays associated with abort requests can be collected, and used to construct a "user annoyance" function U. For example, suppose usage statistics indicate that on the average, a given user issues an abort request after a 30 second delay. Define the value 1 as "maximum annoyance", and assume the annoyance increases linearly with delay time up to the maximum. The function U(D), where D is the delay time, would then be defined as follows: U(D)=D/30 for D (in seconds) less than 30, and U(D)=1 for D greater than or equal to 30. The use of this function in computing replacement penalties has two implications: first, if a storage repository is unavailable then the maximum cost is assumed; second, if the retrieval time is any value larger than 30 seconds (in the case of this example), the maximum cost is again assumed. Using this example "user annoyance" function, the replacement penalty would be computed as follows (remembering that the maximum value of the function U is 1):
R(P,L,B,A,S)=P×((1-A)×1+A×U(L+S/B)/S.
For example, the system 10 could include a conventional browser having a STOP function which has been instrumented to compute the annoyance function for a specific requester or set of requesters using the STOP function and analyze the time interval statistics associated with usage of the STOP function.
An alternative for replacing an object is to reduce its resolution (in the case of objects that can be represented at various resolution levels), as described in commonly assigned co-pending U.S. patent application, Ser. No. 08/023,793, entitled Increasing Effective Cache Space by Means of Low Resolution Images, by La Maire et al., filed Feb. 13, 1998, IBM Docket No. YO997-308, which is hereby incorporated by reference in its entirety. In this case the above formulas would be modified as follows: let S1 be the size of the current resolution version of the object; let S2 be the size of the reduced resolution version; then the denominator S above would be replaced by S1-S2. Furthermore, in this case, the probability of reference would be interpreted to mean the probability that the higher resolution version would be required.
In order to calculate the replacement penalty for replacing an object 28, an estimate of the reference probability P for the object 28 is necessary for embodiments of the present invention.
The number of records in the object reference history list is likely to be constrained by storage availability. Therefore, when the list reaches its maximum size, inserting a new record at the head of this list will involve removing the record at the tail of the list. If the removed record represents an object that is currently in the cache then it is desirable to ensure that the object can eventually be selected for replacement. There are a number of ways to accomplish this. One technique would be to set this object's reference probability to zero and then remove and reinsert it in the replacement penalty priority queue (described in more detail below) which will cause it to become immediately eligible for replacement. Another technique would be to move the replacement probability for this object to an "aging" structure which is simply a list containing records for the objects that have been removed from the object reference history list but are still in the cache. If the cache object is referenced during the period that the object's record is in the aging structure, its record would be removed from the aging structure and a record for the object would again be placed in the object reference history list. The aging structure would be periodically scanned and a function applied to reduce each record's reference probability. An example of such a function would be to reduce the reference probability through division by a value greater than one, for example division by two. The new reference probability would then be used to reposition the object's record in the replacement penalty priority queue. In this way continued absence of references to the object would cause the estimate of its reference probability to continue to decrease, which would in turn guarantee that it would eventually be replaced.
Each time a record in the ORHL
Those skilled in the art will appreciate that alternative and/or equivalent methods for estimating reference probabilities could be used within the spirit and scope of the present invention. For example, for each object j stored in the storage repository 20, the storage repository could return the fraction of the total requests F(1), received by that repository that were for object j. In addition, the number of references R to each storage repository 20 would be maintained. Using this alternative method, the reference probability P of an object j in storage repository i could be estimated as follows: Probability P (reference to object j in storage repository i)=F(j)×(R(i)/T) where P is the probability; F(j) is the fraction of the total requests received by storage repository i for object j; R(i) is the total number of references to storage repository i; and T is the total number of references to all storage repositories.
Now that the invention has been described by way of a preferred embodiment with alternatives, various equivalents, modifications and improvements will occur to those skilled in the art. Thus, it should be understood that the detailed description is provided as an example and not a limitation. The scope of the invention is properly defined by the appended claims.
Robinson, John Timothy, Tetzlaff, William Harold, Bozman, Gerald Parks
Patent | Priority | Assignee | Title |
10108547, | Jan 06 2016 | NetApp, Inc. | High performance and memory efficient metadata caching |
10713182, | Jul 14 2017 | Fujitsu Limited | Information processing apparatus and method |
10911328, | Dec 27 2011 | NetApp, Inc. | Quality of service policy based load adaption |
10929022, | Apr 25 2016 | NetApp. Inc. | Space savings reporting for storage system supporting snapshot and clones |
10951488, | Dec 27 2011 | NetApp, Inc. | Rule-based performance class access management for storage cluster performance guarantees |
10997098, | Sep 20 2016 | NetApp, Inc | Quality of service policy sets |
11212196, | Dec 27 2011 | NetApp, Inc. | Proportional quality of service based on client impact on an overload condition |
11327910, | Sep 20 2016 | NetApp, Inc | Quality of service policy sets |
11372779, | Dec 19 2018 | Industrial Technology Research Institute; NATIONAL TAIWAN UNIVERSITY | Memory controller and memory page management method |
11379119, | Mar 05 2010 | NetApp, Inc. | Writing data in a distributed data storage system |
11386120, | Feb 21 2014 | NetApp, Inc. | Data syncing in a distributed system |
11397670, | Jan 10 2020 | NXP USA, INC. | Embedded information system and method for memory management |
11886363, | Sep 20 2016 | NetApp, Inc. | Quality of service policy sets |
6425057, | Aug 27 1998 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Caching protocol method and system based on request frequency and relative storage duration |
6591346, | Jan 19 2001 | Oracle America, Inc | Mechanism for managing an object cache |
6654855, | Oct 26 2000 | EMC IP HOLDING COMPANY LLC | Method and apparatus for improving the efficiency of cache memories using chained metrics |
6785770, | Jun 30 2000 | Koninklijke Philips Electronics NV | Data processing apparatus with a cache memory and method of using such an apparatus |
6826599, | Jun 15 2000 | Cisco Technology, Inc. | Method and apparatus for optimizing memory use in network caching |
6832253, | Apr 01 1999 | Cisco Technology, Inc | Proximity as an aid to caching and secondary serving of data |
6996678, | Jul 31 2002 | Cisco Technology, Inc.; Cisco Technology, Inc | Method and apparatus for randomized cache entry replacement |
7028096, | Sep 14 1999 | Streaming21, Inc. | Method and apparatus for caching for streaming data |
7058771, | Nov 21 2001 | eTreppid Technologies, LLC | System and method for managing memory in a surveillance system |
7073027, | Jul 11 2003 | International Business Machines Corporation | Methods, systems and computer program products for controlling caching of distributed data |
7107321, | Jun 15 2000 | Cisco Technology, Inc. | Method and apparatus for optimizing memory use in network caching |
7260600, | Nov 17 2000 | International Business Machines Corporation | User specified parallel data fetching for optimized web access |
7305521, | Jul 14 2003 | Samsung Electronics Co., Ltd. | Methods, circuits, and systems for utilizing idle time in dynamic frequency scaling cache memories |
7739551, | Jun 20 2007 | Microsoft Technology Licensing, LLC | Web page error reporting |
7761572, | Apr 01 1999 | Cisco Technology, Inc. | Proximity as an aid to caching and secondary serving of data |
7996535, | Apr 01 1999 | Cisco Technology, Inc. | Proximity as an aid to caching and secondary serving of data |
8060789, | Jun 20 2007 | Microsoft Technology Licensing, LLC | Web page error reporting |
8407260, | Jun 30 2006 | International Business Machines Corporation | Method and apparatus for caching broadcasting information |
8601216, | Aug 31 2010 | Oracle International Corporation | Method and system for removing cache blocks |
8601217, | Aug 31 2010 | Oracle International Corporation | Method and system for inserting cache blocks |
8612956, | Dec 05 2007 | DOORDASH, INC | Efficient object profiling for optimizing object locality |
8677188, | Jun 20 2007 | Microsoft Technology Licensing, LLC | Web page error reporting |
8838595, | Feb 09 2010 | GOOGLE LLC | Operating on objects stored in a distributed database |
8862617, | Feb 09 2010 | GOOGLE LLC | System and method for replicating objects in a distributed storage system |
8874523, | Feb 09 2010 | GOOGLE LLC | Method and system for providing efficient access to a tape storage system |
8874970, | Mar 31 2004 | Microsoft Technology Licensing, LLC | System and method of preventing a web browser plug-in module from generating a failure |
8886602, | Feb 09 2010 | GOOGLE LLC | Location assignment daemon (LAD) for a distributed storage system |
8938418, | Feb 09 2010 | GOOGLE LLC | Method and system for efficiently replicating data in non-relational databases |
9298736, | Feb 09 2010 | GOOGLE LLC | Pruning of blob replicas |
9305069, | Feb 09 2010 | GOOGLE LLC | Method and system for uploading data into a distributed storage system |
9317524, | Feb 09 2010 | GOOGLE LLC | Location assignment daemon (LAD) for a distributed storage system |
9384119, | Jun 20 2007 | Microsoft Technology Licensing, LLC | Web page error reporting |
9659031, | Feb 09 2010 | GOOGLE LLC | Systems and methods of simulating the state of a distributed storage system |
9734134, | Sep 19 2013 | Amazon Technologies, Inc. | Conditional promotion through frame reordering |
9747322, | Feb 09 2010 | GOOGLE LLC | Storage of data in a distributed storage system |
9785969, | Sep 19 2013 | Amazon Technologies, Inc. | Conditional promotion in multi-stream content delivery |
9922006, | Sep 19 2013 | Amazon Technologies, Inc. | Conditional promotion through metadata-based priority hinting |
Patent | Priority | Assignee | Title |
3964028, | Aug 02 1973 | International Business Machines Corporation | System and method for evaluating paging behavior |
5043885, | Aug 08 1989 | International Business Machines Corporation; INTERNATIONAL BUSINESS MACHINES CORPORATION, A CORP OF NY | Data cache using dynamic frequency based replacement and boundary criteria |
5452440, | Jul 16 1993 | GLENRIDGE COMMERCIAL, INC | Method and structure for evaluating and enhancing the performance of cache memory systems |
5572643, | Oct 19 1995 | INTERNETAD SYSTEMS LLC | Web browser with dynamic display of information objects during linking |
5692185, | Dec 21 1992 | AONIX, S A | Object space manager method and circuit |
5701451, | Jun 07 1995 | GOOGLE LLC | Method for fulfilling requests of a web browser |
5822759, | Nov 22 1996 | ACTIAN CORP | Cache system |
5943687, | Mar 14 1997 | Telefonakiebolaget LM Ericsson | Penalty-based cache storage and replacement techniques |
6012126, | Oct 29 1996 | GOOGLE LLC | System and method for caching objects of non-uniform size using multiple LRU stacks partitions into a range of sizes |
6085193, | Sep 29 1997 | GOOGLE LLC | Method and system for dynamically prefetching information via a server hierarchy |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 09 1998 | BOZMAN, GERALD P | IBM Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 009156 | /0981 | |
Apr 09 1998 | ROBINSON, JOHN T | IBM Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 009156 | /0981 | |
Apr 09 1998 | TETZLAFF, WILLIAM H | IBM Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 009156 | /0981 | |
Apr 10 1998 | International Business Machines Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Sep 14 2005 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 14 2009 | REM: Maintenance Fee Reminder Mailed. |
May 07 2010 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
May 07 2005 | 4 years fee payment window open |
Nov 07 2005 | 6 months grace period start (w surcharge) |
May 07 2006 | patent expiry (for year 4) |
May 07 2008 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 07 2009 | 8 years fee payment window open |
Nov 07 2009 | 6 months grace period start (w surcharge) |
May 07 2010 | patent expiry (for year 8) |
May 07 2012 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 07 2013 | 12 years fee payment window open |
Nov 07 2013 | 6 months grace period start (w surcharge) |
May 07 2014 | patent expiry (for year 12) |
May 07 2016 | 2 years to revive unintentionally abandoned end. (for year 12) |