Personalización de la escritura diferida de archivos en Azure HPC Cache

Los usuarios de HPC Cache pueden solicitar que la memoria caché escriba archivos individuales específicos en el almacenamiento back-end a petición mediante la utilidad flush_file.py. Esta utilidad es un paquete de software descargado por separado que se instala y usa en máquinas cliente Linux.

Esta característica está diseñada para situaciones en las que desea que los cambios en los archivos almacenados en caché estén disponibles lo antes posible para los sistemas que no componen la memoria caché.

Por ejemplo, puede usar Azure HPC Cache para escalar los trabajos de procesos en la nube, pero almacenar el conjunto de datos de forma permanente en un centro de datos local. Si las tareas de proceso se producen en el centro de datos que depende de los cambios creados con Azure HPC Cache, puede usar esta utilidad para volver a "insertar" la salida o los cambios generados por una tarea en la nube en el almacenamiento NAS local. Esto permite que los recursos de proceso locales usen casi inmediatamente los nuevos archivos.

Elegir entre escritura diferida personalizada y vaciado

Puede forzar la escritura de datos con la opción de "vaciado de destino de almacenamiento" integrada en Azure HPC Cache, pero este enfoque podría no ser adecuado para todas las situaciones.

  • La escritura de todos los archivos modificados en el sistema de almacenamiento puede tardar varios minutos o incluso horas, en función de la cantidad de datos y la velocidad del vínculo de red con el sistema local. Además, no puede elegir escribir solo los archivos con los que ha terminado; los archivos que todavía se están modificando se incluirán en este cálculo.

  • La memoria caché podría bloquear el servicio de algunas solicitudes de ese destino de almacenamiento durante el proceso de vaciado. Esto puede retrasar el procesamiento si hay otros clientes de proceso que usan archivos que residen en el mismo destino de almacenamiento.

  • El desencadenamiento de esta acción requiere acceso de colaborador a Azure Resource Manager, y es posible que los usuarios finales no lo tengan.

Por ejemplo, puede tener varios trabajos de procesos paralelos (pero no superpuestos) que consumen datos que residen en el mismo destino de almacenamiento de HPC Cache. Cuando se complete un trabajo, tendrá que escribir inmediatamente el resultado del trabajo de la memoria caché en el almacenamiento a largo plazo en el back-end.

Tiene tres opciones:

  • Esperar a que los archivos almacenados en caché se vuelvan a escribir automáticamente desde la memoria caché, pero los archivos pueden quedarse en la memoria caché durante más de una hora antes de que se vuelvan a escribir por completo. El tiempo depende del retraso de escritura diferida del modelo de uso de caché, junto con otros factores, como el rendimiento del vínculo de red y el tamaño de los archivos. (Obtenga más información sobre el retraso de escritura diferida en Descripción de los modelos de uso de caché).

  • Vaciar inmediatamente los archivos almacenados en caché para todo el destino de almacenamiento, pero eso interrumpiría otros trabajos de procesos que también usan los datos de este destino de almacenamiento.

  • Use esta utilidad de escritura diferida personalizada para enviar una solicitud NFS especial a la memoria caché y volver a escribir solo los archivos específicos que desee. Este escenario no interrumpe el acceso a otros clientes y se puede desencadenar en cualquier momento de la tarea.

Acerca de la utilidad de escritura diferida

La utilidad de escritura diferida contiene un script que puede usar para especificar archivos individuales que se escribirán desde la memoria caché en el sistema de almacenamiento a largo plazo.

El script toma un flujo de entrada de los archivos que se van a escribir, además de la ruta de acceso del espacio de nombres de la memoria caché a la exportación de destino de almacenamiento, y una dirección IP de montaje de HPC Cache.

El script usa una llamada "commit" de NFSv3 con argumentos especiales habilitados. El cliente nfs-common de Linux no puede pasar estos argumentos correctamente, por lo que la utilidad flush_file.py usa un emulador de cliente NFS en una biblioteca de Python para comunicarse con el servicio NFS de HPC Cache. La biblioteca incluye todo lo necesario, de manera que omite las limitaciones que podrían existir en el cliente NFS basado en kernel de Linux del cliente del proceso.

Para usar esta característica, deberá hacer lo siguiente:

Obtenga más información sobre cómo instalar y usar el script flush_file.py en el repositorio de GitHub.