This is a companion discussion topic for the original entry at https://www.haiku-os.org/blog/kallisti5/2019-04-16_nvme_driver_now_available/
Nice job, thanks for the benchmark result!
Very good news !
Please continue the amazing job you do, we really appreciate it !
if i understand correctly in your test time is spent evenly between io and cpu? 30 seconds for each, does that mean there is no real bottleneck?
No, the CPU is the bottleneck here. We should be able to do better than 50% CPU usage for 1.4GB/s. Probably the actual bottleneck is the allocator; we allocate a bounce buffer and free it for every single transfer.
NVMe also comes in other form factors than M.2 such as U.2 and PCIe cards which are even faster than M.2 drives. Also there is NVMe over thunderbolt once that is perhaps someday supported.
I have a M.2 PCIe adapter I intend to test with an HP EX900 SSD also.
I suspect you may know hardware better than I do, but I have been researching things lately for a new build and I am pretty sure the PCIe version of M.2 (as opposed the the SATA3 ones) are quite fast, and pretty much on par with PCIe cards. It is quite confusing that M.2 cards come in both types…
M2 is a connector that can transport both pci-e and sata signals. Likewise, expresscard is pcie or usb.
This means there could be expresscard nvme as well, because why not?
the speed difference is not due to being M.2 or PCIe straight. It’s due to internal flash memory arrays’ speed limits. as said above, M.2 is a universal connector, it’s not controller or protocol or command set, just a connector, capable of carrying either PCIe or SATA or USB signals. it’s not confusing, it’s feature (keying is for differentiation).
M.2 is merely a form factor with 1 2 or 4 PCIe lanes (USB and data can also be on certain cards but if the card doesnt have pcie then it wont support NVMe). M.2 also has variants for wlan cards etc…
NVMe cards that go in a PCIe slot might have 4x 8x or 16x pcie lanes…and are typically faster or have higher IOPS.