
Tenemos un trabajo cronificado en un servidor web de producción que requiere tarar archivos de todo el sistema de archivos. Se ejecuta durante unos 105 minutos y, durante ese tiempo, Apache comienza a intercambiar porque toda esa lectura de unos pocos gigas de archivos ha ampliado la cantidad de memoria para el caché del sistema de archivos.
Los datos que lee tar no necesitan vivir en la memoria caché del sistema de archivos. Va al archivo tar y listo. ¿Hay algo que podamos decir como tar cvf whatever/ --no-system-file-buffer-reads
? Mi lectura de man tar
no arroja nada que parezca ayudar.
No es necesario señalar que esto puede verse como una situación de "¡Doctor, me duele cuando hago eso! Así que no haga eso". De alguna manera necesitamos volcar archivos en un archivo tar, por lo que no hacerlo no es una opción.
Respuesta1
creo que esto ha sido respondidoaquí:
Ahí está elnocacheutilidad, que puede anteponerse a un comando como ionice y nice. Funciona precargando una biblioteca que agrega
posix_fadvise
laPOSIX_FADV_DONTNEED
bandera a cualquier convocatoria abierta.En términos simples, informa al kernel que no es necesario el almacenamiento en caché para ese archivo en particular; El kernel normalmente no almacenará en caché el archivo. Veraquípara los detalles técnicos.
Hace maravillas para cualquier trabajo de copia de gran tamaño, por ejemplo, si desea realizar una copia de seguridad de un disco de varios terabytes en segundo plano con el menor impacto posible en su sistema en ejecución, puede hacer algo más
nice -n19 ionice -c3 nocache cp -a /vol /vol2
.