¿Por qué ls y mkdir tardan mucho tiempo aunque solo haya unos pocos archivos en el directorio de trabajo?

¿Por qué ls y mkdir tardan mucho tiempo aunque solo haya unos pocos archivos en el directorio de trabajo?

He escrito muchos archivos en un sistema de archivos de red; Está escrito en una estructura de directorios tal que cada directorio hoja en la estructura de directorios tiene unos pocos (alrededor de mil) archivos. La parte de la estructura de directorios que contiene los archivos relevantes es bastante plana.

Si ejecuto ls o mkdir foo, la operación correspondiente lleva mucho tiempo (alrededor de 10 minutos).

¿Por qué está pasando esto? ¿Cómo puedo ejecutar operaciones como ls o mkdir de una manera más eficiente en términos de tiempo?

Respuesta1

Estás utilizando un sistema de archivos de red, por lo que tu velocidad puede estar limitada por la red en lugar del disco.

Cuando ejecuta ls, la operación básica es leer todos los archivos, ordenarlos y luego imprimirlos. Esto significa que cada uno lsnecesitará leer varios miles de entradas de archivos. El almacenamiento en caché puede ayudar, pero sigue siendo un proceso lento.

De manera similar, cuando ejecuta mkdirel directorio, debe verificarlo y asegúrese de que no lo tenga ya.

Una solución sería reducir el número de archivos por directorio, haciendo que la estructuraestrecho y profundoen lugarpoco profundo y ancho.

información relacionada