Существуют значительные улучшения в скорости чтения файлов в физическом порядке из вращающегося хранилища.Механизмы планирования ввода-вывода операционной системы выполняют любую реальную работу, только если есть несколько процессов или потоков, борющихся за ввод-вывод, потому что у них нет информации о том, какие файлы вы планируете читать в будущем.Следовательно, кроме простого упреждающего чтения, они обычно вообще не помогают.
Более того, Linux ухудшает ваши шаблоны доступа во время сканирования каталогов, возвращая записи каталога в пространство пользователя в порядке хеш-таблиц, а не в физическом порядке.,К счастью, Linux также предоставляет системные вызовы для определения физического местоположения файла и того, хранится ли файл на ротационном устройстве, чтобы вы могли восстановить некоторые потери.Посмотрите, например, этот патч, который я представил dpkg несколько лет назад:
http://lists.debian.org/debian-dpkg/2009/11/msg00002.html
Этот патч не включает в себя тест для ротационных устройств, потому что эта функция не была добавлена в Linux до 2012 года:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ef00f59c95fe6e002e7c6e3663cdea65e253f4cc
Я также использовал запатентованную версию Mutt, которая сканировала бы Maildirs в физическом порядке, обычно давая увеличение скорости в 5-10 раз.
Примечаниечто иноды небольшие, с большой предварительной выборкой и кэшированием, поэтому открытие файлов для определения их физического местоположения перед чтением стоит затрат.Это правда, что обычные инструменты, такие как tar, rsync, cp и PostgreSQL, не используют эти методы, и простая истина заключается в том, что это делает их излишне медленными.