Estoy intentando copiar un archivo de 200 GB desde un montaje NFS a un disco local. El disco local es un sistema de archivos XFS en un LVM encima de un sistema RAID 5 (controlador RAID de hardware).
Estoy usando rsync
para monitorear la velocidad de transferencia. Al principio, la velocidad IO es de unos 200 MB/s, estable durante los primeros 18 GB. Pero luego el rendimiento cae en un factor de 10 a 20 y nunca recupera el ritmo inicial. A veces alcanza unos 50-100 MB/s, pero sólo durante unos segundos, y luego el proceso parece bloquearse por un momento.
Al mismo tiempo, todas las operaciones de estadísticas de archivos en el sistema de archivos de destino se bloquean durante mucho tiempo (minutos). Además, la interrupción del proceso de copia se bloquea durante varios minutos. Una eliminación posterior del archivo parcialmente copiado también tarda varios minutos.
¿Alguna idea de que puede estar causando esto?
Respuesta1
Gracias al comentario de Jet, investigué el almacenamiento en caché del disco IO en Linux. Resulta que, como el sistema tiene mucha RAM (48 GB), que está casi libre, se utiliza mucha para la caché de E/S.
Supervisé /proc/meminfo y busqué los campos 'Sucio' (páginas de caché de E/S sucias) y 'Reescritura' (páginas sucias escritas en el disco).
watch -n1 -- "grep -E Dirty|Writeback /proc/meminfo"
Muestra que Dirty aumenta a aproximadamente 18 GB, luego baja nuevamente, mientras que Writeback aumenta, una vez que se han escrito páginas Dirty, vuelve a crecer, etc. Al monitorear el disco io usando iostat
uno se ve que durante el almacenamiento en caché el disco no escribe, solo mientras se realiza 'Writeback'. disminuye los datos que se escriben en el disco. La velocidad de escritura es de unos 15 MB/s.
Entonces, los primeros 18 GB son rápidos, se escriben en el caché, pero luego, cuando ocurre la escritura real, se ralentiza y mientras se escribe, la E/S del disco se satura y se bloquea hasta que todas las páginas sucias se envían al disco.