Labs
Each lab takes under an hour on a laptop and turns a claim from this mechanism into a number you measured yourself.
- 1
Kill vs. power loss: what survives?
Kill -9 a writer 50 times with and without fsync and count the acknowledged lines that survive. The power-loss half is not run here.
Break itPython - 2
Group commit: break the 1/latency ceiling
A log server syncing per commit against one with group commit, at 1 to 256 clients: commits per second and latency.
MeasurePython - 3
Group commit: measure fsync and the self-tuning batch
The cost of a durable write, 20 writes per flush, and pgbench with synchronous_commit on and off at 1 and 32 clients.
MeasurePython, Docker - 4
Group commit and the square-root rule
Append 100-byte records with a flush after every 1, 10 and 100; then a timer batcher at λ = 2,000/s for waits W from 0.5 to 16 ms against W* = √(2·fsync/λ).
MeasurePython - 5
What does fsync really cost on your machine?
Time 200-byte appends with no sync, with fsync, and on macOS with F_FULLFSYNC: the durability tax of your drive.
MeasurePython - 6
Checkpoint interval versus WAL volume (Postgres)
Run pgbench for 120 s with checkpoints every 30 s and every 15 min, then without full-page writes; compare WAL bytes per transaction.
Real systemDocker, Python - 7
Restore test and time-to-restore
Back up a 1 GB PostgreSQL database with WAL archiving, drop a table, restore to just before the drop, time it; then restore without the WAL.
Real systemDocker, Python - 8
A checksum that proves identity
A toy block store with checksums next to the data and checksums in an index: which one catches a misdirected write and a lost write?
Break itPython