@nicolas17 We also cheat on Linux, we're not stupid, I'm not going to lose to them just because their NVMe firmware has abysmal flush performance :P
But our flush interval is way shorter so we cheat better. You can disable it with a module param if you really care (I can't imagine who would other than people running database servers on Apple Silicon on the internal NVMe?)
Edit: to be clear, the problem is *frequent* NVMe flushes suck on Apple controllers. A single flush at the end is negligible, it's when you have stuff like apt-get flushing on every file that we wound up with pathologically terribad performance on Linux. On Linux we throttle NVMe flushes to 1/sec; macOS just doesn't do them at all when you do a normal fsync, instead they have launchd doing systemwide flushes every 30 seconds or something silly like that, plus that secret nonstandard "no really, flush all the way" fcntl that nobody uses until they actually lose data and learn about it.
@nicolas17 We also cheat on Linux, we're not stupid, I'm not going to lose to them just because their NVMe firmware has abysmal flush performance :P
But our flush interval is way shorter so we cheat better. You can disable it with a module param if you really care (I can't imagine who would other than people running database servers on Apple Silicon on the internal NVMe?)
@nicolas17 We also cheat on Linux, we're not stupid, I'm not going to lose to them just because their NVMe firmware has abysmal flush performance :P
But our flush interval is way shorter so we cheat better. You can disable it with a module param if you really care (I can't imagine who would other than people running database servers on Apple Silicon on the internal NVMe?)
Edit: to be clear, the problem is *frequent* NVMe flushes suck on Apple controllers. A single flush at the end is negligible, it's when you have stuff like apt-get flushing on every file that we wound up with pathologically terribad performance on Linux. On Linux we throttle NVMe flushes to 1/sec; macOS just doesn't do them at all when you do a normal fsync, instead they have launchd doing systemwide flushes every 30 seconds or something silly like that, plus that secret nonstandard "no really, flush all the way" fcntl that nobody uses until they actually lose data and learn about it.
@nicolas17 We also cheat on Linux, we're not stupid, I'm not going to lose to them just because their NVMe firmware has abysmal flush performance :P
But our flush interval is way shorter so we cheat better. You can disable it with a module param if you really care (I can't imagine who would other than people running database servers on Apple Silicon on the internal NVMe?)