【发布时间】:2012-01-17 16:04:11
【问题描述】:
我在 RAID 5 (4 x 7.2k @ 3TB) 系统上有一些 2TB 只读(一旦创建就不会写入)文件。
现在我有一些线程想要读取该文件的某些部分。 每个线程都有一个它需要的块数组。 每个块都由要读取的文件偏移量(位置)和大小(大部分约为 300 字节)寻址。
读取此数据的最快方法是什么。 我不关心 CPU 周期,(磁盘)延迟才是最重要的。 因此,如果可能的话,我想利用硬盘的 NCQ。
由于文件被高度压缩并且会随机访问并且我确切地知道位置,我没有其他方法来优化它。
- 我应该将文件读取集中到一个线程吗?
- 我应该保持文件打开吗?
- 是否应该每个线程(可能大约 30 个)同时打开每个文件,新线程(来自 Web 服务器)是什么情况?
- 如果我等待 100 毫秒并按文件偏移量(最低优先)对读数进行排序,会有帮助吗?
读取数据的最佳方式是什么?您有经验、技巧、提示吗?
【问题讨论】:
标签: c# .net file-io binary-data