miércoles, 23 de mayo de 2012

Semana 16

Esto es un caos, la unica forma de pasar es con el examen, asi que esta entrada sera de los temas que no he investigado para estar preparado.


1.- Consistencia y replicación 
¿Por qué replicar?
  • Confiabilidad
    • Continuidad de trabajo ante fallas
    • Mayor cantidad de copias -> mejor protección contra corrupción de datos
  • Rendimiento
    • Escalabilidad en número
    • Escalabilidad en área geográfica (menor tiempo de acceso a copias cercanas)
    • Consulta simultánea de datos
… acceso simultaneo
  • Básicamente hay dos soluciones:
  1. El mismo objeto maneja las invocaciones concurrentes (a).
  2. El objeto está desprotegido y el entorno se preocupa del control de concurrencia (b).
  •    En ambos casos, la réplica siempre debe permanecer actualizada


¿Replicación -> Escalabilidad?
  • + escala -> - rendimiento
  • Por lo tanto se usa replicación (caching) para reducir el tiempo de acceso en alta escala.
  • Problemas: 
    • Actualizar las réplicas consume ancho de banda
    • Mantener la consistencia en las copias es un problema de escalabilidad (¿?)
    • Sincronizar las réplicas
Consistencia

El problema de la consistencia (o mejor, de la falta de consistencia) no es exclusivo de los sistemas distribuidos. Ya sabemos que en los sistemas centralizados el acceso concurrente a los datos puede dejarlos inconsistentes si no se proveen mecanismos que proporcionen exclusión mutua en el acceso a los mismos.

En los sistemas distribuidos el problema de la inconsistencia cobra una mayor dimensión, tanto por la importancia como por la cantidad de situaciones en que pueden producirse problemas. Un sistema distribuido es un único sistema formado por múltiples máquinas independientes. Ya que es un único sistema, debe tener un único estado global compartido por todos los equipos que lo componen. El estado global se refiere a datos: como tablas de mantenimiento del sistema, la hora actual o datos que estén compartidos por procesos de distintas máquinas. Como veremos, hay situaciones en las
que no resulta fácil mantener estos datos iguales en todas las máquinas. Atendiendo a las situaciones, en un sistema distribuido se pueden producir inconsistencias de los siguientes tipos:
  •  Inconsistencia de Actualización
  •  Inconsistencia de Replicación
  •  Inconsistencia de Caché
  •  Inconsistencia de Reloj
  •  Inconsistencia de Interfaz de Usuario

2 - Benchmarks de supercomputadoras

El benchmark es una técnica utilizada para medir el rendimiento de un sistema o componente del mismo, frecuentemente en comparación con el que se refiere específicamente a la acción de ejecutar un benchmark. La palabra benchmark es un anglicismo traducible al español como comparativa. Si bien también puede encontrarse esta palabra haciendo referencia al significado original en la lengua anglosajona, es en el campo informático donde su uso está más ampliamente extendido. Más formalmente puede entenderse que un benchmark es el resultado de la ejecución de un programa informático o un conjunto de programas en una máquina, con el objetivo de estimar el rendimiento de un elemento concreto, y poder comparar los resultados con máquinas similares. En términos de ordenadores, un benchmark podría ser realizado en cualquiera de sus componentes, ya sea CPU, RAM, tarjeta gráfica, etc. También puede ser dirigido específicamente a una función dentro de un componente, por ejemplo, la unidad de coma flotante de la CPU; o incluso a otros programas.
La tarea de ejecutar un benchmark originalmente se reducía a estimar el tiempo de proceso que lleva la ejecución de un programa (medida por lo general en miles o millones de operaciones por segundo). Con el correr del tiempo, la mejora en los compiladores y la gran variedad de arquitecturas y situaciones existentes convirtieron a esta técnica en toda una especialidad. La elección de las condiciones bajo la cual dos sistemas distintos pueden compararse entre sí es especialmente ardua, y la publicación de los resultados suele ser objeto de candentes debates cuando éstos se abren a la comunidad. se convierte en una poderosa arma competitiva, mal realizado puede hacernos perder mucho dinero. Actualmente se dispone de muchos documentos sobre como realizar eficazmente estudios benchamarketing. Si a lo largo del estudio de benchmarking También puede realizarse un "benchmark de software", es decir comparar el rendimiento de un software contra otro o de parte del mismo, por ejemplo, comparar distintas consultas a una base de datos para saber cuál es la más rápida o directamente partes de código.
El Benchmark es también un proceso continuo de medir productos, servicios y prácticas contra competidores más duros o aquellas compañías reconocidas como líderes en la industria.

El valor de banchmarking
La importancia del benchmarking no se encuentra en la detallada mecánica de la comparación, sino en el impacto que pueden tener estas comparaciones sobre los comportamientos. Se puede considerar como un proceso útil de cara a lograr el impulso necesario para realizar mejoras y cambios.
Además que es de uso muy importante para la planeación estratégica.

3 - Grids computacionales


“La Grid” toma su nombre de una analogía con el “poder de la red” eléctrica; en inglés la red eléctrica, el tramado de ella, se denomina Grid (la traducción al español de Grid es “Malla” o “Grilla”). La idea era que accediendo al poder de cómputo a través de una malla computacional sería tan simple como acceder al poder eléctrico desde una red eléctrica.

Hay cientos de grid computacionales alrededor del mundo. Muchas grid se están usando para la e-Ciencia: posibilitando la ejecución de proyectos que serían imposibles de realizar sin el poder computacional de la grid.
  •  Los biólogos están empleando grids para similar miles de posibles drogas en sus computadores, con el objetivo de descubrir una molécula capaz de bloquear proteínas específicas de ciertas enfermedades. 
  • Los científicos de la Tierra están empleando grids para registrar los niveles de ozono, usando satélites, descargando diariamente cientos de Gigabytes de datos (¡el equivalente a 150 CDs cada día!) 
  • Los físicos de altas energías están aplicandolas grids en su búsqueda por una mejor comprensión del Universo, sobre la base de una grid de decenas de miles de computadoras de escritorio para almacenar y analizar los 10 Petabytes de datos (¡equivalentes a los datos que pueden contener alrededor de 20 millones de CDs!) producidos anualmente por el Gran Colisionador de Hadrones (Large Hadron Collider). Miles de físicos en docenas de universidades alrededor del mundo quieren analizar esos datos.. 
  • Los ingenieros están usando las grid para estudiar energías alternativas, tales como la fusión de energía. 
  • Los artistas hoy usan las grid para crear complejas animaciones para las películas (puedes ver un buen ejemplo en Kung Fu Panda). 
  • Los cientistas socials hoy estudian la vida de las abejas, el maquillaje que emplea nuestra sociedad y los secretos de la historia, mediante el uso de las grid. 
EL FUTURO: «LA GRID»

La Computación Grid, a pesar de ser una tecnología con bastante madurez, sigue estando en constante evolución. Actualmente existen muchas grids computacionales (como EGEE y TeraGrid), construidas para dar salida principalmente a problemas científicos, pero todavía no existe «La Grid». De la misma manera que Internet nació en el ámbito científico para luego llegar al público general, lo mismo puede esperarse, a largo plazo, de la Computación Grid. Cuando la tecnología madure lo suficiente, será posible que cualquier usuario, desde su ordenador personal de casa, pueda enviar complejos trabajos computacionales a «La Grid», como si tuviésemos un supercomputador en el salón de casa.