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

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

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

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

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

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

Спасибо.

Аарон

решение1

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

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

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

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

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

Связанный контент