US2017004093A1PendingUtilityA1

System and Method for Cache Monitoring in Storage Systems

43
Assignee: NETAPP INCPriority: Dec 20, 2013Filed: Sep 13, 2016Published: Jan 5, 2017
Est. expiryDec 20, 2033(~7.4 yrs left)· nominal 20-yr term from priority
G06F 12/123G06F 12/121G06F 12/0871G06F 12/0862G06F 12/0891G06F 11/3466G06F 11/3055G06F 2212/1021G06F 2212/602G06F 11/3037G06F 2212/69
43
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A system and method of cache monitoring in storage systems includes storing storage blocks in a cache memory. Each of the storage blocks is associated with status indicators. As requests are received at the cache memory, the requests are processed and the status indicators associated with the storage blocks are updated in response to the processing of the requests. One or more storage blocks are selected for eviction when a storage block limit is reached. As ones of the selected one or more storage blocks are evicted from the cache memory, the block counters are updated based on the status indicators associated with the evicted storage blocks. Each of the block counters is associated with a corresponding combination of the status indicators. Caching statistics are periodically updated based on the block counters.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A method comprising:
 storing, by a cache controller, storage blocks in a cache memory, each of the storage blocks being associated with its own respective status indicators and a respective tenant identifier;   as requests are received at the cache controller:
 processing the requests; and 
 updating the respective status indicators associated with the storage blocks in response to the processing of the requests; 
   selecting one of the storage blocks for eviction when a storage block limit is reached;   as the selected storage block is evicted from the cache memory, determining an eviction state of the selected storage block based on values of the status indicators associated with the selected storage block and updating a selected one of a plurality of block counters, the selected one of the block counters corresponding to the eviction state and the respective tenant identifier associated with the selected storage block; and   periodically updating caching statistics based on the block counters.   
     
     
         2 . The method of  claim 1 , wherein:
 the respective status indicators include a respective written status indicator; and   the method further comprises updating each respective written status indicator associated with the storage blocks that are accessed by a write request.   
     
     
         3 . The method of  claim 2 , wherein:
 each respective written status indicator is a respective written counter; and   updating each respective written status indicator comprises incrementing the respective written counter.   
     
     
         4 . The method of  claim 1 , wherein:
 the respective status indicators include a respective hit status indicator; and   the method further comprises updating each respective hit status indicator associated with the storage blocks that are accessed by a read request that results in a cache hit.   
     
     
         5 . The method of  claim 4 , wherein:
 each respective hit status indicator is a read counter; and   updating each respective hit status indicator comprises incrementing the read counter.   
     
     
         6 . The method of  claim 1  wherein:
 the respective status indicators include a respective prefetch status indicator; and 
 processing the requests comprises:
 fetching prefetched storage blocks based on the requests; and 
 updating each respective prefetch status indicator associated with the prefetched storage blocks. 
 
 
     
     
         7 . The method of  claim 1 , wherein each respective tenant identifier is a client identifier or a storage unit identifier. 
     
     
         8 . The method of  claim 1 , wherein the caching statistics include tenant-specific caching statistics. 
     
     
         9 . The method of  claim 8 , wherein the tenant-specific caching statistics include a tenant-specific cache space utilization for each tenant using the cache memory, the tenant-specific cache space utilization for a first tenant being based on a ratio of a number of the storage blocks stored in the cache memory that are associated with the first tenant and a number of the storage blocks stored in the cache memory. 
     
     
         10 . The method of  claim 8 , wherein the tenant-specific caching statistics include a tenant-specific prefetch utilization for each tenant using the cache memory, the tenant-specific prefetch utilization for a first tenant being based on a hit rate for storage blocks associated with the first tenant that were prefetched. 
     
     
         11 . The method of  claim 8 , wherein the tenant-specific caching statistics include a tenant-specific back end input output bandwidth for each tenants using the cache memory, the tenant-specific back end input output bandwidth for a first tenant being based on a total of the block counters associated with the first tenant. 
     
     
         12 . A computing device comprising:
 a memory containing machine readable medium comprising machine executable code having stored thereon instructions for performing a method of caching;   a cache memory storing cache blocks; and   a processor coupled to the memory and the cache memory, the processor configured to execute the machine executable code to cause the processor to:
 as storage requests are received to access cache blocks, update status values associated with each of the cache blocks accessed by the storage requests in response to processing the storage requests, each of the cache blocks having its own respective status values and a respective tenant identifier; 
 select one of the cache blocks for eviction when a cache block limit is reached; 
 as the selected cache block is evicted from the memory, determine an eviction state of the selected cache block based on values of the respective status values associated with the selected cache block and update a selected one of a plurality of eviction counters, the selected one of the eviction counters corresponding to the eviction state and the respective tenant identifier associated with the selected cache block; and 
 periodically update caching system metrics based on the eviction counters. 
   
     
     
         13 . The computing device of  claim 12 , wherein the processor is further configured to determine a tenant-specific cache space utilization metric for a first tenant based on a ratio of a number of the cache blocks stored in the cache memory that are associated with the first tenant and a number of the cache blocks stored in the cache memory. 
     
     
         14 . The computing device of  claim 13 , wherein the processor is further configured to compare the tenant-specific cache space utilization metric for the first tenant with a tenant specific cache space utilization metric for a second tenant. 
     
     
         15 . The computing device of  claim 12 , wherein the processor is further configured to determine a tenant-specific cache effectiveness metric for a first tenant based on comparisons of one or more combinations of the respective eviction counters associated with the first tenant. 
     
     
         16 . The computing device of  claim 12 , wherein the processor is further configured to determine a tenant-specific prefetch effectiveness metric for a first tenant based on one or more of the eviction counters associated with a prefetch status value and the first tenant. 
     
     
         17 . A non-transitory machine readable medium having stored thereon instructions for performing a method comprising machine executable code which when executed by at least one machine, causes the machine to:
 process a plurality of storage requests received by the machine;   updating respective state variables for each block of data that is accessed by the storage requests, each block of data being associated with a respective tenant;   as each block of data is evicted from a caching system, determine an eviction state of the evicted block of data based on values of the respective state variables associated with the evicted block of data and update a selected one of a plurality of caching metrics, the selected one of the caching metrics corresponding to the eviction state and the respective tenant of the evicted block; and   adjust one or more characteristics of the caching system based on the caching metrics.   
     
     
         18 . The method of  claim 17 , wherein the machine is further caused to aggregate the caching metrics over multiple periods of time. 
     
     
         19 . The non-transitory machine readable medium of  claim 17 , wherein the machine is further caused to
 determine a prefetch effectiveness metric for a first tenant based on one or more of the caching metrics associated with values of a prefetch state variable and the first tenant; and   adjust a number of blocks speculatively fetched in response to a read request by the first tenant based on the prefetch effectiveness metric.   
     
     
         20 . The non-transitory machine readable medium of  claim 17 , wherein the machine is further caused to:
 determine a cache space utilization metric for a first tenant based on a ratio of a number of blocks of data stored in the caching system that are associated with the first tenant and a number of blocks of data stored in the caching system; and   limit a number of blocks of data that the caching system may be allowed to store for the first tenant when the cache space utilization metric shows an imbalance in cache system use between the first tenant and other tenants of the caching system.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.