¿Los tamaños de carpetas grandes ralentizan el rendimiento de E/S?

¿Los tamaños de carpetas grandes ralentizan el rendimiento de E/S?

Tenemos un proceso de servidor Linux que escribe unos miles de archivos en un directorio, los elimina y luego escribe unos miles de archivos más en el mismo directorio sin eliminar el directorio. Lo que estoy empezando a ver es que el proceso de escritura es cada vez más lento.

Mi pregunta es la siguiente: el tamaño del directorio de la carpeta ha aumentado de 4096 a más de 200000, como se ve en este resultado de ls -l.

root@ad57rs0b# ls -l 15000PN5AIA3I6_B total 232 drwxr-xr-x 2 chef chef 233472 30 de mayo 21:35 códigos de barras

En ext3, ¿pueden estos directorios de gran tamaño ralentizar el rendimiento?

Gracias.

Aarón

Respuesta1

Sí, los directorios de gran tamaño pueden ser un problema. Generalmente es mejor evitarlos agrupando los archivos en subdirectorios. Si esa no es una opción, existe una característica ext3 que puede mejorar drásticamente el rendimiento de la búsqueda en directorios grandes:

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

Esto permite hashes de árbol b de datos de índice de directorio, lo que mejora drásticamente el tiempo de búsqueda. Por supuesto, es posible que su instalación ya tenga esto habilitado. Puede comprobarlo ejecutando este comando y buscando dir_indexen el resultado:

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

EDITAR: Además, es posible que desee considerar la configuración noatimecomo opción de montaje. No es un ajuste específico para directorios grandes, pero puede ofrecer mejoras considerables en el rendimiento cuando hay mucha actividad en el sistema de archivos.

información relacionada