Сокращение времени поиска при чтении множества небольших файлов

Мне нужно написать код (на любом языке) для обработки 10 000 файлов, находящихся в локальной файловой системе Linux. Каждый файл имеет размер ~ 500 КБ и состоит из записей фиксированного размера по 4 КБ каждая.

Время обработки одной записи незначительно, и записи могут обрабатываться в любом порядке, как внутри, так и между разными файлами.

Наивная реализация будет читать файлы один за другим в произвольном порядке. Однако, поскольку мои диски очень быстро читаются, но медленны при поиске, это почти наверняка приведет к созданию кода, связанного поиском по диску.

Есть ли способ кодировать чтение так, чтобы оно ограничивалось пропускной способностью диска, а не временем поиска?

Одно из направлений исследования — попытаться получить приблизительное представление о том, где находятся файлы на диске, и использовать это для упорядочивания операций чтения. Однако я не уверен, какой API можно использовать для этого.

Я, конечно, открыт для любых других идей.

Файловая система ext4, но это обсуждается.

16
задан NPE 23 March 2012 в 14:31
поделиться