Project

General

Profile

Feature #10541

Updated by Ward Vandewege over 7 years ago

 
 Rationale: when using blob-backed storage like S3, Keepstore no longer benefits from the kernel block cache to read frequently-requested blocks from ram. So we to build a caching mechanism into Keepstore - something external (squid, etc) won't do because of the permission signatures. 

 Solution: 

 * instead of wiping the data after filling a buffer, keep the buffer around with the data in it 
 * when a new request comes in for a hash for which we already have a buffer, serve it from that (and update a last-read timestamp for that buffer) 
 * when a new request comes in for a hash and there are no empty buffers available, reuse that filled buffer that has the oldest last-read timestamp 

Back