Persistent Cache Invalidation via Storage Filter Driver
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Server-side cached data becomes inconsistent with the backing store during administrative actions or fault events, leading to a warm cache being purged and requiring re-warming, which is undesirable for performance.
Innovation Solution
Implementing a persistent cache system that uses SSDs for fast access and an in-memory data structure to maintain coherency by invalidating cache entries in a write-thru manner, with a storage filter driver tracking write requests to ensure cache entries are invalidated before the cache is operational, thus maintaining consistency across administrative actions and fault events.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the cache is purged after administrative actions or fault events to ensure data coherency, then data consistency between cache and backing store is improved, but I/O performance deteriorates due to cache re-warming time
Solution Approach 1:
The system performs preliminary invalidation of cache entries before the administrative action or fault event occurs. By proactively invalidating cache entries that are about to become inconsistent, the system prevents coherency issues rather than reacting to them afterward, thus avoiding cache purge and re-warming while maintaining data consistency.
Solution Approach 2:
The system implements a feedback mechanism where the storage filter driver monitors write requests to the backing store and provides feedback about which cache entries need to be invalidated. This feedback loop ensures that cache invalidation occurs precisely when needed to maintain coherency without unnecessary cache purges, thereby preserving I/O performance while ensuring data consistency.
2Productivity
If the cache is maintained warm across fault events to preserve I/O performance, then productivity is improved, but data coherency between cache and backing store deteriorates
Solution Approach 1:
The system extracts the invalidation information from the write requests and stores it separately in an in-memory data structure. This separation allows the cache to remain warm while the invalidation metadata is preserved independently, enabling selective invalidation of only the affected cache entries rather than purging the entire cache, thus maintaining both performance and coherency.
Solution Approach 2:
The storage filter driver acts as an intermediary between the application/write requests and the cache system. It intercepts write requests, determines which cache entries need invalidation, and manages the invalidation process without requiring the entire cache to be purged. This intermediary role allows the cache to remain warm while ensuring coherency through targeted invalidation.
3Device complexity
If invalidation information is stored in-memory only, then device complexity is reduced, but reliability deteriorates due to potential loss during server restarts
Solution Approach 1:
The system merges the in-memory invalidation data structure with the persistent cache storage on SSD. By combining volatile in-memory storage with non-volatile SSD storage, the system achieves both the simplicity and speed of in-memory operations and the durability of persistent storage, ensuring invalidation information survives server restarts while maintaining system simplicity.
Solution Approach 2:
The system changes the persistence parameter of the invalidation information by writing it to SSD storage in addition to keeping it in memory. This parameter change from purely volatile to partially persistent storage ensures the invalidation information survives faults and restarts while maintaining the operational simplicity of the original in-memory approach.
Data Source
AI summary
A method and system of persistent cache invalidation ensures cache durability. A storage filter driver of a storage input/output (I/O) stack of a server may be used to capture (i.e., track) write requests made to storage devices prior to the persistent cache becoming operational. Entries in the cache having overlapping address ranges with the tracked write requests may be invalidated before the cache is deemed operational. In this manner, the cache remains consistent with the backing store across the administrative actions or failure event (albeit with less valid entries). Notably, the filter driver tracks (i.e., captures) metadata of the write request (i.e., address range and size of the request) to support invalidation of matching cache entries. As such, the filter driver need not store (record) data associated with the write request.


