IO numbers that everyone should know
In the Numbers Every Programmer Should Know, one set of numbers that I've always found missing were IO numbers (HDD vs SSD - random reads / writes). I found a really good source on StackExchange for these numbers and for the sake of posterity, I'm documenting this here (for me and for you):
- SSD | HDD Sequential Read/Write : 700 MB/s+ | 115 MB/s (6x diff)
- SSD | HDD Random Read 512KB : 160 MB/s | 39 MB/s (4x diff)
- SSD | HDD Random Write 512KB : 830 MB/s | 57 MB/s (14x diff)
- SSD | HDD Random Read 4KB: 27 MB/s | 0.5 - 1.5 MB/s (17x diff)
- SSD | HDD Random Write 4KB: 135 - 177 MB/s | 0.7 MB/s (192x+ diff!)
The bottom line is that unless you're thrashing the HDD with lots of 4KB random writes, the HDD should not be tapped out till about 30+ MB/s (and an SSD should be just fine till about 150 - 300 MB/s). If you're seeing an HDD tapped out at 3 MB/s, then you're either not writing sequentially or your block size of writes is too small. If you're seeing an SSD tapped out at < 100 MB/s, it's almost certainly a software bug and not an IO limitation. In either case, the basic norm holds - if you can, always use SSDs, they usually save you money in CPU time.
How does a NVMe SSD compare to a regular one ?
ReplyDeleteNVMe have a similar write speed as SSD and are 6x faster on reads. A handy table is located on this link: https://www.anandtech.com/show/13761/the-samsung-970-evo-plus-ssd-review/6
Delete