[ 
https://issues.apache.org/jira/browse/CASSANDRA-20677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sam Lightfoot updated CASSANDRA-20677:
--------------------------------------
    Description: 
Per comments in FileUtils::clean


{code:java}
// TODO Once we can get rid of Java 8, it's simpler to call 
sun.misc.Unsafe.invokeCleaner(ByteBuffer),
// but need to take care of the attachment handling (i.e. whether 'buf' is a 
duplicate or slice) - that
// is different in sun.misc.Unsafe.invokeCleaner and this implementation. {code}
We can now use Unsafe.invokeCleaner to clean direct byte buffers which should 
tidy up the existing code.

  was:
If we use direct io to read SSTables during compaction, we can avoid polluting 
the page cache with data we're about to delete.  As another side effect, we 
also evict pages to make room for whatever we're putting in.  This unnecessary 
churn leads to higher CPU overhead and can cause dips in client read latency, 
as we're going to be evicting pages that could be used to serve those reads.

This is most notable with STCS as the SSTables get larger, potentially evicting 
the entire hot dataset out of cache, but is affected by every compaction 
strategy.

This is a follow up to be done after CASSANDRA-15452 since we will have an 
internal buffer.


> Migrate to JDK11 DirectByteBuffer cleaner
> -----------------------------------------
>
>                 Key: CASSANDRA-20677
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20677
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Local/Other
>            Reporter: Sam Lightfoot
>            Assignee: Sam Lightfoot
>            Priority: Normal
>
> Per comments in FileUtils::clean
> {code:java}
> // TODO Once we can get rid of Java 8, it's simpler to call 
> sun.misc.Unsafe.invokeCleaner(ByteBuffer),
> // but need to take care of the attachment handling (i.e. whether 'buf' is a 
> duplicate or slice) - that
> // is different in sun.misc.Unsafe.invokeCleaner and this implementation. 
> {code}
> We can now use Unsafe.invokeCleaner to clean direct byte buffers which should 
> tidy up the existing code.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to