stringtranslate.com

Sistema operativo de supercomputadora

Un sistema operativo de supercomputadora es un sistema operativo destinado a supercomputadoras . Desde finales del siglo XX, los sistemas operativos de supercomputadoras han experimentado grandes transformaciones, ya que se han producido cambios fundamentales en la arquitectura de las supercomputadoras . [1] Si bien los primeros sistemas operativos se adaptaron a medida de cada supercomputadora para ganar velocidad, la tendencia se ha ido alejando de los sistemas operativos internos y hacia alguna forma de Linux , [2] que ejecuta todas las supercomputadoras de la lista TOP500 en noviembre de 2017. En 2021, las 10 mejores computadoras ejecutan, por ejemplo, Red Hat Enterprise Linux (RHEL), o alguna variante de este u otra distribución de Linux, por ejemplo, Ubuntu .

Dado que las supercomputadoras modernas masivamente paralelas suelen separar los cálculos de otros servicios mediante el uso de múltiples tipos de nodos , normalmente ejecutan diferentes sistemas operativos en diferentes nodos, por ejemplo, utilizando un núcleo ligero pequeño y eficiente como Compute Node Kernel (CNK) o Compute Node Linux (CNL) en nodos de cómputo, pero un sistema más grande como una distribución de Linux en servidores y nodos de entrada/salida (E/S). [3] [4]

Mientras que en un sistema informático multiusuario tradicional la programación de tareas es en efecto un problema de asignación de tareas para recursos de procesamiento y periféricos, en un sistema masivamente paralelo, el sistema de gestión de tareas necesita gestionar la asignación de recursos computacionales y de comunicación, así como lidiar con elegancia con las inevitables fallas de hardware cuando hay decenas de miles de procesadores presentes. [5]

Aunque la mayoría de las supercomputadoras modernas utilizan el sistema operativo Linux, [6] cada fabricante ha realizado sus propios cambios específicos en la distribución de Linux que utiliza, y no existe un estándar industrial, en parte porque las diferencias en las arquitecturas de hardware requieren cambios para optimizar el sistema operativo para cada diseño de hardware. [1] [7]

Sistemas operativos utilizados en las 500 supercomputadoras más importantes

Contexto y visión general

En los primeros días de la supercomputación, los conceptos básicos de arquitectura evolucionaban rápidamente y el software del sistema tenía que seguir las innovaciones de hardware que generalmente daban vueltas rápidamente. [1] En los primeros sistemas, los sistemas operativos se adaptaban a cada supercomputadora para ganar velocidad, pero en la prisa por desarrollarlos, surgieron serios problemas de calidad del software y, en muchos casos, el costo y la complejidad del desarrollo del software del sistema se convirtieron en un problema tan importante como el del hardware. [1]

El centro de supercomputación de la NASA Ames

En la década de 1980, el costo del desarrollo de software en Cray llegó a ser igual a lo que gastaban en hardware y esa tendencia fue en parte responsable de un alejamiento de los sistemas operativos internos hacia la adaptación de software genérico. [2] La primera ola de cambios en los sistemas operativos llegó a mediados de la década de 1980, cuando se abandonaron los sistemas operativos específicos de cada proveedor en favor de Unix . A pesar del escepticismo inicial, esta transición resultó exitosa. [1] [2]

A principios de los años 1990, se estaban produciendo cambios importantes en el software de los sistemas de supercomputación. [1] En ese momento, el uso creciente de Unix había comenzado a cambiar la forma en que se veía el software de sistemas. El uso de un lenguaje de alto nivel ( C ) para implementar el sistema operativo y la dependencia de interfaces estandarizadas contrastaban con los enfoques orientados al lenguaje ensamblador del pasado. [1] A medida que los proveedores de hardware adaptaban Unix a sus sistemas, se añadían características nuevas y útiles a Unix, por ejemplo, sistemas de archivos rápidos y programadores de procesos ajustables . [1] Sin embargo, todas las empresas que adaptaron Unix le hicieron cambios únicos, en lugar de colaborar en un estándar de la industria para crear "Unix para supercomputadoras". Esto se debió en parte a que las diferencias en sus arquitecturas requerían estos cambios para optimizar Unix para cada arquitectura. [1]

A medida que los sistemas operativos de propósito general se volvieron estables, las supercomputadoras comenzaron a tomar prestado y adaptar código crítico de los mismos, y se basaron en el rico conjunto de funciones secundarias que venían con ellos. [1] Sin embargo, al mismo tiempo, el tamaño del código para sistemas operativos de propósito general estaba creciendo rápidamente. Cuando el código basado en Unix alcanzó las 500.000 líneas de longitud, su mantenimiento y uso era un desafío. [1] Esto resultó en el cambio a usar micronúcleos que usaban un conjunto mínimo de funciones del sistema operativo. Sistemas como Mach en la Universidad Carnegie Mellon y ChorusOS en INRIA fueron ejemplos de los primeros micronúcleos. [1]

La separación del sistema operativo en componentes separados se hizo necesaria a medida que las supercomputadoras desarrollaron diferentes tipos de nodos, por ejemplo, nodos de cómputo versus nodos de E/S. Por lo tanto, las supercomputadoras modernas generalmente ejecutan diferentes sistemas operativos en diferentes nodos, por ejemplo, utilizando un núcleo liviano pequeño y eficiente como CNK o CNL en nodos de cómputo, pero un sistema más grande como un derivado de Linux en nodos de servidor y E/S. [3] [4]

Sistemas tempranos

El primer Cray-1 (muestra con componentes internos) fue entregado al cliente sin sistema operativo. [8]

El CDC 6600 , generalmente considerado el primer superordenador del mundo, ejecutaba el sistema operativo Chippewa , que luego se implementó en varios otros ordenadores de la serie CDC 6000. [9] El Chippewa era un sistema orientado al control de trabajos bastante simple derivado del anterior CDC 3000 , pero influyó en los sistemas posteriores KRONOS y SCOPE . [9] [10]

El primer Cray-1 fue entregado al Laboratorio de Los Álamos sin sistema operativo ni ningún otro software. [11] Los Álamos desarrolló el software de aplicación para él y el sistema operativo. [11] El principal sistema de tiempo compartido para el Cray 1, el Cray Time Sharing System (CTSS), fue desarrollado en los Laboratorios de Livermore como descendiente directo del Livermore Time Sharing System (LTSS) para el sistema operativo CDC 6600 de veinte años antes. [11]

En el desarrollo de supercomputadoras, los crecientes costos del software pronto se convirtieron en algo dominante, como lo demuestra el hecho de que en la década de 1980 el costo del desarrollo de software en Cray creció hasta igualar su costo de hardware. [2] Esa tendencia fue en parte responsable de un alejamiento del sistema operativo interno de Cray al sistema UNICOS basado en Unix . [2] En 1985, el Cray-2 fue el primer sistema en enviarse con el sistema operativo UNICOS. [12]

Casi al mismo tiempo, el sistema operativo EOS fue desarrollado por ETA Systems para su uso en sus supercomputadoras ETA10 . [13] Escrito en Cybil , un lenguaje similar a Pascal de Control Data Corporation , EOS destacó los problemas de estabilidad en el desarrollo de sistemas operativos estables para supercomputadoras y finalmente se ofreció un sistema similar a Unix en la misma máquina. [13] [14] Las lecciones aprendidas del desarrollo del software del sistema ETA incluyeron el alto nivel de riesgo asociado con el desarrollo de un nuevo sistema operativo de supercomputadora y las ventajas de usar Unix con su gran base existente de bibliotecas de software de sistema. [13]

A mediados de los años 1990, a pesar de la inversión existente en sistemas operativos más antiguos, la tendencia era hacia el uso de sistemas basados ​​en Unix, que también facilitaban el uso de interfaces gráficas de usuario (GUI) interactivas para la computación científica en múltiples plataformas. [15] El movimiento hacia un sistema operativo de consumo tuvo oponentes, que citaron el ritmo rápido y el enfoque del desarrollo de Linux como un obstáculo importante para la adopción. [16] Como escribió un autor "Linux probablemente se pondrá al día, pero ahora tenemos sistemas a gran escala". Sin embargo, esa tendencia continuó ganando impulso y para 2005, prácticamente todas las supercomputadoras usaban algún sistema operativo similar a Unix . [17] Estas variantes de Unix incluían IBM AIX , el sistema Linux de código abierto y otras adaptaciones como UNICOS de Cray. [17] A fines del siglo XX, se estimaba que Linux tenía la mayor parte del pastel de la supercomputación. [1] [18]

Enfoques modernos

La supercomputadora Blue Gene /P en el Laboratorio Nacional Argonne

La supercomputadora IBM Blue Gene utiliza el sistema operativo CNK en los nodos de cómputo, pero utiliza un núcleo basado en Linux modificado llamado I/O Node Kernel ( INK ) en los nodos de E/S. [3] [19] CNK es un núcleo ligero que se ejecuta en cada nodo y admite una única aplicación que se ejecuta para un único usuario en ese nodo. En aras de una operación eficiente, el diseño de CNK se mantuvo simple y mínimo, con la memoria física mapeada estáticamente y el CNK sin necesitar ni proporcionar programación o cambio de contexto. [3] CNK ni siquiera implementa E/S de archivo en el nodo de cómputo, sino que la delega a nodos de E/S dedicados. [19] Sin embargo, dado que en Blue Gene varios nodos de cómputo comparten un único nodo de E/S, el sistema operativo del nodo de E/S requiere multitarea, de ahí la selección del sistema operativo basado en Linux. [3] [19]

Mientras que en los sistemas informáticos multiusuario tradicionales y en las primeras supercomputadoras, la programación de tareas era en realidad un problema de programación de tareas para recursos de procesamiento y periféricos, en un sistema masivamente paralelo, el sistema de gestión de tareas necesita gestionar la asignación de recursos tanto computacionales como de comunicación. [5] Es esencial ajustar la programación de tareas y el sistema operativo en diferentes configuraciones de una supercomputadora. Un programador de tareas paralelas típico tiene un programador maestro que instruye a una cierta cantidad de programadores esclavos para que inicien, monitoreen y controlen las tareas paralelas , y recibe periódicamente informes de ellos sobre el estado del progreso de las tareas. [5]

Algunos, pero no todos los programadores de supercomputadoras intentan mantener la localidad de la ejecución de trabajos. El programador PBS Pro utilizado en los sistemas Cray XT3 y Cray XT4 no intenta optimizar la localidad en su interconexión de toro tridimensional , sino que simplemente utiliza el primer procesador disponible. [20] Por otro lado, el programador de IBM en las supercomputadoras Blue Gene apunta a explotar la localidad y minimizar la contención de la red asignando tareas de la misma aplicación a uno o más planos intermedios de un grupo de nodos de 8x8x8. [20] El programador Slurm Workload Manager utiliza un algoritmo de mejor ajuste y realiza una programación de curva de Hilbert para optimizar la localidad de las asignaciones de tareas. [20] Varias supercomputadoras modernas como la Tianhe-2 utilizan Slurm, que arbitra la contención de recursos en todo el sistema. Slurm es de código abierto , basado en Linux, muy escalable y puede administrar miles de nodos en un clúster de computadoras con un rendimiento sostenido de más de 100.000 trabajos por hora. [21] [22]

Véase también

Referencias

  1. ^ Enciclopedia abcdefghijklm de computación paralela por David Padua 2011 ISBN  0-387-09765-1 páginas 426–429.
  2. ^ abcde Máquinas conocedoras: ensayos sobre el cambio técnico por Donald MacKenzie 1998 ISBN 0-262-63188-1 página 149–151. 
  3. ^ abcde Euro-Par 2004 Procesamiento paralelo: Décima Conferencia Internacional Euro-Par 2004, por Marco Danelutto, Marco Vanneschi y Domenico Laforenza ISBN 3-540-22924-8 página 835. 
  4. ^ ab Una evaluación del Oak Ridge National Laboratory Cray XT3 por Sadaf R. Alam, et al., International Journal of High Performance Computing Applications, febrero de 2008 vol. 22 no. 1 52–80.
  5. ^ abc Arquitectura de gestión de trabajos abiertos para la supercomputadora Blue Gene/L por Yariv Aridor et al en Estrategias de programación de trabajos para procesamiento paralelo por Dror G. Feitelson 2005 ISBN 978-3-540-31024-2 páginas 95–101. 
  6. ^ Vaughn-Nichols, Steven J. (18 de junio de 2013). «Linux sigue dominando las supercomputadoras». ZDNet . Consultado el 20 de junio de 2013 .
  7. ^ "Top500 OS chart". Top500.org. Archivado desde el original el 5 de marzo de 2012. Consultado el 31 de octubre de 2010 .
  8. ^ La computadora en la mira: apoyo gubernamental y competencia internacional por Kenneth Flamm 1987 ISBN 0-8157-2851-4 página 82 [1] 
  9. ^ ab La revolución informática en Canadá por John N. Vardalas 2001 ISBN 0-262-22064-4 página 258. 
  10. ^ Diseño de una computadora: Control Data 6600 por James E. Thornton, Scott, Foresman Press 1970 página 163.
  11. ^ abc La computadora en la mira: apoyo gubernamental y competencia internacional por Kenneth Flamm 1987 ISBN 0-8157-2851-4 páginas 81–83. 
  12. ^ Lester T. Davis, El equilibrio de poder, una breve historia de las arquitecturas de hardware de Cray Research en "Computación de alto rendimiento: tecnología, métodos y aplicaciones" de JJ Dongarra 1995 ISBN 0-444-82163-5 página 126 [2]. 
  13. ^ abc Lloyd M. Thorndyke, La desaparición de los sistemas ETA en "Fronteras de la supercomputación II" por Karyn R. Ames, Alan Brenner 1994 ISBN 0-520-08401-2 páginas 489–497. 
  14. ^ Pasado, presente, paralelo: un estudio de los sistemas informáticos paralelos disponibles por Arthur Trew 1991 ISBN 3-540-19664-1 página 326. 
  15. ^ Fronteras de la supercomputación II por Karyn R. Ames, Alan Brenner 1994 ISBN 0-520-08401-2 página 356. 
  16. ^ Brightwell, Ron Riesen, Rolf Maccabe, Arthur. "Sobre la idoneidad de los sistemas operativos básicos para sistemas informáticos equilibrados a gran escala" (PDF) . Consultado el 29 de enero de 2013 .{{cite web}}: CS1 maint: varios nombres: lista de autores ( enlace )
  17. ^ ab Poniéndose al día: el futuro de la supercomputación por Susan L. Graham, Marc Snir, Cynthia A. Patterson, Consejo Nacional de Investigación 2005 ISBN 0-309-09502-6 página 136. 
  18. ^ Revista Forbes, 15/03/05: Linux domina las supercomputadoras
  19. ^ abc Euro-Par 2006 Procesamiento paralelo: 12.ª Conferencia internacional Euro-Par , 2006, por Wolfgang E. Nagel, Wolfgang V. Walter y Wolfgang Lehner ISBN 3-540-37783-2
  20. ^ abc Estrategias de programación de trabajos para procesamiento paralelo: por Eitan Frachtenberg y Uwe Schwiegelshohn 2010 ISBN 3-642-04632-0 páginas 138–144. 
  21. ^ SLURM en SchedMD
  22. ^ Jette, M. y M. Grondona, SLURM: Utilidad sencilla de Linux para la gestión de recursos en las Actas de la Conferencia ClusterWorld, San José, California, junio de 2003 [3]