Software de Plantificación para Generación Dinámica de Nodos de un Cluster en Linux Daniel Burbano, MCpE César Eduardo Guzmán González, IS Resumen Abstract El presente artículo, describe la implementación de la primera fase del proyecto EVA R-GRID[1], propuesto por el equipo de investigación en software libre de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque (EQUIS). The present article describes the development of the first phase of the EVA R-Grid project proposed by the Free Software Research Group (EQUIS) of the Systems Engineering Faculty. Esta fase tiene como objetivo principal desarrollar un software que permita a un computador formar parte de un Cluster cuando este se encuentre inactivo mediante la recolección de datos de desempeño del mismo. This phase main goal is the development of a software that allows a computer become a part of a Cluster when it is idle, through idleness detection. The idleness detection is accomplished through the collecting of performance data of the different components of the computer. Palabras clave: Computación paralela, Proceso de cargue, cluster, periodos de inactividad, inactividad. Keywords: Parallel computing, boot process, cluster ,idle periods, idleness. 20 Universidad El Bosque - Facultad de Ingeniería de Sistemas I. INTRODUCCIÓN Actualmente las máquinas de la sala de computadores de la Facultad de Ingeniería de Sistemas de la Universidad El Bosque son encendidas en la mañana y apagadas alrededor de las diez de la noche, lo que indica que están funcionando mas de doce horas diarias. Teniendo en cuenta que en gran medida estos equipos se encuentran la mayor parte del tiempo simplemente encendidos en espera de ser utilizados, como en las ocasiones en que en la sala no hay clase y se encuentran disponibles para el uso de cualquier estudiante, en muchos no hay una persona haciendo uso de ellos; ya sea utilizando un procesador de texto o navegando en Internet; y en gran parte de las veces cuando se está dictando una clase, los grupos de estudiantes son tan pequeños que varios computadores no son utilizados, esto genera intervalos de tiempo en que permanecen estos equipos encendidos sin ser empleados en la realización de algún trabajo, además al terminar las clases algunos computadores permanecen encendidos toda la noche hasta la mañana del día siguiente por un periodo aproximado de 8 horas, desperdiciando poder de procesamiento, memoria y recursos de almacenamiento. Para aprovechar esos periodos de inactividad de los computadores, el grupo de investigación en Software Libre de la Facultad de Ingeniería de Sistemas (EQUIS) ha propuesto el desarrollo del Entorno Vir tual de Aprendizaje Remoto en Grid (EVA R-Grid). El objetivo principal del proyecto EVA R-Grid es desarrollar una plataforma de aprendizaje virtual que permita realizar prácticas reales mediante Internet utilizando una arquitectura de Grid, ofreciendo al estudiante un ambiente de trabajo que le permite realizar sus prácticas usando los recursos informáticos con los que dispone el cluster accediendo a ellos en el momento y lugar que se ajuste a sus necesidades. El proyecto inicialmente está enfocado a la enseñanza de herramientas de software libre pero no se quiere limitar solo a estas herramientas. Para el funcionamiento del Cluster, y la puesta en marcha del proyecto, una de las primeras etapas es la programación y la planificación de los recursos que formarán parte del Cluster; dado que las máquinas de las salas de computadores de la Facultad de Sistemas, son de uso regular por los estudiantes, es necesario hacer que los equipos formen parte del Cluster cuando no están siendo utilizados. Para que el tiempo de operación del Cluster sea lo más óptimo, se necesita que los computadores estén operando sobre Linux el mayor tiempo posible, a causa de esto se hace necesario programar la entrada automática de los equipos que forman parte del Cluster. En las siguientes secciones se explica el diseño del sistema de monitoreo que comprende dos módulos principales, el primer módulo que sirve para el cambio automático del sistema operativo con el cual inicia el computador y el sistema de detección de inactividad del computador, que como su nombre lo indica detecta cuando el computador no ha sido utilizado. II. DISEÑO DE LA SOLUCIÓN Como se mencionó anteriormente, los computadores son utilizados por estudiantes, evitando esto que los mismos se ejecuten constantemente sobre el sistema operativo Linux. Se necesita un sistema que permita cambiar automáticamente el sistema operativo sobre el cual se encuentra trabajando el computador para que pase de estar ejecutando Windows a ejecutar Linux, permitiendo de esta manera que el computador pase a formar parte del cluster. El rol principal del sistema es detectar los periodos de tiempo en los computadores en los que se encuentra instalado y que pertenecen a la red, para así poder aprovechar estos periodos y permitir que sus recursos sean utilizados por el cluster. Basado en la detección de estos intervalos de tiempo, el sistema reinicia el computador para que inicie el sistema operativo Linux, sin la intervención de ningún usuario. El diseño del sistema se puede dividir en dos partes principales, una que maneja la elección del sistema operativo cuando el computador es iniciado y otra que maneja la detección de los intervalos de tiempo en los que la máquina está inactiva. Elección del Sistema Operativo El proceso de carga en los computadores [6] se inicia con el BIOS. Este controla el inicio del computador, después del POST (Power On Self Test) cuando los componentes de hardware son inicializados, el BIOS del sistema identifica el dispositivo de arranque que generalmente es una partición del disco duro o un disquete, en el caso del disco duro, lee el primer sector físico de este llamado Master Boot Record (MBR) y lo carga en memoria, una vez cargado en memoria, transfiere el control al MBR para iniciar el proceso de carga del sistema operativo. El proceso de arranque del computador se puede ver en la figura 1. POST BIOS MBR CARGADOR DE ARRANQUE Figura 1. Proceso de arranque del computador Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 El MBR contiene la tabla de particiones y un código ejecutable denominado cargador de arranque (ver figura 2), este examina la tabla de particiones e identifica la partición activa, una vez localizada la partición activa, ubica el primer sector de la partición llamado sector de arranque y lo carga en memoria, finalmente el MBR transfiere el control del arranque al sector de arranque cargado en memoria. Aunque el MBR es independiente del sistema operativo, el sector de arranque de la partición activa es dependiente tanto del sistema operativo como del tipo de sistemas de archivos en el que se encuentra. INITIAL PROGRAM LOADER una partición FAT de 32MB aproximadamente que contenga los archivos necesarios para el correcto funcionamiento del gestor de arranque NTLDR. La forma como deben quedar distribuidas las particiones en el disco duro se muestra en la Figura 3. 1ª Partición 2ª Partición FAT 32 MB NTFS Designado por el usuario 3ª Partición EXT3 Designado por el usuario 4ª Partición SWAP Tamaño de RAM del Sisitema Figura 3. Particiones para funcionamiento de EVA R-Grid TABLA DE PARTICIONES Figura 2. Componentes del Master Boot Record El sector de arranque contenido en la partición activa es la que permite cargar el sistema operativo con el que trabaja el computador. Uno de los problemas de esta forma de arranque es que sólo se puede arrancar el sistema operativo contenido dentro de la partición activa. Para brindar al sistema la posibilidad de tener varios sistemas operativos instalados y poder arrancar el que el usuario elija, se reemplaza el cargador de arranque por defecto del MBR con otro cargador mas avanzado. Los cargadores de arranque [6] funcionan en dos etapas, la primera etapa es cargada por el MBR y la segunda etapa es la que se encarga de todas las tareas requeridas para cargar el sistema operativo específico, que ha elegido el usuario ya sea manualmente o que ha configurado para que cargue por defecto. Los cargadores de arranque pueden ser configurados de dos maneras, como cargador de arranque principal o como cargador de arranque secundario. Cuando es configurado como cargador de arranque principal la primera etapa del cargador es instalada en el MBR, por otra parte cuando son configurados como secundarios la primera etapa es instalada en una partición activa, cuando el MBR es ejecutado, utiliza el sector de arranque de la partición activa ejecutando así el cargador de arranque. El cargador de arranque más usado por Linux es Grub, mientras que el cargador de arranque usado por Windows NT, Windows 2000 y Windows XP se conoce como Ntldr. Para el manejo del arranque del sistema operativo se crea La primera partición debe ser de tipo primaria y debe ser la primera creada dado que algunos sistemas no aceptan que la información del arranque del sistema se encuentre ubicada después del cilindro 1024, imposibilitando que el computador pueda arrancar algún sistema operativo e iniciar correctamente. El sistema se encarga de cambiar el archivo de configuración del gestor de arranque para que al reiniciar Windows cargue el sistema operativo Linux. III. DETECCIÓN DE INACTIVIDAD EN OTROS SISTEMAS DISTRIBUIDOS La utilización de computadores personales que no hacen uso de todos sus recursos para formar parte de un sistema de procesamiento paralelo o Cluster nació en 1978 como un proyecto de Xerox, fue llevado a cabo por John F. Shoch y Jon A. Hupp[4] en su centro de investigación en Palo Alto, mejor conocido como PARC (Palo Alto Research Center). El proyecto conocido como Worm o “gusano” consiste en un programa que se ejecuta en una o más máquinas. Los programas que son ejecutados en cada computador individualmente son denominados como los segmentos del gusano. Para encontrar los computadores inactivos, cada segmento que deseaba utilizar una máquina verificaba mediante una consulta la disponibilidad de esta, una máquina se consideraba disponible o inactiva cuando estaba ejecutando un diagnóstico de memoria, al recibir una respuesta positiva, el segmento se copiaba a través de la red y solicitaba permiso para ejecutarse, una vez concedido el permiso se utilizaba el protocolo ftp para transferir el programa que se iba a ejecutar utilizando el gusano, al terminar de ejecutarse el programa, el segmento debía retornar el computador a un estado de inactividad, para que pudiera ser accedido nuevamente por el gusano. 21 22 Universidad El Bosque - Facultad de Ingeniería de Sistemas La idea inicial del proyecto Worm de aprovechar los recursos de cómputo inactivos fue retomada después por Michael Litzkow, Miron Livny, y Matt Mutka[5], un grupo de investigadores en la Universidad de Winsconsin, quienes fundaron en 1988 el proyecto Condor. Condor es un sistema especializado en la administración de trabajos y recursos para trabajos que requieren un poder de cómputo más grande del normal, como otros sistemas similares Condor provee un mecanismo para la administración de los trabajos, unas reglas para la programación y la prioritización de los mismos, el monitoreo y la administración de los recursos disponibles. El funcionamiento básico consiste en que los usuarios envían sus trabajos hacia Condor y basado en las reglas definidas, Condor elige cuando y como ejecutarlos, una vez terminada la ejecución retorna el resultado al usuario. Condor puede también buscar y administrar poder de cómputo desperdiciado a través de una red Ethernet, por ejemplo cuando se configura para ejecutar trabajos en los computadores solamente cuando el teclado y la CPU están inactivos. Si un usuario regresa y presiona una tecla, el trabajo hasta donde ha sido realizado es guardado y enviado a otro computador para que continúe con el proceso desde donde se había dejado, esto permite a Condor combinar todo el poder de cómputo de una organización en un solo gran recurso. SETI (Search for Extraterrestrial Intelligence) es una institución establecida en 1984, cuyo objetivo es detectar vida inteligente fuera del planeta Tierra, una de las formas de detección es conocida como radio SETI, que usa radio telescopios para escuchar señales de radio provenientes del espacio, estas señales no son esperadas que ocurran de forma natural, así que su detección brindaría evidencia de tecnología extraterrestre. Analizar un espectro de frecuencia requiere una gran cantidad de poder de cómputo, así que en 1995 David Gedye[1] propuso hacer el análisis del espectro mediante una supercomputadora virtual que consistiera en un gran número de computadoras conectadas mediante Internet. El proyecto conocido como seti@home consiste en un servidor principal que recolecta datos del radio telescopio y envía porciones de estos datos conocidas como unidades de trabajo a los clientes que están conectados a él para que los procesen. Para la detección de inactividad de los computadores, el programa cliente de seti@home detecta los periodos de inactividad mediante el monitoreo de la actividad del usuario, si este no usa el teclado o el mouse, el computador activa el protector de pantalla, que es el programa cliente en este caso y comienza a procesar la información enviada desde el servidor central. A. Detección de inactividad en EVA R-Grid Para la detección de los periodos inactivos del computador el sistema mide la utilización de los componentes principales del equipo, como son el porcentaje de uso del procesador, la cantidad de memoria utilizada, el número de procesos que se ejecutan actualmente y el porcentaje de utilización del disco duro. Durante periodos de una hora el sistema recolecta datos de uso de los dispositivos antes mencionados y con estos determina si el computador ha sido o no utilizado a través de unos umbrales estáticos definidos manualmente por el administrador del sistema. Para la recolección de los datos de uso del sistema se utiliza una librería proporcionada por Windows y que se viene utilizando desde la version 4.0 de Windows NT, denominada PDH (Per formance Data Helper). La librería PDH (Per formance Data Helper) [7] es una mejora a las capacidades de monitoreo de desempeño de Windows NT. Los datos de desempeño que Windows NT proporciona y contienen información para un número variable de objetos, instancias por objeto, y contadores por tipo de objeto, los contadores son usados para medir varios aspectos del desempeño; por ejemplo, el Objeto Procesador incluye un contador para el porcentaje de tiempo que el procesador está siendo utilizado. PDH.DLL WMI Hi- Perf Provider InterfaceI Registry DLL ProviderI RegQueryValueEx ADVAPI32.32DLL System System Performance System Performance DLL Performance DLL DLL PerfLib Performance Performance Extension Performance Extension DLL Extension DLL DLL Hi-Perf Data Hi-Perf Data Provider Hi-Perf Data Provider Object Provider Object Object Figura 4 Librería Performance Data Helper (PDH) Para que un programa pueda utilizar las características de desempeño de Windows NT, es necesario el uso de funciones que usan el registro de Windows, las funciones de registro leen los blobs de datos desde la clave HK EY_PER FOR M A NCE_DATA que cont iene la información de desempeño; lo que hace la librería PDH es empaquetar estos datos en una forma que no requiera ninguna transformación, además la librería permite especificar el objeto y el contador específico. Revista de Tecnología - Journal of Technology • Volumen 6, No. 1, Enero - Junio 2007 B. Funcionamiento básico del sistema de monitoreo de inactividad. El funcionamiento del sistema de monitoreo de inactividad de EVA R-Grid puede resumirse en los siguientes pasos. deben evaluar varios que comprendan características importantes de la máquina como el uso de procesador, el uso de memoria, el uso de disco duro y la cantidad de procesos ejecutándose, para de esta manera poder hacer un análisis más efectivo de la actividad total del equipo. REFERENCIAS 1. El sistema inicia al arrancar el sistema operativo Windows. 2. Verifica la hora y revisa en el horario si el computador debe ser reiniciado. En caso de tener que ser reiniciado modifica el archivo boot.ini para que el sistema operativo Linux, arranque por defecto al iniciar el computador. 3. Si no es reiniciado, el sistema comienza a recolectar datos de uso de los componentes del computador mencionados anteriormente. 4. Al cambiar de hora, analiza los datos recolectados, para determinar si el computador ha estado activo y marca la hora en el horario para que el computador sea reiniciado. 5. Vuelve al paso 2. De esta manera, el sistema de monitoreo combina la detección de inactividad, con el cambio del sistema operativo, para manejar de manera automática el cambio en el modo de operación del computado, para que pueda formar parte del Cluster. CONCLUSIONES [1]ANDERSON, David P., et al. SETI@home: an ex p er iment in public-re s ourc e comput ing En Communications of the ACM, n.11. Vol 45 November 2002; p.56-61. [2] BURBANO, Daniel; SABOGAL, Guiovanna y ORGANISTA, Pedro. Entorno virtual de aprendizaje remoto sobre Grid, EVA R-GRID. En: Revista de Tecnología. V.5, No.1 (enerojunio 2006); p. 13-20 [3] BONNEY, Laurence. Boot Loader showdown: Getting to know LILO and GRUB En:DeveloperWorks Linux de IBM.[Página Web].2005,[consultado 15 septiembre 2006]. disponible en < H t t p : / / w w w - 1 2 8 . i b m .c o m / d e v e l o p e r w o r k s / linux/library/l-bootload.html>. [4] SHOCH, John y HUPP, Jon. The `Worm' Programs -Early Experience with a Distributed Computation En Communications of the ACM, n.3. vol.25, march 1982; p. 172-180. [5] THAIN, Douglas;TANNENBAUM, Todd y BERMAN, Livny. CONDOR AND THE GRID En BERMAN, Fran; HEY, J. G. Anthony y FOX, Geoffrey. Grid Computing: Making The Global Infrastructure a Reality.Inglaterra. John Wiley & Sons Ltd, 2003.p. 299-332. Al implementar un sistema de detección de inactividad se debe tener en cuenta la carga que genera el programa en los componentes para que los datos obtenidos sean confiables y reflejen el verdadero desempeño de las diferentes partes del equipo que están siendo medidas, el programa debe hacer un uso eficaz de la memoria disponible y debe utilizar la menor cantidad de memoria posible para no afectar el rendimiento normal del equipo. [6] USA,Microsoft Corporation, Soporte Microsoft [do cument ación en line a], disp onible en <http://support.Microsoft.com/kb/114841/>. Además es importante resaltar que los parámetros seleccionados para la detección del equipo no pueden ser usados independientemente, es decir, que un solo parámetro no refleja la utilización total del equipo, se [ 7 ] USA , M i c r o s o ft Co r p o r a t i o n , M s d n librar y[document ación en linea], disponible en http://msdn.Microsoft.com/library/default.asp?url=/libra ry/enus/perfctrs/perf/performance_counters_portal.asp Artículo de investigación Científica y Tecnológica. Sometido a Arbitraje. Los Autores Daniel Alberto Burbano Sefair Ingeniero electrónico, MCpE Ingeniería Eléctrica y Computadoras, docente de la Facultad de Sistemas de la Universidad El Bosque, Coordinador línea Grid Computing del Equipo de Investigación en software Libre. e-mail: daniel.burbano@gmail.com Cesar Eduardo Guzmán Ingeniero de Sistemas Universidad el Bosque, realizó su proyecto de grado bajo la línea de Grid Computing del Equipo de investigación en Software Libre de la Universidad el Bosque, trabajo que fue reconocido como Laureado en el 2007. e-mail: cesarguzman@sistemasunbosque.edu.co 23