
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 ls
necesitará leer varios miles de entradas de archivos. El almacenamiento en caché puede ayudar, pero sigue siendo un proceso lento.
De manera similar, cuando ejecuta mkdir
el 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.