[
https://issues.apache.org/jira/browse/CASSANDRA-8614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ariel Weisberg updated CASSANDRA-8614:
--------------------------------------
Attachment: 8614.patch
New patch addressing a few things.
I had to put in a fake Checksum class to compile against with the JDK 8 methods
for byte buffers. javac is surprisingly OK with just pointing at a source file.
Fixed formatting and added a test to make sure JDK detection is actually
detecting and giving up the goodness.
I think this should go in so we at least get it for the commit log. It looks
like Adler is not fast in JDK 8 on Linux. It is inexplicably fast on OS X. The
same speed as CRC32.
I don't have an explanation for the funky performance numbers on OS X. On Linux
I get the expected behavior where disabling the intrinsic is slow and switching
to JDK 7 is slow.
I will create a separate ticket for discussion of the right way to replace
Adler32 with CRC32 in SSTables.
> Select optimal CRC32 implementation at runtime
> ----------------------------------------------
>
> Key: CASSANDRA-8614
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8614
> Project: Cassandra
> Issue Type: Improvement
> Components: Core
> Reporter: Ariel Weisberg
> Assignee: Ariel Weisberg
> Labels: performance
> Attachments: 8614.patch, Sample.java
>
>
> JDK 8 has support for an intrinsic for CRC32 that runs at 12-13 gigabytes/sec
> per core in my quick and dirty test. PureJavaCRC32 is < 800 megabytes/sec if
> I recall and it has a lookup table that evicts random cache lines every time
> it runs.
> In order to capture the benefit of that when it is available we can select a
> CRC32 implementation at startup in a static block.
> If JDK 8 is not what is running we can fall back to the existing
> PureJavaCRC32 implementation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)