Improvements in electronic data processing systems have generally been directed toward reduction in the time required to service applications and process information along with the related costs of the infrastructure in support of the faster processing. A wide variety and number of memory and storage designs have been implemented as electronic data processing systems have evolved. One such implementation is the use of cache memory in one form or another to improve response times for data access. Applications having access to such caching technology benefit through the reduction in data access times.
The size of cache memory is often less than desired for a particular application. The size allocated for a cache is determined by a trade off between the cost of the device and the performance to be attained. The realization that a complete application and its data cannot usually reside in a cache leads to cache management techniques. The cache size constraints mean that decisions have to be made regarding cache content during application execution time.
The value of a cache increases with the applicability of the data contained therein. The applicability of the data is determined by the referencing of the data. Ideally only the recently used or most likely to be accessed data should be maintained in the cache.
Prior implementations of caching have used a variety of techniques to determine what data should be cached and how long that data should remain in the cache if it is not referenced. These implementations have been targeted towards various specific situations resulting in varying levels of success.
Typically there is a need to flush a cache to remove unwanted data. Whenever a cache is flushed it is effectively offline to the users of that cache. This results in downtime for the cache and increased response time for users requesting data managed through the cache while waiting for the cache recovery. Having flushed the cache, it then needs to be reloaded with data for use by the application users. Some implementations employ a “lazy” technique of allowing the cache to be populated over time by the data requests, while other implementations attempt to prime the cache before use.
All of these actions take time and therefore reduce the effectiveness of the cache while it is effectively “offline” or “marginally on-line. It would therefore be highly desirable to have a method and software allowing a faster more efficient means of returning a cache to productive service.