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

Часто используемые файлы и использование ввода-вывода

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

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

Системная среда - Linux, CentOS 5.3.

Разрешение пути пропорционально (хотя и не линейно) количеству файлов в каталоге. Это верно даже для определения абсолютных путей, потому что файловой системе по-прежнему необходимо сканировать имена файлов в каждом блоке каталогов для определения пути. Разные файловые системы имеют разные характеристики разрешения, но в целом вы начнете замечать снижение производительности около 10 000 файлов.

ext3 делает несколько приятных вещей:

http://www.ibm.com/developerworks/linux/library/l-fs8.html

См. Заголовок раздела: Параметры ведения журнала и задержка записи.
Это позволяет вам "настроить" ext3 для вашего приложения.

Если у вас достаточно памяти для хранения всех файлов, рассматривали ли вы их кеширование в ОЗУ? http://www.linuxmaza.com/system-administration/how-to-mount-ramfs-tmpfs-in-linux/

Если каталоги не находятся на разных дисках или RAID-массивах, вы не увидите заметной разницы, находятся они все в одном каталоге или нет. Операции ввода-вывода для каждого диска помещаются в одну очередь. Если они находятся на разных RAID-массивах, вы увидите заметное преимущество, которое ищете.