• Miek Gieben's avatar
    New cache implementation and prefetch handing in mw/cache (#731) · e9eda7e7
    Miek Gieben authored
    * cache: add sharded cache implementation
    
    Add Cache impl and a few tests. This cache is 256-way sharded, mainly
    so each shard has it's own lock. The main cache structure is a readonly
    jump plane into the right shard.
    
    This should remove the single lock contention on the main lock and
    provide more concurrent throughput - Obviously this hasn't been tested
    or measured.
    
    The key into the cache was made a uint32 (hash.fnv) and the hashing op
    is not using strings.ToLower anymore remove any GC in that code path.
    
    * here too
    
    * Minimum shard size
    
    * typos
    
    * blurp
    
    * small cleanups no defer
    
    * typo
    
    * Add freq based on Johns idea
    
    * cherry-pick conflict resolv
    
    * typo
    
    * update from early code review from john
    
    * add prefetch to the cache
    
    * mw/cache: add prefetch
    
    * remove println
    
    * remove comment
    
    * Fix tests
    
    * Test prefetch in setup
    
    * Add start of cache
    
    * try add diff cache options
    
    * Add hacky testcase
    
    * not needed
    
    * allow the use of a percentage for prefetch
    
    If the TTL falls below xx% do a prefetch, if the record was popular.
    Some other fixes and correctly prefetch only popular records.
    e9eda7e7
prefech_test.go 1.42 KB