165s (2:45) — RAM only
451s (7:31) — NVMe SSD
Good argument for when the uninformed state that "NVMe might as well be RAM" 165s (2:45) — RAM only
451s (7:31) — NVMe SSD
Good argument for when the uninformed state that "NVMe might as well be RAM"(though, I guess this doesn’t give us any latency info, just throughput. I’d expect RAM latency to still be faster)
The spinning disk result is only 10x slower than RAM. But a spinning disk's throughput is 100-1000x less than current RAM, and for latency it's even worse.
Similarly, the other factors in the benchmark graph are way off their hardware factors.
This benchmark is measuring how one specific program (the Haskell Compiler compiling ShellCheck) scales with faster memory, and the answer is "not very well".
I originally tried running the test with only 1GB RAM, but killed the job after 9 hours of churning.
If your ops aren't latency sensitive, then NVMe might as well be RAM, if they are latency sensitive, then NVMe is not RAM (yet)
How well does NVMe scale to multiple devices, that is, how many GB/s can you practically get today out of a server packed with NVMe until you hit a bottleneck (e.g. running out of PCIe lanes)?
I created a ramdisk as follows:
~$ sudo mount -t tmpfs -o size=32g tmpfs ~/ramdisk/
~$ cp -r Downloads/linux-5.14-rc3 ramdisk/
~/ramdisk$ cp /boot/config-5.13.5-100.fc33.x86_64 linux-5.14-rc3/.config
~/ramdisk$ cd linux-5.14-rc3/
~/ramdisk/linux-5.14-rc3$ time make -j 32
My compiler invocation was: ~/ramdisk/linux-5.14-rc3$ time make -j 32
And got the following results Kernel: arch/x86/boot/bzImage is ready (#3)
real 6m2.575s
user 143m42.402s
sys 21m8.122s
When I compiled straight from the SSD I got a surprisingly similar number: Kernel: arch/x86/boot/bzImage is ready (#1)
real 6m23.194s
user 154m24.760s
sys 23m26.304s
I drew the conclusion that for compiling Linux, NVMe might as well be RAM, though if I did something wrong I'd be happy to hear about it!