FuD-BOINC. Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC. Lucas Besso - Raúl Striglio



Documentos relacionados

Workflows? Sí, cuántos quiere?

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

SISTEMAS DE INFORMACIÓN II TEORÍA

MACROPROCESO GESTIÓN TECNOLÓGICA

Descripción. Este Software cumple los siguientes hitos:

Elementos requeridos para crearlos (ejemplo: el compilador)

Visión General de GXportal. Última actualización: 2009

Novedades en Q-flow 3.02

Capitulo 5. Implementación del sistema MDM

La Pirámide de Solución de TriActive TRICENTER

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

Capítulo 5. Cliente-Servidor.

Gestión de Proyectos con Open Project

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

CAPITULO IV. HERRAMIENTAS DE CÓDIGO ABIERTO

E-learning: E-learning:

ANEXO N 11 PASE A PRODUCCION

Manual de Usuario Comprador Presupuesto

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES

La obra se proporciona bajo los términos de esta licencia pública de Sisoft de México

Adelacu Ltda. Fono Graballo+ Agosto de Graballo+ - Descripción funcional - 1 -

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

CAPÍTULO 3 Servidor de Modelo de Usuario

Oracle 12c DISEÑO Y PROGRAMACIÓN

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

Capítulo V. Implementación

Service Desk. InvGate IT Management Software

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

Introducción a las Redes de Computadoras. Obligatorio

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Qué necesito saber para tener mi sitio web en Internet?

Sistemas Operativos. Curso 2016 Procesos

Ciclo de Vida del Desarrollo de un Sistema de Información. Departamento de Ingeniería Industrial Universidad de Chile

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

Java Inicial (20 horas)

5/09/ Agregar cambios en las alertas Matias Herrera

Manual del Protocolo XML-RPC de Mensajería Negocios

Unidad 1. Fundamentos en Gestión de Riesgos

Pruebas y Resultados PRUEBAS Y RESULTADOS AGNI GERMÁN ANDRACA GUTIERREZ

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Documentación Técnica Conector

Sistema de marketing de proximidad

CAPITULO 3 DISEÑO. El diseño del software es el proceso que permite traducir los requisitos

Modelo de Objetos Distribuidos

Daniel Lombraña Glez., F. Fernández de Vega Universidad de Extremadura Ben Segal, Francois Grey CERN

SIMAD CLOUD. La Gestión Documental ahora en la nube, más eficiente SISTEMA INTEGRADO DE ADMINISTRACIÓN DOCUMENTAL

Simulador de Carreras

invgate Service Desk

Catoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final

6 Anexos: 6.1 Definición de Rup:

Gestión de Redes IP. Presentación realizada por: Ing. Pablo Borrelli. Gestión de Redes IP 1

PROPÓSITO... 2 DETERMINANTES PARA UNA BUENA EXPERIENCIA DE USO...

Arquitectura Cliente/Servidor

Introducción a Visual Studio.Net

Copyright bizagi. Gestión de Cambios Documento de Construcción Bizagi Process Modeler

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Guía de Instalación. Glpi

Enterprise Resource Planning (ERP) SISTEMA DE PLANEACIÓN DE RECURSOS MASTER: ALFREDO CASTRO JIMENEZ

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

"Diseño, construcción e implementación de modelos matemáticos para el control automatizado de inventarios

Historial de Versiones: Velneo vversion. Funcionamiento. Repositorio de versiones. Funcionalidades del Historial de Versiones. Bloquear.

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Arquitectura de sistema de alta disponibilidad

Programa de soporte técnico ampliado MSA Start

Digitalice, Ordene y Acceda rápidamente a sus documentos.

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

MANTENIMIENTO Y SOPORTE

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

Un Sistema Distribuido para el Manejo de Correo Electrónico

Capítulo II. Arquitectura del Software

SISTEMA DE ESPECIICACION DE REQUERIMIENTOS

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

MICROSITIOS. Perfiles

ing Solution La forma más efectiva de llegar a sus clientes.

Guía metodologíca para la gestión de proyectos de software basada en metodologías agiles, que integre las herramientas de seguimiento de actividades,

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

CAPÍTULO 3. HERRAMIENTA DE SOFTWARE DE PLANEACIÓN DE

Monitoreando Redes con Linux. Ing. Pedro Alejandro Toribio P. Especialista en Conectividad y Seguridad en

Sistema Gestión Licitación para la compra del desarrollo y migración del Sistema de Gestión de Activos y Configuraciones para Plan Ceibal

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

O C T U B R E SOPORTE CLIENTE. Manual de Usuario Versión 1. VERSIÓN 1 P á g i n a 1

PROGRAMACIÓN PÁGINAS WEB CON PHP

BrowserSQL 4 versión 2 - TUTORIAL

CRM Gestión de Oportunidades Documento de Construcción Bizagi Process Modeler

Universidad acional Experimental Del Táchira Decanato de Docencia Departamento de Ingeniería en Informática

QUE ES COMLINE MENSAJES? QUE TIPO DE MENSAJES PROCESA COMLINE MENSAJES?

CURSO COORDINADOR INNOVADOR

Figura 4.1 Clasificación de los lenguajes de bases de datos

CONSTRUCCIÓN DEL PROCESO MESA DE AYUDA INTERNA. BizAgi Process Modeler

El mediador es un programa escrito en Java diseñado para interactuar con un servidor

Despliegue de plataforma Q-flow

PRU. Fundamento Institucional. Objetivos. Alcance

Transcripción:

Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC Lucas Besso - Raúl Striglio Universidad Nacional de Río Cuarto Fac. de Cs. Exactas, Fco-Qcas y Naturales Departamento de Computación FuDePAN Fundación para el Desarrollo de la Programación en Ácidos Nucleicos 28 de Diciembre de 2011 1 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Temario Introducción 1 Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC 2 Qué es? Diseño Implementación Interacción entre FuD y BOINC 3 Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes 4 Parallel-Clusterer Análisis de rendimiento 5 Conclusión Trabajos a futuro 2 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Fundación para el Desarrollo de la Programación en Ácidos Nucleicos FuDePAN es una ONG (organización no gubernamental) en la cual se realizan investigaciones y desarrollos en bioinformática para aplicar a problemas biológicos asociados a la salud humana. Utiliza la ciencia de la computación para: Mejorar vacunas. Mejorar tratamientos contra enfermedades como el VIH, o el virus Junín. 3 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Fundación para el Desarrollo de la Programación en Ácidos Nucleicos FuDePAN es una ONG (organización no gubernamental) en la cual se realizan investigaciones y desarrollos en bioinformática para aplicar a problemas biológicos asociados a la salud humana. Utiliza la ciencia de la computación para: Mejorar vacunas. Mejorar tratamientos contra enfermedades como el VIH, o el virus Junín. 3 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Motivación Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Debido a que la fundación: intenta resolver problemas de alta complejidad realizando computación de alto rendimiento, cuenta con un framework para el desarrollo de aplicaciones distribuidas (FuD). necesita de recursos computacionales costosos para el cómputo de dichos problemas, es una organización sin fines de lucro, Surgió la necesidad de: Contar con una nueva implementación de la capa de distribución de FuD que permita a las aplicaciones, desarrolladas con este framework, hacer uso de la computación voluntaria. 4 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Motivación Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Debido a que la fundación: intenta resolver problemas de alta complejidad realizando computación de alto rendimiento, cuenta con un framework para el desarrollo de aplicaciones distribuidas (FuD). necesita de recursos computacionales costosos para el cómputo de dichos problemas, es una organización sin fines de lucro, Surgió la necesidad de: Contar con una nueva implementación de la capa de distribución de FuD que permita a las aplicaciones, desarrolladas con este framework, hacer uso de la computación voluntaria. 4 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuD Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Definición FuD (FuDePAN Ubiquitous Distribution) es un framework para automatizar la distribución de aplicaciones computacionales a través de disposiciones heterogéneas y dinámicas de nodos de procesamiento. Características Posee una arquitectura Master-Worker con paralelismo de datos. Permite resolver cualquier problema computacional de manera paralela. El desarrollador que utilice FuD no necesita tener conocimientos de programación paralela. Abstrae a la aplicación del medio de distribución (BOINC, ANA, etc.) 5 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuD Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Definición FuD (FuDePAN Ubiquitous Distribution) es un framework para automatizar la distribución de aplicaciones computacionales a través de disposiciones heterogéneas y dinámicas de nodos de procesamiento. Características Posee una arquitectura Master-Worker con paralelismo de datos. Permite resolver cualquier problema computacional de manera paralela. El desarrollador que utilice FuD no necesita tener conocimientos de programación paralela. Abstrae a la aplicación del medio de distribución (BOINC, ANA, etc.) 5 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Arquitectura Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC 6 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos de FuD Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC DistributableJob Es un concepto de trabajo abstracto que encapsula cualquier tarea que será computada y puede ser subdividido en tareas más pequeñas llamadas JobUnits. JobUnit Representa una computación concreta y atómica que será llevada a cabo por alguno de los nodos de procesamiento. La tarea en sí es representada por un mensaje el cual será pasado a un cliente de procesamiento quien se encargará de computarla. 7 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos de FuD Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC DistributableJob Es un concepto de trabajo abstracto que encapsula cualquier tarea que será computada y puede ser subdividido en tareas más pequeñas llamadas JobUnits. JobUnit Representa una computación concreta y atómica que será llevada a cabo por alguno de los nodos de procesamiento. La tarea en sí es representada por un mensaje el cual será pasado a un cliente de procesamiento quien se encargará de computarla. 7 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Computación Voluntaria FuDePAN Motivación FuD Computación Voluntaria BOINC Definición La computación voluntaria es un tipo de computación distribuida donde personas (voluntarios) donan los recursos libres de su ordenador a proyectos científicos mediante una conexión a internet. 8 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Computación Voluntaria FuDePAN Motivación FuD Computación Voluntaria BOINC Ventajas: Los voluntarios pueden colaborar desde cualquier punto geográfico. Hace posible la existencia de proyectos de investigación a bajos costos. Los voluntarios no necesitan ser usuarios avanzados de computadoras. Permite obtener y superar el poder de cálculo de una súper computadora. 9 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Computación Voluntaria FuDePAN Motivación FuD Computación Voluntaria BOINC Desventajas: Aumenta el consumo de energía de los ordenadores clientes debido a que éstos reducen su consumo en su tiempo libre. Para lograr un buen desempeño del proyecto es necesario apelar a medios de comunicación para reclutar voluntarios. Los voluntarios pueden confiar en los proyectos pero el proyecto no puede confiar en ellos. 10 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Berkeley Open Infrastructure for Network Computing (BOINC) BOINC es una plataforma de software de código abierto para computación voluntaria y computación grid, cuyo principal propósito es hacer posible la investigación científica. Características Los voluntarios pueden computar desde distintas plataformas. Los usuarios pueden participar en varios proyectos a la vez. Sólo se asignan tareas a voluntarios que cuenten con los recursos necesarios. Asignación de trabajos bajo demanda por parte de los clientes. 11 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Berkeley Open Infrastructure for Network Computing (BOINC) BOINC es una plataforma de software de código abierto para computación voluntaria y computación grid, cuyo principal propósito es hacer posible la investigación científica. Características Los voluntarios pueden computar desde distintas plataformas. Los usuarios pueden participar en varios proyectos a la vez. Sólo se asignan tareas a voluntarios que cuenten con los recursos necesarios. Asignación de trabajos bajo demanda por parte de los clientes. 11 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos BOINC Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Los trabajos de BOINC se encapsulan bajo dos conceptos importantes: Workunit Describe y representa la tarea a ser computada por un cliente del proyecto. Cada una está asociada a una aplicación en particular y puede tener uno o más archivos de entrada relacionados. Result Es una instancia de una workunit que se desea resolver. Precisamente es este result el que será enviado a los clientes de BOINC para su procesamiento. Cada workunit debe tener asociado al menos un result. 12 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos BOINC Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Los trabajos de BOINC se encapsulan bajo dos conceptos importantes: Workunit Describe y representa la tarea a ser computada por un cliente del proyecto. Cada una está asociada a una aplicación en particular y puede tener uno o más archivos de entrada relacionados. Result Es una instancia de una workunit que se desea resolver. Precisamente es este result el que será enviado a los clientes de BOINC para su procesamiento. Cada workunit debe tener asociado al menos un result. 12 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos BOINC Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Los trabajos de BOINC se encapsulan bajo dos conceptos importantes: Workunit Describe y representa la tarea a ser computada por un cliente del proyecto. Cada una está asociada a una aplicación en particular y puede tener uno o más archivos de entrada relacionados. Result Es una instancia de una workunit que se desea resolver. Precisamente es este result el que será enviado a los clientes de BOINC para su procesamiento. Cada workunit debe tener asociado al menos un result. 12 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Proyecto BOINC Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Un proyecto BOINC es el encargado de manegar todo el proceso de computación distribuida. Permite la administración de cuentas de usuarios, de aplicaciones y define cómo van a ser distribuidos los trabajos. Componentes de un proyecto: Una base de datos Un sitio web Un servidor conformado por: Generadores de trabajos (work generators) Aplicaciones Utilidades (ej: start, stop, status, xadd, update version) Demonios (ej: validator, assimilator, file deleter, db purge) Un archivo de configuración Todo proyecto se identifica por la URL de su sitio web. 13 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Proyecto BOINC Introducción FuDePAN Motivación FuD Computación Voluntaria BOINC Un proyecto BOINC es el encargado de manegar todo el proceso de computación distribuida. Permite la administración de cuentas de usuarios, de aplicaciones y define cómo van a ser distribuidos los trabajos. Componentes de un proyecto: Una base de datos Un sitio web Un servidor conformado por: Generadores de trabajos (work generators) Aplicaciones Utilidades (ej: start, stop, status, xadd, update version) Demonios (ej: validator, assimilator, file deleter, db purge) Un archivo de configuración Todo proyecto se identifica por la URL de su sitio web. 13 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Proyectos conocidos FuDePAN Motivación FuD Computación Voluntaria BOINC Seti@home (http://setiathome.ssl.berkeley.edu/) Climate Prediction (http://climateprediction.net/) LHC@Home (http://lhcathomeclassic.cern.ch/sixtrack/) Einstein@Home (http://einstein.phys.uwm.edu/) Lista completa de proyectos BOINC: http://boinc.berkeley.edu/wiki/project_list/ 14 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Cliente BOINC y BOINC Manager Cliente BOINC (core client) Es la aplicación cliente de BOINC que corre como demonio en las computadoras de los participantes. Sus principales funciones son: Mantener una conexión directa con el servidor del proyecto para recibir trabajos y enviar resultados. Descargar la aplicación necesaria para la computación de cada trabajo. Realizar la computación de cada tarea. Administrar la distribución de los recursos locales entre los proyectos adheridos. BOINC Manager Es una aplicación que ofrece una simple interfaz gráfica mediante la cuál los voluntarios pueden controlar el cliente BOINC. 15 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Cliente BOINC y BOINC Manager Cliente BOINC (core client) Es la aplicación cliente de BOINC que corre como demonio en las computadoras de los participantes. Sus principales funciones son: Mantener una conexión directa con el servidor del proyecto para recibir trabajos y enviar resultados. Descargar la aplicación necesaria para la computación de cada trabajo. Realizar la computación de cada tarea. Administrar la distribución de los recursos locales entre los proyectos adheridos. BOINC Manager Es una aplicación que ofrece una simple interfaz gráfica mediante la cuál los voluntarios pueden controlar el cliente BOINC. 15 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Cliente BOINC y BOINC Manager Cliente BOINC (core client) Es la aplicación cliente de BOINC que corre como demonio en las computadoras de los participantes. Sus principales funciones son: Mantener una conexión directa con el servidor del proyecto para recibir trabajos y enviar resultados. Descargar la aplicación necesaria para la computación de cada trabajo. Realizar la computación de cada tarea. Administrar la distribución de los recursos locales entre los proyectos adheridos. BOINC Manager Es una aplicación que ofrece una simple interfaz gráfica mediante la cuál los voluntarios pueden controlar el cliente BOINC. 15 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Componentes de BOINC FuDePAN Motivación FuD Computación Voluntaria BOINC 16 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

FuDePAN Motivación FuD Computación Voluntaria BOINC Interacción entre servidor y cliente BOINC 17 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Qué es? Diseño Implementación Interacción entre FuD y BOINC Una nueva implementación de la capa L1 de FuD. Permite que aplicaciones desarrolladas con FuD puedan correr sobre proyectos BOINC. Permite abstraer al desarrollador de aplicaciones FuD de la API de BOINC. 18 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Capa de distribución: lado servidor 19 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Lado servidor: BoincClientsManager BoincClientsManager Hereda de la clase ClientsManager de FuD. Responsabilidades Realizar el registro de un único cliente. Comunicar al manejador de trabajos la disponibilidad del cliente conectado. 20 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Lado servidor: BoincClientProxy BoincClientProxy Hereda de la clase ClientProxy de FuD y representa un cliente conectado con la particularidad que siempre está disponible. Responsabilidades Mantener una conexión directa con la base de datos del proyecto BOINC. Generar un trabajo de BOINC a partir de una JobUnit. Obtener los resultados enviados por los clientes e informarlos a L2. 21 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Capa de distribución: lado cliente 22 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Lado cliente: BoincDistribution BoincDistribution Hereda de la clase DistributionClient de FuD y provee la funcionalidad necesaria para que la aplicación pueda correr satisfactoriamente sobre el cliente BOINC. Responsabilidades Extraer la JobUnit del archivo de entrada brindado por el cliente de BOINC. Envíar la JobUnit a la capa L2 para su procesamiento. Escribir el resultado de la tarea en un archivo de salida para que el cliente de BOINC lo informe al servidor. 23 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

API de BOINC Introducción Qué es? Diseño Implementación Interacción entre FuD y BOINC Servidor Del lado servidor de se debió utilizar la API de BOINC para realizar las siguientes tareas: Leer el archivo de configuración del proyecto BOINC: config. parse_file ( ) Establecer una conexión con la base de datos: boinc_db. open ( config. db_name, config. db_host, config. db_user, config. db_passwd ) ; 24 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

API de BOINC Introducción Qué es? Diseño Implementación Interacción entre FuD y BOINC Cliente Del lado cliente de se debió utilizar la API de BOINC para realizar las siguientes tareas: Inicializar los diagnósticos de BOINC: i n t boinc_init_diagnostics ( i n t flags ) ; Inicializar la aplicación cliente de BOINC para que sea propiamente ejecutada por el cliente de BOINC: boinc_init ( ) ; Finalizar la aplicación cliente de BOINC: i n t boinc_finish ( i n t status ) ; 25 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Servidor: envío de trabajos Qué es? Diseño Implementación Interacción entre FuD y BOINC FuD provee el método process() mediante el cual se envían JobUnits a clientes. En, el método process() se encarga de traducir una JobUnit a un trabajo de BOINC mediante los siguientes pasos: 1 Serializar la JobUnit de FuD dentro de un archivo binario. 2 Leer la plantilla utilizada por BOINC en donde se especifican las características de la workunit a crear. 3 Invocar al método create boinc work(). 26 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Servidor: envío de trabajos Qué es? Diseño Implementación Interacción entre FuD y BOINC FuD provee el método process() mediante el cual se envían JobUnits a clientes. En, el método process() se encarga de traducir una JobUnit a un trabajo de BOINC mediante los siguientes pasos: 1 Serializar la JobUnit de FuD dentro de un archivo binario. 2 Leer la plantilla utilizada por BOINC en donde se especifican las características de la workunit a crear. 3 Invocar al método create boinc work(). 26 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Servidor: crear trabajo de BOINC create boinc work() El método create boinc work() es el encargado de crear un nuevo trabajo de BOINC. Las tareas llevadas a cabo por éste método se pueden simplificar en los siguientes pasos: 1 Crear el nombre que identifica la workunit. 2 Asociar la nueva tarea a la aplicación en ejecución. 3 Crear el trabajo invocando al método create work() de BOINC. create_work ( wu, wu_template, RE_TEMPLATE. c_str ( ), config. project_path ( RE_TEMPLATE. c_str ( ) ), input_files, NRO_INFILES, config ) ; 27 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Servidor: obtener resultados de clientes FuD provee el método inform completion() para informar los resultados de las JobUnit recibidos desde los clientes a las capas superiores. Para recibir y manejar los resultados enviados por los clientes de BOINC, se debió integrar el comportamiento del demonio assimilator como parte del comportamiento de. Cómo? Se implementó un nuevo hilo de ejecución dentro del servidor para que se encargue de chequear la existencia de nuevos resultados no asimilados. 28 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Servidor: obtener resultados de clientes FuD provee el método inform completion() para informar los resultados de las JobUnit recibidos desde los clientes a las capas superiores. Para recibir y manejar los resultados enviados por los clientes de BOINC, se debió integrar el comportamiento del demonio assimilator como parte del comportamiento de. Cómo? Se implementó un nuevo hilo de ejecución dentro del servidor para que se encargue de chequear la existencia de nuevos resultados no asimilados. 28 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Servidor: obtener resultados de clientes FuD provee el método inform completion() para informar los resultados de las JobUnit recibidos desde los clientes a las capas superiores. Para recibir y manejar los resultados enviados por los clientes de BOINC, se debió integrar el comportamiento del demonio assimilator como parte del comportamiento de. Cómo? Se implementó un nuevo hilo de ejecución dentro del servidor para que se encargue de chequear la existencia de nuevos resultados no asimilados. 28 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Servidor: asimilador de tareas Qué es? Diseño Implementación Interacción entre FuD y BOINC El thread assimilator cumple con las siguientes funciones: Buscar en la base de datos workunits no asimiladas Verificar si se encontró resultado canónico para dichas workunits Invocar al método assimilate handler(), una vez confirmada la existencia de un resultado canónico assimilate handler() Extrae el resultado de la workunit del archivo de salida enviado por el cliente BOINC para luego informarlo mediante el método inform completion() de FuD. 29 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Servidor: asimilador de tareas Qué es? Diseño Implementación Interacción entre FuD y BOINC El thread assimilator cumple con las siguientes funciones: Buscar en la base de datos workunits no asimiladas Verificar si se encontró resultado canónico para dichas workunits Invocar al método assimilate handler(), una vez confirmada la existencia de un resultado canónico assimilate handler() Extrae el resultado de la workunit del archivo de salida enviado por el cliente BOINC para luego informarlo mediante el método inform completion() de FuD. 29 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Servidor: asimilador de tareas Qué es? Diseño Implementación Interacción entre FuD y BOINC Ciclo del assimilator thread(): app = find_app ( NAME_APP, _db_assimilator ) ; wh ile ( _running_assimilator ) { i f ( find_work_unit ( app, wu ) == true ) { i f ( find_cannonical_result ( wu, canonical_result ) == true ) { assimilate_handler ( wu, canonical_result ) ; update_wu_state ( wu, WuDone ) ; } } sleep ( SLEEP_INTERVAL ) ; } Tareas más relevantes del método assimilate handler(): std : : string msg = extract_message ( output_file ) ; ClientsManager : : get_instance ( ) >inform_completion ( getjobunitid ( ), msg ) ; 30 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Cliente: computación de una tarea FuD provee el método run() el cual debe ser implementado con las tareas específicas que debe realizar el cliente para llevar a cabo el cómputo de las JobUnits. En, el método run() se remite a obtener la JobUnit de FuD a partir del trabajo de BOINC mediante los siguientes pasos: 1 Leer el archivo binario que contiene encapsulada la JobUnit de FuD 2 Extraer el mensaje correspondiente a la JobUnit de FuD 3 Invocar al método deliver message() quien enviará el contenido a las capas superiores para su computación. 31 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Cliente: computación de una tarea FuD provee el método run() el cual debe ser implementado con las tareas específicas que debe realizar el cliente para llevar a cabo el cómputo de las JobUnits. En, el método run() se remite a obtener la JobUnit de FuD a partir del trabajo de BOINC mediante los siguientes pasos: 1 Leer el archivo binario que contiene encapsulada la JobUnit de FuD 2 Extraer el mensaje correspondiente a la JobUnit de FuD 3 Invocar al método deliver message() quien enviará el contenido a las capas superiores para su computación. 31 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Cliente: informar resultado Qué es? Diseño Implementación Interacción entre FuD y BOINC FuD provee el método inform result() cuya función es enviar el resultado de la computación al servidor. En se remite a invocar al método boinc inform result() el cual se encarga de las siguientes tareas: 1 Obtener el resultado de la computación 2 Escribir dicho resultado en un archivo de salida asociado al trabajo de BOINC 32 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Cliente: informar resultado Qué es? Diseño Implementación Interacción entre FuD y BOINC FuD provee el método inform result() cuya función es enviar el resultado de la computación al servidor. En se remite a invocar al método boinc inform result() el cual se encarga de las siguientes tareas: 1 Obtener el resultado de la computación 2 Escribir dicho resultado en un archivo de salida asociado al trabajo de BOINC 32 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Cliente: informar resultado Qué es? Diseño Implementación Interacción entre FuD y BOINC Parte del código de boinc inform result(): std : : string body = ProcessorsManager : : get_instance ( ) > get_return_message ( ) ; OutputMessage bos ; bos << _current_id << body ; // F i l e to u p l o a d to s e r v e r. std : : ofstream out ; // e n a b l e t h e e x c e p t i o n s out. exceptions ( std : : ofstream : : failbit std : : ofstream : : badbit ) ; out. open ( file_name. c_str ( ), std : : ios : : binary ) ; // Get t h e message w i t h r e s u l t o f computation to send back to s e r v e r out << bos. str ( ) ; 33 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Cliente: compilación en Windows Fue necesario compilar el cliente de para sistemas operativos Windows ya que actualmente son los más utilizados. Pasos para la compilación: 1 Compilar las librerías BOINC. 2 Generar y configurar un proyecto solución de Visual Studio para la compilación de. 3 Resolver dependencias con las librerías: boost, pthread, mili y MySQL 4 Modificar el tipo de include realizado en algunos archivos del cliente FuD. 5 Compilar el cliente de FuD. 34 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Servidor: envío de una JobUnit Qué es? Diseño Implementación Interacción entre FuD y BOINC 35 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Qué es? Diseño Implementación Interacción entre FuD y BOINC Cliente: computación de una JobUnit 36 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Introducción Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Durante el desarrollo de este proyecto se debieron efectuar diversos cambios en el diseño e implementación original de FuD para poder integrar esta nueva capa de distribución. Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes 37 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Redeclaración del método create distribution client() Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Método provisto por FuD para la creación de un cliente de distribución. Prototipo original: DistributionClient create_distribution_client ( std : : string address = 1 2 7. 0. 0. 1, Port port = 31337) ; Prototipo actual: DistributionClient create_distribution_client ( i n t argc, char argv ) ; 38 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

JobManager post initialization Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Se agregó un nuevo método en la clase ClientsManager de FuD. Por defecto, su implementación es vacía. El método sólo es invocado al final del constructor de JobManager: _clients_manager >post_initialization ( ) 39 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Redefinición de post initialization() Declaración y definición en ClientsManager v i r t u a l v o i d post_initialization ( ) {}; Redefinición en BoincClientsManager v o i d BoincClientsManager : : post_initialization ( ) { boinc_register_client ( ) ; } v o i d BoincClientsManager : : boinc_register_client ( ) { // I n i t t h e c l i e n t p r o x y. boinc_log_debug ( std : : string ( R e g i s t e r i n g BOINC w i t h FuD. ) ) ; BoincClientProxy client = new BoincClientProxy ( ) ; client >set_concurrent_jobs ( UNLIMITED_JOBS ) ; // R e g i s t e r t h e u n i q u e c l i e n t p r o x y. register_client ( client ) ; } 40 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Reenvío de JobUnits configurable Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Se agregó un nuevo método en la clase ClientsManager de FuD. v i r t u a l b o o l should_resend_job_units ( ) = 0 ; Definición del método en BoincClientsManager: b o o l BoincClientsManager : : should_resend_job_units ( ) { return f a l s e ; } 41 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Reimplementación de handle free client event() 170 i f ( _jobqueue. empty ( ) ) 171 { 172 i f ( _clients_manager >should_resend_job_units ( ) ) 173 { 174 i f (! _pendinglist. empty ( ) ) 175 { 176 i f ( _clients_manager >assign_job_unit ( _pendinglist. front ( ) ) ) 177 { 178 // send t h i s one to the back, act as Round Robin 179 _pendinglist. push_back ( _pendinglist. front ( ) ) ; 180 _pendinglist. pop_front ( ) ; 181 } 182 e l s e 183 syslog ( LOG_NOTICE, Error sending JobUnit %u from Pending List to a c l i e n t., _pendinglist. front ( ) >get_id ( ) ) ; 184 } 185 } 186 } 187 e l s e 188 { 189 i f ( _clients_manager >assign_job_unit ( _jobqueue. front ( ) ) ) 190 { 191 syslog ( LOG_NOTICE, Sending JobUnit %u to p e n d i n g l i s t., ( _jobqueue. front ( ) >get_id ( ) ) ) ; 192 _pendinglist. push_back ( _jobqueue. front ( ) ) ; 193 _jobqueue. pop_front ( ) ; 194 } 195 e l s e 196 syslog ( LOG_NOTICE, Error sending JobUnit %u from Job Queue to a c l i e n t., _jobqueue. front ( ) >get_id ( ) ) ; 197 } 42 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Múltiples JobUnits a clientes Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Problema Los clientes sólo pueden procesar a lo sumo de a una JobUnit por vez. Solución La idea general consiste en: 1 Permitir configurar la cantidad máxima de tareas en simultáneo que un cliente puede ejecutar. 2 Llevar un registro de la cantidad de tareas que un cliente se encuentra computando en un determinado momento. 3 Determinar la disponibilidad de un cliente. 4 Si el cliente se encuentra disponible, generar un nuevo evento de cliente libre. 43 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Múltiples JobUnits a clientes Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Problema Los clientes sólo pueden procesar a lo sumo de a una JobUnit por vez. Solución La idea general consiste en: 1 Permitir configurar la cantidad máxima de tareas en simultáneo que un cliente puede ejecutar. 2 Llevar un registro de la cantidad de tareas que un cliente se encuentra computando en un determinado momento. 3 Determinar la disponibilidad de un cliente. 4 Si el cliente se encuentra disponible, generar un nuevo evento de cliente libre. 43 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Múltiples JobUnits a clientes Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Problema Los clientes sólo pueden procesar a lo sumo de a una JobUnit por vez. Solución La idea general consiste en: 1 Permitir configurar la cantidad máxima de tareas en simultáneo que un cliente puede ejecutar. 2 Llevar un registro de la cantidad de tareas que un cliente se encuentra computando en un determinado momento. 3 Determinar la disponibilidad de un cliente. 4 Si el cliente se encuentra disponible, generar un nuevo evento de cliente libre. 43 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Múltiples JobUnits a clientes Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Problema Los clientes sólo pueden procesar a lo sumo de a una JobUnit por vez. Solución La idea general consiste en: 1 Permitir configurar la cantidad máxima de tareas en simultáneo que un cliente puede ejecutar. 2 Llevar un registro de la cantidad de tareas que un cliente se encuentra computando en un determinado momento. 3 Determinar la disponibilidad de un cliente. 4 Si el cliente se encuentra disponible, generar un nuevo evento de cliente libre. 43 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Múltiples JobUnits a clientes Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Problema Los clientes sólo pueden procesar a lo sumo de a una JobUnit por vez. Solución La idea general consiste en: 1 Permitir configurar la cantidad máxima de tareas en simultáneo que un cliente puede ejecutar. 2 Llevar un registro de la cantidad de tareas que un cliente se encuentra computando en un determinado momento. 3 Determinar la disponibilidad de un cliente. 4 Si el cliente se encuentra disponible, generar un nuevo evento de cliente libre. 43 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

ClientProxy Introducción Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes 44 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

ClientsManager Introducción Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes 45 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Redeclaración del método create distribution client() JobManager post initialization Reenvío de JobUnits configurable Múltiples JobUnits a clientes Diagrama de secuencia: multiple jobs 46 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Parallel-Clusterer Introducción Parallel-Clusterer Análisis de rendimiento Parallel-clusterer Es una aplicación utilizada por la organización FuDePAN. Fue desarrollada utilizando el framework FuD y realiza la siguiente tarea: Tarea: Dado un conjunto de diferentes cadenas principales o esqueletos de una proteína (cada uno representado por un vector de átomos), agrupa estos elementos bajo similitudes geométricas de las posiciones de sus átomos. El resultado final es un conjunto de agrupaciones o clusters donde cada uno tiene esqueletos de proteínas cuya estructura geométrica es muy similar. 47 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Parallel-Clusterer Introducción Parallel-Clusterer Análisis de rendimiento Parallel-clusterer Es una aplicación utilizada por la organización FuDePAN. Fue desarrollada utilizando el framework FuD y realiza la siguiente tarea: Tarea: Dado un conjunto de diferentes cadenas principales o esqueletos de una proteína (cada uno representado por un vector de átomos), agrupa estos elementos bajo similitudes geométricas de las posiciones de sus átomos. El resultado final es un conjunto de agrupaciones o clusters donde cada uno tiene esqueletos de proteínas cuya estructura geométrica es muy similar. 47 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Parallel-clusterer Introducción Parallel-Clusterer Análisis de rendimiento Estructura de un esqueleto de proteína: Clusters resultantes: 48 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Análisis de rendimiento Parallel-Clusterer Análisis de rendimiento Es importante realizar el análisis de rendimiento de una aplicación distribuida con el propósito de estudiar los costos/beneficios que ésta posee ante la comparación con su versión secuencial. Se muestra el análisis de rendimiento de la aplicación Parallel-Clusterer compilada con en términos de las siguientes métricas: Aceleración Eficiencia Overhead Costo La ejecución se llevo a cabo variando de 1 a 5 clientes conectados. 49 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Tiempo de ejecución Parallel-Clusterer Análisis de rendimiento Tiempo secuencial (T s ) Se define como el intervalo de tiempo que transcurre desde que un programa secuencial se inicia hasta que finaliza. Tiempo distribuido (T p ) Se calcula desde que se inicia hasta que el último nodo finaliza su ejecución. Factores que afectaron al tiempo de ejecución de la aplicación distribuida: Tiempo de descarga de archivos de entrada y de la aplicación. Tiempo de subida de los archivos resultantes. Tiempo entre requerimientos al servidor. 50 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Tiempo de ejecución Parallel-Clusterer Análisis de rendimiento Tiempo secuencial (T s ) Se define como el intervalo de tiempo que transcurre desde que un programa secuencial se inicia hasta que finaliza. Tiempo distribuido (T p ) Se calcula desde que se inicia hasta que el último nodo finaliza su ejecución. Factores que afectaron al tiempo de ejecución de la aplicación distribuida: Tiempo de descarga de archivos de entrada y de la aplicación. Tiempo de subida de los archivos resultantes. Tiempo entre requerimientos al servidor. 50 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Tiempo de ejecución Parallel-Clusterer Análisis de rendimiento Tiempo secuencial (T s ) Se define como el intervalo de tiempo que transcurre desde que un programa secuencial se inicia hasta que finaliza. Tiempo distribuido (T p ) Se calcula desde que se inicia hasta que el último nodo finaliza su ejecución. Factores que afectaron al tiempo de ejecución de la aplicación distribuida: Tiempo de descarga de archivos de entrada y de la aplicación. Tiempo de subida de los archivos resultantes. Tiempo entre requerimientos al servidor. 50 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Tiempo de ejecución Parallel-Clusterer Análisis de rendimiento Tiempo secuencial (T s ) vs. Tiempo paralelo (T p ) T s = 110.7 segundos. p T p 1 305 2 249 3 259 4 245 5 222 51 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Aceleración Introducción Parallel-Clusterer Análisis de rendimiento Definición Es una medida que arroja el beneficio relativo de resolver un problema en paralelo. Indica la ganancia de velocidad obtenida. Se define como: S = T s /T p p S 1 0.36 2 0.44 3 0.42 4 0.45 5 0.49 52 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Eficiencia Introducción Parallel-Clusterer Análisis de rendimiento Definición Indica el grado de utilidad de cada elemento de procesamiento. Se define como: E = S/p p E 1 0.36 2 0,22 3 0,14 4 0,11 5 0,09 53 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Overhead Introducción Parallel-Clusterer Análisis de rendimiento Definición Indica el trabajo adicional que realiza un programa paralelo respecto a la solución secuencial equivalente. Se define como: T o = p T p T s p T 0 1 194.3 2 387.3 3 666.3 4 869.3 5 999.3 54 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Costo Introducción Parallel-Clusterer Análisis de rendimiento Definición Refleja la suma de los tiempos de ejecución de cada unidad de procesamiento. Se define como: C = p T p p C 1 305 2 498 3 777 4 980 5 1110 55 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Parallel-Clusterer Análisis de rendimiento Otros resultados: tiempos de ejecución 56 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Conclusión Introducción Conclusión Trabajos a futuro La nueva capa de distribución, junto con el rediseño efectuado, mantiene compatibilidad con el modelo original de FuD. Los desarrolladores pueden implementar aplicaciones clientes de que pueden correr tanto en Linux como en Windows. debería ser utilizado por aplicaciones que requieran gran cantidad de procesamiento. La investigación realizada permitió desenvolvernos satisfactoriamente ante un tema desconocido: computación voluntaria con BOINC. 57 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Conclusión Introducción Conclusión Trabajos a futuro La nueva capa de distribución, junto con el rediseño efectuado, mantiene compatibilidad con el modelo original de FuD. Los desarrolladores pueden implementar aplicaciones clientes de que pueden correr tanto en Linux como en Windows. debería ser utilizado por aplicaciones que requieran gran cantidad de procesamiento. La investigación realizada permitió desenvolvernos satisfactoriamente ante un tema desconocido: computación voluntaria con BOINC. 57 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Conclusión Introducción Conclusión Trabajos a futuro La nueva capa de distribución, junto con el rediseño efectuado, mantiene compatibilidad con el modelo original de FuD. Los desarrolladores pueden implementar aplicaciones clientes de que pueden correr tanto en Linux como en Windows. debería ser utilizado por aplicaciones que requieran gran cantidad de procesamiento. La investigación realizada permitió desenvolvernos satisfactoriamente ante un tema desconocido: computación voluntaria con BOINC. 57 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Conclusión Introducción Conclusión Trabajos a futuro La nueva capa de distribución, junto con el rediseño efectuado, mantiene compatibilidad con el modelo original de FuD. Los desarrolladores pueden implementar aplicaciones clientes de que pueden correr tanto en Linux como en Windows. debería ser utilizado por aplicaciones que requieran gran cantidad de procesamiento. La investigación realizada permitió desenvolvernos satisfactoriamente ante un tema desconocido: computación voluntaria con BOINC. 57 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos a futuro Introducción Conclusión Trabajos a futuro Instruir y profundizar los conocimientos sobre la administración y configuración de un proyecto BOINC. Lanzar oficialmente un proyecto de computación voluntaria FuDePAN@HOME. Implementar un screensaver con un logo personalizado de FuDePAN. Agregar la entrega de créditos a los clientes respecto de la cantidad de trabajos procesados. 58 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Trabajos a futuro Introducción Conclusión Trabajos a futuro Integrar el funcionamiento de las nuevas capas L3 y L4 de FuD con esta capa de distribución. 59 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Conclusión Trabajos a futuro Preguntas? 60 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC

Conclusión Trabajos a futuro Gracias! 61 / 61 Lucas Besso - Raúl Striglio Implementación de una capa de distribución del framework FuD utilizando como middleware a BOINC