2

I'm writing an application that replicates data on three SSDs. The application then handles read requests by randomly assign each request to one of the three SSDs, so in theory all SSDs should be used equally. Note that I'm using a thread pool so the read requests are being processed concurrently.

However, when comparing the read throughput of this setup against the read throughput from just one single SSD, I get the surprising result that the 3-SSD setup actually has a lower read throughput. What could be the cause of this?

Derek Chiang
  • 3,330
  • 6
  • 27
  • 34
  • 1
    Show us some minimalistic code to reproduce the issue else we can't really help, as the question is caused the answer is simply "if well done, it should be substantially faster" – Ronan Thibaudau Aug 01 '14 at 21:12
  • 1
    Setup the SSD's as a Raid 0 volume, then repeat your test. – mxmissile Aug 01 '14 at 21:24

1 Answers1

2

You may have multiple CPU's handling multiple processes and threads at the same time, but at the end of the day, your SSD's are using the same bus in the board. That's the chokepoint you have there.

Making a very cheap analogy: You are trying to feed three different babies from different plates, but you have only one spoon.

Maybe using a cluster/the cloud might do the trick for you, if parallelization is important.

Geeky Guy
  • 9,229
  • 4
  • 42
  • 62
  • 1
    I agree with this answer. Most likely your 3 SSD's are connected to the same controller and the controller is the bottle neck. Another possibility is, that the driver is not written to handle multi disk access efficiently. Also always possible, of course, is that you might have messed up your coding and your reader threads block each other. – BitTickler Aug 01 '14 at 21:17