有没有支持并行读取的磁盘?

Posted

技术标签:

【中文标题】有没有支持并行读取的磁盘?【英文标题】:Is there any disk supports parallel reading? 【发布时间】:2019-07-10 13:42:06 【问题描述】:

在多核系统上使用多个线程读取文件会提高性能吗? 是否有磁盘支持并行访问?(不是当前访问)

【问题讨论】:

您能再解释一下您的期望吗?磁盘通常具有一组读磁头,因此一次不可能从多个柱面读取。它们通常具有一组“读取电子设备”,因此无法一次读取多个轨道。从磁盘到内存只有一条数据路径(总线),因此一次只有一次飞行传输。那么您对“并行访问”的期望是什么?板载磁盘控制器中的排队请求? 【参考方案1】:

它对 SSD 和旋转磁盘都有影响,但主要是出于不同的原因。

对于 SSD,如果请求来自单个线程,则在 SSD 检索到一个请求的数据之后到该线程可以发送其下一个请求之前,会有一个死区时间。由于 SSD 的速度非常快,因此该死区时间可能占 SSD 读取时间的很大一部分。

对于旋转磁盘,执行读取的顺序很重要。例如,如果对磁道 1、磁道 12 和磁道 2 发出读取,则在读取磁道 12 之前执行磁道 2 的读取会更有效。但如果磁道 2 的读取不执行,则不会发生这种情况。 t 直到线程处理完从磁道 12 读取的结果后才会发出。

对于 SSD,多核的帮助远大于多线程的帮助。在旋转磁盘的情况下,多个线程可以发出多个可以重新排序的读取,即使它们都必须共享同一个内核。

【讨论】:

您的回答含蓄地回答了我对上述澄清请求的评论。我发现“并行读取”是描述命令队列的一种奇怪方式,因为读取显然是序列化的。这是常见的用法吗? (答案赞成,FWIW) @another-dave IMO,只要一次不止一个阅读是“在飞行中”,它就是并行阅读。也就是说,只要您不等待一次读取的结果发出下一次读取,它至少可能是并行的。

以上是关于有没有支持并行读取的磁盘?的主要内容,如果未能解决你的问题,请参考以下文章

R foreach:并行读取和操作多个文件

硬盘RAID

磁盘阵列(RAID)

HDF5 是不是支持并发读取或写入不同文件?

如何在 Python 中从流(不是磁盘支持的文件)中读取 Excel 文件?

54.HDFS分布式文件系统