Hi folks,

I am proposing to enable trickle_fsync by default in cassandra.yaml. It is
already enabled in cassandra_latest.yaml.

When enabled, SSTable writes are fsync'd at intervals controlled by
trickle_fsync_interval (default = 10MiB) as opposed to a single fsync after
the SSTable has been written. This bounds dirty page buildup and mitigates
kernel writeback storms, benefiting read latencies - see the benchmarks in
the comments on CASSANDRA-21487 [1]. CASSANDRA-8763 [2] argued it shouldn't
even be optional.

Note: trickle_fsync was silently ignored for compressed SSTables until
CASSANDRA-21487 [2], so most operators have never actually run with it even
when enabled.

The original caution was HDDs, where trickle fsync costs some sequential
throughput, but that cost falls on throttled background writes, whereas a
writeback storm falls on foreground reads

If there are no objections I'll raise a JIRA and put up a patch.

[1] https://issues.apache.org/jira/browse/CASSANDRA-8763
[2] https://issues.apache.org/jira/browse/CASSANDRA-21487

Sam

Reply via email to