The Cassandra distributed database runs on the JVM, which in many ways
is a huge productivity boost. However, the more you care about
performance, the less you can afford to let abstractions like i/o and
memory management exist as black boxes.
This talk will cover how Cassandra has gone beyond the interfaces
provided by the JVM to achieve higher performance in three areas.
First, how Cassandra uses platform-specific features such as
posix_fadvise, munmap, and mlock. Second, how we tune memory
management to avoid pain points in common garbage collection designs,
including in OpenJDK. Third, how Cassandra uses the JDK's
instrumentation hooks to measure the real size of on-heap structures
and make better decisions about what to keep in memory without
error-prone manual adjustments.