Solución de clúster heterogéneo para I+D

Solución de clúster heterogéneo para I+D

Trabajo en un laboratorio de investigación con múltiples máquinas físicas con diferentes especificaciones. Las máquinas tienen diferentes CPU (algunas Intel, algunas AMD), diferentes tamaños de RAM, algunas tienen GPU discretas y otras no.

Nuestra solución actual se basa en SSSD y Kerberos, para que los usuarios puedan iniciar sesión en sus cuentas desde cada terminal y tener acceso a sus archivos. El problema es que de esta manera, los usuarios están "atados" a una máquina mientras trabajan, lo que resulta en una asignación de recursos subóptima.

Por lo tanto, estamos buscando una solución alternativa para nuestro clúster. Nuestro principal objetivo es unificar verdaderamente todas las máquinas, es decir, desde el punto de vista del usuario, el cluster consta de una única máquina. Sin embargo, por lo que hemos deducido, una solución como Slurm no es ideal, ya que no queremos depender de un programador de trabajos. La solución que imaginamos es más o menos así: cuando un usuario inicia sesión, puede especificar las especificaciones que necesita (RAM, número de CPU, GPU discreta, etc.), luego se crea un entorno virtualizado con las especificaciones deseadas (una imagen de Docker). , o una máquina virtual, por ejemplo). Luego, el usuario puede utilizar ese entorno como una "computadora" normal. No obstante, los recursos para este entorno virtual deben extraerse del clúster y no de una sola máquina. También debería ser posible compartir grandes conjuntos de datos a los que pueda acceder cualquier "entorno virtual". El clúster también debe tener un sistema de autenticación y permisos.

Hemos estado buscando herramientas de agrupación que puedan lograr nuestro objetivo, pero no estamos seguros de cuál elegir. Hemos analizado Mesos, OS/DB, Docker Swarm, Kubernetes y oVirt, pero no sabemos si lo que queremos se puede lograr con estas herramientas y, de ser así, cuál es la mejor opción. Creemos que los contenedores podrían ser una buena opción para la producción, pero probablemente no la mejor opción para la I+D.¿Pueden ayudarnos y darnos algunos puntos destacados sobre qué hacer y por dónde empezar?

Saludos cordiales, pinxau1000

Respuesta1

De acuerdo con @NikitaKipriyanov en que no se pueden combinar recursos de múltiples sistemas en una sola imagen, aunque ha habido productos comerciales que hicieron esto en el pasado y confiaron en infiniband para mantener baja la latencia (en mi humilde opinión, no funcionó bien). Slurm se puede utilizar como programador, pero también se puede utilizar para trabajos interactivos y luego puede ser más bien un administrador de recursos.

Cada trabajo puede especificar la cantidad de núcleos de CPU, la cantidad y el tipo de GPU, la cantidad de memoria, etc. Luego, el programador seleccionará un sistema apropiado y no utilizado y le dará un indicador de shell. El reenvío X11 está disponible si es necesario.

Además, los contenedores pueden resultar muy útiles en un entorno de I+D. No debes tirarlos porque no ves la utilidad pero no son la solución a este problema.

Respuesta2

No es posible.

  1. Diferentes CPU significan que las instrucciones pueden diferir. Esto es una pesadilla si desea migrar código entre CPU.
  2. La latencia de la memoria es de nanosegundos, la latencia de la red es de decenas de microsegundos.

Dependiendo de su carga de trabajo, es posible traducir su carga de trabajo para ejecutarla en varias computadoras y comunicar datos entre ellas. Para algunos problemas, esto es trivial y puede dividir el conjunto de datos en particiones más pequeñas y trabajar en ellas en paralelo. Para otras cargas de trabajo esto es difícil. Pero esto requiere modificaciones en la carga de trabajo, no en el sistema operativo.

información relacionada