scylladb / scylla-ccm

Cassandra Cluster Manager, modified for Scylla
Apache License 2.0
22 stars 66 forks source link

node.py: disable commitlog O_DSYNC, preallocation #424

Closed avikivity closed 1 year ago

avikivity commented 1 year ago

Commitlog O_DSYNC is intended to make Raft and schema writes durable in the face of power loss. To make O_DSYNC performant, we preallocate the commitlog segments, so that the commitlog writes only change file data and not file metadata (which would require the filesystem to commit its own log).

However, in tests, this causes each ScyllaDB instance to write 384MB of commitlog segments. This overloads the disks and slows everything down.

Fix this by disabling O_DSYNC (and therefore preallocation) during the tests. They can't survive power loss, and run with --unsafe-bypass-fsync anyway.

fruch commented 1 year ago

@avikivity is there are reference to the change in scylla that started doing this preallocation ? (i'm guess it getting blocked by CI failing in some way)

mykaul commented 1 year ago

I think someone complained on something similar - https://groups.google.com/g/scylladb-dev/c/HJSc6RIIQw0/m/yOADFTuKAwAJ?utm_medium=email&utm_source=footer ?

avikivity commented 1 year ago

scylladb/scylladb@1e37e1d40c78cb3c86ff5ce33d3a58dce5670b1f