cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ariel Weisberg (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8614) Select optimal CRC32 implementation at runtime
Date Sun, 08 Feb 2015 22:30:35 GMT


Ariel Weisberg commented on CASSANDRA-8614:

There is some wonkiness with the .class file for the dummy CRC32 being necessary. You can
compile the .java under src/jdkoverride with jdk7 to compile and test and then check it in.
git diff doesn't include the binary .class file.
In terms of picking the best CRC32 implementation the ticket and patch are ready for review.
We might as well get the benefit of a a better CRC32 implementation where available in the
situations where we are already choosing to use a CRC32.

CASSANDRA-8684 covers widening the usage of CRC32 (or not) and can be addressed separately.
The performance graphs from 8684 help advocate for selecting the intrinsic implementation
when available.

> Select optimal CRC32 implementation at runtime
> ----------------------------------------------
>                 Key: CASSANDRA-8614
>                 URL:
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Ariel Weisberg
>            Assignee: Ariel Weisberg
>              Labels: performance
>         Attachments: 8614.patch,
> 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

View raw message