Назад | Перейти на главную страницу

Уменьшают ли большие размеры папок производительность ввода-вывода?

У нас есть процесс сервера Linux, который записывает несколько тысяч файлов в каталог, удаляет файлы, а затем записывает еще несколько тысяч файлов в тот же каталог, не удаляя каталог. Я начинаю видеть, что процесс написания становится все медленнее и медленнее.

Мой вопрос таков: размер каталога в папке вырос с 4096 до более 200000, как видно из этого вывода ls -l.

root @ ad57rs0b # ls -l 15000PN5AIA3I6_B всего 232 drwxr-xr-x 2 chef chef 233472 30 мая 21:35 штрих-коды

Могут ли эти большие размеры каталогов снижать производительность на ext3?

Спасибо.

Аарон

Да, большие размеры каталогов могут быть проблемой. Как правило, их лучше избегать, хешируя файлы в подкаталоги. Если это не вариант, есть функция ext3, которая может значительно улучшить производительность поиска в больших каталогах:

tune2fs -O dir_index /dev/$DEVICE
e2fsck -D /dev/$DEVICE

Это позволяет использовать хэши в виде b-дерева для данных индекса каталогов, значительно сокращая время поиска. Конечно, возможно, в вашей установке это уже включено. Вы можете проверить, запустив эту команду и ища dir_index на выходе:

tune2fs -l /dev/$DEVICE | grep 'features:'

РЕДАКТИРОВАТЬ: Кроме того, вы можете рассмотреть возможность установки noatime как вариант крепления. Это не специальная настройка для больших каталогов, но может предложить значительные улучшения производительности, когда происходит много операций с файловой системой.