Мне нужно написать код (на любом языке) для обработки 10 000 файлов, находящихся в локальной файловой системе Linux. Каждый файл имеет размер ~ 500 КБ и состоит из записей фиксированного размера по 4 КБ каждая.
Время обработки одной записи незначительно, и записи могут обрабатываться в любом порядке, как внутри, так и между разными файлами.
Наивная реализация будет читать файлы один за другим в произвольном порядке. Однако, поскольку мои диски очень быстро читаются, но медленны при поиске, это почти наверняка приведет к созданию кода, связанного поиском по диску.
Есть ли способ кодировать чтение так, чтобы оно ограничивалось пропускной способностью диска, а не временем поиска?
Одно из направлений исследования — попытаться получить приблизительное представление о том, где находятся файлы на диске, и использовать это для упорядочивания операций чтения. Однако я не уверен, какой API можно использовать для этого.
Я, конечно, открыт для любых других идей.
Файловая система ext4, но это обсуждается.