[ 
https://issues.apache.org/jira/browse/CASSANDRA-11452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15242175#comment-15242175
 ] 

Benedict commented on CASSANDRA-11452:
--------------------------------------

bq. I'd expect the collision would be flushed out by the eviction when we 
detect that the victim's and candidates hash codes are equal. To me the victim 
means the item that the eviction policy selected, so the jittered LRU is 
selecting the guard. It might also be simpler code that method is long to 
handle the various edge cases.

I think we may be suffering from the ambiguities of the written word.  I 
thought you meant to change the jitter to select the victim rather than the 
guard, i.e. to remove not the LRU.  If you just mean to calculate the guard 
earlier then I was raising in invalid contention.

I must admit that since you raise specifically the hash comparison that I don't 
entirely follow its logic (I apologise if this is my density; I've not put as 
much thought into it as I could).  It seems to me that if the LRU and MRU are 
colliding, for instance, then we hit the problem and the comparison does 
nothing to stop it.  And it doesn't stop two collisions entering the map unless 
the collision appears only when the LRU collides with it on admission.  I 
haven't looked closely at the test cases so I'm not sure what it's meant to be 
stopping, but I suspect the jitter is a stronger more general solution.

bq. Sorry this is existing code in the sketch, as suggested by Thomas Meuller 
(H2). That was to protect against hash collision attacks exploiting the hash 
function.

Ah. Personally I don't see any harm in regularising the bits over the address 
space with a random seed - a bit of variance never hurt anybody, and since only 
tests have a reliable data distribution, only our benchmarks are likely 
noticing it in any functional sense.

bq. Unfortunately good traces are also hard to find.

_Any_ traces are hard to find.  The main thing that stopped me exploring some 
of these ideas myself over the past few years was the perceived impossibility 
of finding a suite of good quality traces.  As much as I am impressed by the 
paper, when I first encountered W-TInyLFU I was most excited to see a suite of 
readily available traces with a simulator.  Of course, given the bar has been 
raised for making use of the idea the time investment for doing something 
useful has gone up correspondingly, but at least on the fun side of the 
equation.

bq. I'm really interested to see what other avenues people take to exploit 
sketches in a cache policy

Yup.  Me too.

> Cache implementation using LIRS eviction for in-process page cache
> ------------------------------------------------------------------
>
>                 Key: CASSANDRA-11452
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11452
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Local Write-Read Paths
>            Reporter: Branimir Lambov
>            Assignee: Branimir Lambov
>
> Following up from CASSANDRA-5863, to make best use of caching and to avoid 
> having to explicitly marking compaction accesses as non-cacheable, we need a 
> cache implementation that uses an eviction algorithm that can better handle 
> non-recurring accesses.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to