在阅读许多小文件时减​​少寻道时间

NPE*_*NPE 16 language-agnostic linux filesystems

我需要编写一些代码(用任何语言)来处理驻留在本地Linux文件系统上的10,000个文件.每个文件大小约为500KB,由每个4KB的固定大小的记录组成.

每条记录的处理时间可以忽略不计,并且可以在不同文件内和跨文件的任何顺序处理记录.

一个天真的实现将以一些任意的顺序逐个读取文件.但是,由于我的磁盘读取速度非常快,但搜索速度很慢,这几乎肯定会产生受磁盘搜索限制的代码.

是否有任何方法可以对读取进行编码,使其受磁盘吞吐量的限制,而不是寻求时间?

一个问题是尝试大致了解文件在磁盘上的位置,并使用它来对读取进行排序.但是,我不确定可以使用什么API来做到这一点.

我当然愿意接受任何其他想法.

文件系统是ext4,但这是可以协商的.

Wim*_*nen 6

也许你可以通过使用aio_read快速连续安排所有这些来读取.这会将所有读取一次放入文件系统读取队列,然后文件系统实现可以以最小化搜索的方式完成读取.