Hacker News new | past | comments | ask | show | jobs | submit login

The key word is ‘eventually’. How long? Seconds, or even minutes? If your machine locks up, you turn it off and on again. If the drive didn’t bother to flush its internal caches by then, that data is lost, just as in a power failure.



> you turn it off and on again

That would be a power failure. Kernel crash is not equivalent to that.

System reboot doesn't entail power failure either. The disks may be powered by an independent external enclosure (e.g. JBOD). All they see is that they stopped receiving commands for a short while.


It's at least seconds. Apple's NVMe controller does not try to eagerly flush unflushed writes.

That said, macOS does issue a flush on kernel panic, and I'm hoping to be able to do the same on Linux.


100s of milliseconds is the right order of magnitude.


It's at least 5 seconds on Apple SSDs. Not sure if they even lazily flush at all. They might rely on the OS to periodically issue flushes (I heard launchd does that every 30 seconds).


I think at least 1-2 seconds.

I measured the performance of different size direct I/Os on some Samsung SSDs, and the write performance when switching from one test to another was significantly affected by the previous test parameters, or not, depending on whether a "sleep 2" was inserted between each test.

The only explanation I can think of is that the flash reorganises or commits cached data during that 2 seconds.


If you were using consumer SSDs, you have multiple layers of caching to worry about: in the controller's SRAM, and in a portion of the flash that's operating as SLC. There are also power saving modes to consider; waiting long enough for the drive to drop to a sleep state means you'll incur a wakeup penalty on the next IO.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: