Performance 为什么从多个SSD读取比从单个SSD读取吞吐量低

Performance 为什么从多个SSD读取比从单个SSD读取吞吐量低,performance,solid-state-drive,Performance,Solid State Drive,我正在编写一个在三个SSD上复制数据的应用程序。然后,应用程序通过将每个请求随机分配给三个SSD中的一个来处理读取请求,因此理论上所有SSD都应该平等使用。请注意,我使用的是线程池,因此读取请求是并发处理的 然而,当将此设置的读取吞吐量与仅一个SSD的读取吞吐量进行比较时,我得到了一个令人惊讶的结果,即3-SSD设置实际上具有较低的读取吞吐量。原因可能是什么?您可能有多个CPU同时处理多个进程和线程,但最终,您的SSD使用的是板中的同一总线。那是你的瓶颈 做一个非常便宜的类比:你试图用不同的盘子

我正在编写一个在三个SSD上复制数据的应用程序。然后,应用程序通过将每个请求随机分配给三个SSD中的一个来处理读取请求,因此理论上所有SSD都应该平等使用。请注意,我使用的是线程池,因此读取请求是并发处理的


然而,当将此设置的读取吞吐量与仅一个SSD的读取吞吐量进行比较时,我得到了一个令人惊讶的结果,即3-SSD设置实际上具有较低的读取吞吐量。原因可能是什么?

您可能有多个CPU同时处理多个进程和线程,但最终,您的SSD使用的是板中的同一总线。那是你的瓶颈

做一个非常便宜的类比:你试图用不同的盘子喂三个不同的婴儿,但你只有一个勺子


如果并行化很重要的话,也许使用集群/云可以为您带来好处。

向我们展示一些简单的代码来重现这个问题,否则我们真的帮不上忙,因为问题是由这个问题引起的。答案很简单,“如果做得好,应该会大大加快”将SSD设置为Raid 0卷,然后重复你的测试。我同意这个答案。您的3个SSD很可能连接到同一个控制器,而该控制器是瓶颈。另一种可能性是,驱动程序的编写不能有效地处理多磁盘访问。当然,还有一种可能,那就是你可能把编码搞砸了,而你的读卡器线程会互相阻塞。