Linux + Cluster = LUSTRE. Un filesystem open source diseñado para High Performance Computing
La disciplina que investiga cómo disponibilizar la capacidad suficiente para resolver los problemas computacionalmente más intensos se llama High Performance Computing (HPC).
Las aplicaciones prácticas que requieren hoy este extra de performance varían desde el entrenamiento de modelos de deep learning, hasta simulaciones para modelar, por ejemplo, los movimientos de las estrellas. También es útil para la edición y renderización de video.
Desde que los usuarios se encontraron con problemas que no podían resolver en los límites de una única computadora (se cree que entre los 50’s y los 60’s) se empezaron a diseñar intuitivamente los primeros clusters. Pero el gran salto en el uso de esta tecnología se produce en 1989 de la mano de un proyecto open source la Parallel Virtual Machine.
Resolver problemas “grandes”, supone tres desafíos para el hardware que está debajo: alta capacidad de memoria, de procesamiento y de leer y escribir archivos (I/O). Mientras que las dos primeras mejoraron exponencialmente en los últimos 20 años, los discos rígidos siguen girando a la misma velocidad y se convirtieron un un cuello de botella para las aplicaciones de HPC.
En la arquitectura de Lustre se reservan un conjunto de nodos para comunicarse con el storage, otro conjunto de nodos para manejar la metadata de los archivos y los nodos “clientes” (que son los que efectivamente van a trabajar en los problemas) quedan libres de interactuar con el hardware de almacenamiento.
Esto les permite a los filesystems Lustre escalar de forma prácticamente infinita y ahorrar costos. Un proyecto open source al que tenemos mucho para agradecerle y una aplicación más de mis dos principios de programación favoritos:
- Un elefante se come de a partes, divide & conquer
- Decoupling, decoupling, decoupling