Question

I have a thread pool writing data to an SSD disk. (windows XP, c#) I would like to choose a pool size to optimize performance. Theoretically, should performance improve with more threads? How do SSDs handle concurrent writes? And also concurrent reads, for that matter?

Thanks!

Was it helpful?

Solution

The best way to go about solving this problem is by actually profiling different pool sizes. The actualy settings you choose will depend on the nature of I/Os you are performing and of course the concurrency of said I/Os.

Theoretically, should performance improve with more threads?

SSDs unlike conventional spindle based drives have great random read/write performance and therefore will benefit (greatly) from having multiple concurrent threads perform I/O on them.

How do SSDs handle concurrent writes? And also concurrent reads, for that matter?

Since there are no moving parts, just data access to various (memory) locations, there is very little queing of random reads/writes that is needed, unless the drive's IOs/s for reads/writes is exceeded.

OTHER TIPS

If you need to perform random io operations, you might want to ensure you're drive is running in AHCI, as random performance with high concurrency is usually faster with AHCI than IDE (see http://benchmarkreviews.com/index.php?option=com_content&task=view&id=505&Itemid=38&limit=1&limitstart=3).

This review also shows that concurrent random reads and writes (4K-64Trd Results) are faster than when using only a single thread (4K results).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top