3 ms·
I think the most fundamental way in which the software ecosystem is unprepared doesn't require Optane storage or 64+ core systems to demonstrate. When CPU core
by wtallis 5y ago
I think the most fundamental way in which the software ecosystem is unprepared doesn't require Optane storage or 64+ core systems to demonstrate.
When CPU core counts first started growing, storage was still effectively single-threaded: a hard drive can only work on servicing one request at a time (though you can get a small throughput increase by keeping several requests in the queue), and scaling up to arrays of many drives was much more effective at increasing sequential throughput than random IO performance.
With flash-based storage, the SSD now has far more parallelism than your CPU. Having one pending IO operation per CPU core isn't enough to keep your SSDs busy. Having one pending IO per software thread and doing lots of context switches to run more threads than you have cores still won't keep your drives busy, unless you're only doing IO in large chunks. So synchronous, blocking IO APIs are unable to make full use of your storage performance. Optane's low latency doesn't save you from this problem; it just highlights that context switches are also too expensive.
- eptcyka 5y agoFunny that, some people argue that the future of I/O is synchronous memory-mapped devices.
- wtallis 5y agoThat can potentially work, but only by getting the filesystem/block storage/PCIe layers of the IO stack out of the way, and even then it's only plausible for Optane or similarly low-latency storage. It'll never work for flash, because the latency of flash will never be low enough.