SSD 4k random read/write QD1...32 and IOPS values

I'm a video designer and have a lot of rendering programs. I decided to buy a 120GB SSD in my PC, and I'm searching for the best performance. The important thing for best performance in SSD must be high IOPS, high 4k read/write value, MLC NAND flash, OK so far it's clear.

But what is queue depth (QD) 1,2,3...32? For example random read 4k-QD1, random read 4k-QD2, random write 4k-QD1, random read 4k-QD2... Which values of QD are important for me, because I do not have a server and I'm not a standard home user. And the important QD-X value must be at least how much for me?


Solution 1:

QD is basically a measurement of how many threads are working on the SSD.

Most users will only hit a QD of 1 however in a server environment under intense IO load you can hit up to 64 or 128.

I would get something like this in whatever size you want. http://www.amazon.com/Samsung-2-5-Inch-Internal-MZ-75E250B-AM/dp/B00OAJ412U/ref=sr_1_1?s=pc&ie=UTF8&qid=1457283469&sr=1-1&keywords=ssd

Here is a paper that talks about QD in length: http://www.samsung.com/global/business/semiconductor/minisite/SSD/global/html/whitepaper/whitepaper08.html

Solution 2:

QD means "Queue Depth". In practice, it means how many IO-operations the operating system is able to give to said device before waiting for a response to any of those operations.

Normal applications usually read something, wait for the result and then proceed to read something else after the first result has been processed. This is QD1 because only one read operation is executed in parallel and the results are needed before another request can be done. Pretty much all non-database applications belong to this class. (All video works usually belong to this class except that the IO size is much bigger/easier than 4K.)

A server system usually runs multiple QD1-processes in parallel and if the server is running say 32-64 parallel QD1-processes the overall load for the device could be around QD32.

If some SSD device spec simply says "Random 4K Read" or "Random 4K Write" you can be absolutely sure that it means QD32 (or even high queue depth!) because QD1 spec is always much lower and manufactures do not like low numbers in the spec sheets. (Some manufacturers also like to cheat by displaying "QD1 T32" numbers where the "T32" means 32 paraller threads were doing parallel QD1 read requests each. Logically this is same as QD32 but the actual behavior could be slightly worse or better than plain old QD32 depending on the operating system. If the spec sheet only mentions this result, you can be pretty sure that manufacturer found this method provides the most marketable spec values. If spec sheet doesn't mention QD or T values, you can assume that the manufacturer used whatever combination that resulted in best spec result and you cannot compare that to any other similarly underspecified spec result from another device.)

If you're not sure that your system is able to continuously operate on real QD32-level you should look at QD1 numbers only. An if you're interested in latency of any given operation, you should look at QD1 numbers only even in case the system is running QD32 overall.

TL;DR: QD32 = best case behavior, QD1 = worst case behavior.

For example, Toshiba Hawk HK4E SSD drive claims to have "Random 4K Read: 75K IOPS" and "Random 4K Write: 30K IOPS". Those are QD32 numbers. Real world QD1 performance is around 6.5K IOPS for read and 6.5K IOPS for write. And if you sync the drive after each operation (wait for data to be on disk before continuing) for 4K random write QD1 you get around 0.7K IOPS.

If you're running Linux, you can compare to your current disk with following test (this tests disk storing the current working directory):

fio --name TEST --eta-newline=5s --filename=test.img --rw=randwrite --size=500m \
     --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 \
     --direct=1 --numjobs=1 --runtime=60 --group_reporting

Use --fsync=0 for testing without sync to permanent storage (if getting data to drive internal cache is enough) and set --iodepth=32 for QD32 testing. Finally, set --blocksize=2048kto get some idea about usable bandwidth for video editing (but remember that video software usually has QD1 or QD2).

Most of the time it's enough to keep all application files (executable files, icons, databases, etc) on fast SSD. All sequential data such as video files and photos can be stored on HDD or a HDD RAID because those only need sequential access and if your budget is limited, storing sequential access files on HDD is much cheaper. However, make sure that your photo catalog software keeps its content index database and thumbnails on the SSD. If you go high end (year 2020 that means 4K video with 10 bit per color channel) you should get storage system with 3-5 Gbps which means HDD RAID with 4-6 data disks plus parity disks. (Source: https://www.quora.com/Whats-the-recommended-speed-for-a-hard-drive-to-edit-in-10-bit-4K-in-Mb-S-MBPS). Note that the amount of storage you need for such source material will be counted in 10s of terabytes so going all SSD is not a realistic option due high cost.

In addition, as you're interested in video editing, I'd expect enough RAM to be much much better investment for video editing/creating work. Video work should not require random 4K performance. I'd recommend at least 32 GB RAM for any video related work unless your video clips are really, really short. If your system seems unstable, get a high quality power source - I'd suggest Corsair or Silverstone). If the system still seems unstable, get UPS. If the system still is not stable enough for you, get ECC RAM - this often requires upgrading the motherboard and CPU, too.