Download GNU/Linux - Ldc Usb - Universidad Simón Bolívar

Document related concepts

Proxmox Virtual Environment wikipedia , lookup

Clúster (informática) wikipedia , lookup

OCFS2 wikipedia , lookup

Global File System (Red Hat) wikipedia , lookup

Simple Linux Utility for Resource Management wikipedia , lookup

Transcript
UNIVERSIDAD SIMÓN BOLÍVAR
SISTEMAS DE OPERACIÓN II
Abril-Julio 2013
Profesora: Yudith Cardinale
GNU/Linux
Mónica Del Río
Germán León
Juan Arocha
Matteo Ferrando
GNU/Linux
Temas:
●
●
●
●
●
●
●
●
Componentes
Gestión de procesos
Gestión de memoria
Módulos
Controladores para dispositivos
Controladores para sistemas de archivos
Gestión de la red
Seguridad
GNU/Linux
Componentes
GNU/Linux
Gestión de procesos
●
●
El planificador es el componente del sistema
operativo que se encarga de repartir el procesador
entre los procesos listos.
Todas sus operaciones corren en tiempo constante
independientemente de la cantidad de procesos en
el sistema.
GNU/Linux
Gestión de procesos: Prioridades
●
●
●
Prioridad Estática: puede ser modificada por el
usuario a través del comando nice
Prioridad Dinámica: se recalcula cada vez que el
proceso abandona el procesador o un dispositivo.
Para procesos reales es igual a la prioridad dinámica
Rango de Prioridades: [0-139]
Procesos de Tiempo Real [0-99]
Procesos Normales [100-139]
GNU/Linux
Gestión de procesos: Timeslice o Quantum
El timeslice es calculado simplemente pasando la
prioridad estática de la tarea al rango de posibles
timeslice.
MIN_TIMESLICE = 10
Quantum Mínimo
MAX_TIMESLICE = 200 Quantum Máximo
MAX_PRIO = 140
Máxima prioridad
NICE_TO_PRIO(0) = 120
(p)->static_prio
Prioridad del Proceso
(MIN_TIMESLICE + ((MAX_TIMESLICE - MIN_TIMESLICE)
(MAX_PRIO-1 - (p)->static_prio) / (MAX_USER_PRIO-1) ))
*
GNU/Linux
Gestión de procesos: Estructuras
●
●
●
La estructura principal es la runqueue con 140 listas
de procesos listos y 140 de procesos con timeslice
expirado.
Hay además un bitmap que indica si cada lista está
vacía o no.
La búsqueda del próximo proceso listo consiste en
encontrar el primer bit 1 del bitmap y sacar al primer
proceso de la lista.
GNU/Linux
Gestión de procesos: Estructuras
GNU/Linux
Gestión de procesos:
Multiprocesadores
●
●
●
Equilibrio de Carga: mover algunas tareas desde
una CPU a otra CPU para equilibrar el sistema.
Variable cpu_load almacena un valor que representa
la carga de la CPU
Dominios de Planificación: es un conjunto de CPUs
cuya carga debe mantenerse balanceada
GNU/Linux
Gestión de memoria
●
●
El manejo de memoria es una de las partes más
importantes de un sistema operativo. Se han
desarrollado distintas estrategias para el manejo de
memoria en sistemas operativos y las más exitosa
ha sido la memoria virtual.
El kernel de Linux implementa un sistema de
memoria virtual compartida.
GNU/Linux
Gestión de memoria
Sistema de memoria virtual compartida
El sistema manejador de memoria de Linux nunca asigna la
memoria física directamente a algún proceso.
En lugar de esto cada proceso tiene una visión "virtual" de la
memoria.
Cada proceso cree que es el único proceso que accede a la
memoria en el sistema. Es decir no está consciente de las
solicitudes de memoria que hacen los demás procesos.
El uso de una partición swap permite que los procesos crean
que la memoria RAM es más grande de lo que realmente es.
GNU/Linux
Gestión de memoria
La memoria virtual es mapeada luego hacia la memoria real
(física) por el sistema manejador de memoria por medio de
tablas de páginas de memoria
GNU/Linux
Gestión de memoria
Limitaciones de la cantidad de memoria permitida en un sistema:
●
Sistemas con arquitectura de 32 bits:
4Gb: 3Gb para espacio de usuario.
1 Gb: para espacio de kernel.
●
Sistemas con arquitectura de 64 bits:
256 Tb para espacio de usuario.
256 Tb para espacio de kernel.
GNU/Linux
Gestión de memoria
Uso de la memoria física como cache
El acceso a un dispositivo de almacenamiento secundario
como un disco duro es significativamente más lento que acceder
a la memoria principal.
Por lo tanto, el sistema de manejo de memoria de Linux
utiliza una porción de la memoria principal como caché para
mantener en memoria los archivos que hayan sido
recientemente utilizados y así agilizar futuros accesos a dichos
archivos.
GNU/Linux
Gestión de memoria
Tipos de memoria:
●
●
●
●
Páginas de kernel - fijas en la memoria RAM
Texto de programas - sólo lectura
Ligadas a archivos
Páginas anónimas - no están ligadas a archivos
Las páginas anónimas pueden ser "swappeadas"
GNU/Linux
Gestión de memoria
Soluciones para cuando la memoria RAM está ocupada
Cuando una aplicación solicita espacio en memoria y no hay
suficiente espacio libre en la RAM.
El kernel tiene dos maneras de liberar espacio en disco:
● Reduciendo el tamaño del cache que esta en la RAM
● Utilizando espacio de la partición swap.
Desde la versión 2.6 del kernel el usuario puede definir la
probabilidad que se le dará a cada una de las dos opciones. Es
un valor del 0 al 100 donde 0 se apega a la primera opción
(reducir el cache) y 100 (mandar paginas al área de swap)
GNU/Linux
Módulos
En un principio todo el código estaba enlazado estáticamente al kernel.
Esto requería que para agregar alguna nueva funcionalidad al kernel se
hacía necesario recompilar y reiniciar el kernel.
Por otro lado, todos los módulos que formarán parte del kernel (aunque
fueran utilizados o no) debían cargarse en memoria pudiendo ocupar
espacio innecesariamente.
GNU/Linux
Módulos
LKM (Loadable Kernel Modules)
Los LKM presentados en la versión 1.2 del kernel permiten afrontar estos
problemas. Los LKM pueden ser enlazados dinámicamente al kernel y
ser liberados y desmontados de la memoria RAM cuando ya no son
utilizados.
Distintos sistemas operativos soportan los LKM, la implementación
particular de Linux utiliza la utilidad modprobe para montar y desmontar
módulos del kernel dinámicamente.
GNU/Linux
Controladores para dispositivos
●
Unidad mínima de almacenamiento en disco: sector
●
Para lectura y/o escritura en disco, se transforma la unidad del
sistema de archivos (bloques) en sectores a través de los i-nodos.
●
Algoritmos de planificación
○ Completely Fair Queueing (CFQ)
○ NOOP
○ Deadline
GNU/Linux
Controladores para dispositivos: CFQ
●
●
●
Estructuras
○ Conjuntos de colas de peticiones ordenadas por prioridad de E/S de
los procesos solicitantes
○ Cola de despacho
Algoritmo
○ Loop infinito
■ Si la cola de despacho está vacía
● Se toma la primera petición de cada uno de las colas de
peticiones (si existen)
● Se reordenan las peticiones basado en la continuidad de
los bloques a leer (para evitar movimiento innecesario de
cabezal)
● Se guardan en la cola de despacho
● Se atienden peticiones hasta vaciar la cola.
Este es el algoritmo que está "por defecto" en el Kernel de Linux desde el
año 2006.
GNU/Linux
Controladores para dispositivos: NOOP
●
●
●
Maneja las peticiones en una cola FIFO.
NOOP asume que cualquier optimización en cuanto a la búsqueda en el
disco duro se hará en un nivel más bajo en la jerarquía IO
Mayormente utilizado en dispositivos que no dependen de un movimiento
mecánico para la búsqueda (memoria flash, solid state drives, etc) pues el
tiempo en reordenar peticiones sería un desperdicio pues no influye en la
misma.
GNU/Linux
Controladores para dispositivos: Deadline
●
●
●
Agrega un atributo deadline (tiempo de expiración) a las
peticiones.
Estructuras
○ 2 colas ordenadas por sectores: una de operaciones de
lectura y otra de escritura (la de lectura tiene más prioridad
pues es una operación bloqueante en los procesos
○ 2 colas deadline donde se ordenan los procesos por su
tiempo de expiración
Algoritmo
○ Mientras existan peticiones.
■ Primero se revisa una de las colas ordenadas
(Primeramente la de lectura por prioridad)
■ Luego se revisan la cola de deadline asociada a ver si la
primera petición caducó
● Si caducó, se atiende
● Si no caducó, se atiende petición de la siguiente cola
ordenada.
GNU/Linux
Estructura sistemas de archivos
Existe un estándar para la jerarquía de los sistema de archivos de
las distribuciones GNU/Linux (Filesystems hierarchy standard o FSH)
●
●
●
Sub-jerarquías
○ Archivos Estáticos: No cambiantes sin la intervención de
algún usuario root (/bin, /sbin, /boot, etc)
○ Archivos Dinámicos: Editables por el dueño o por el root
(/var/mail, /home, etc)
○ Compartidos: compartibles entre usuarios (/usr/share...)
○ Restringidos: no compartibles (/etc, /boot, etc)
En general, la ruta principal es "/" ya que es allí donde se
encuentra toda la jerarquía de archivos.
Dado que en "/" se encuentran los archivos de configuración del
sistema, suele montarse en particiones diferentes a "/home" para
aislar los archivos del usuario de cualquier depuración sobre el
sistema.
GNU/Linux
Estructura sistemas de archivos
GNU/Linux
Componentes sistemas de archivos
●
●
Tabla de i-nodos
○ Ruta o path al archivo.
○ Tamaño.
○ Ubicación física.
Bloques de almacenamiento
○ Tamaño preconfigurado al montar el sistema de archivos:
entre 512 bytes y 4096 bytes.
○ No necesariamente contiguos.
○ Unidad mínima de almacenamiento en el sistema de archivos.
GNU/Linux
Componentes sistemas de archivos
GNU/Linux
Controladores para sistemas de archivos
Para las distribuciones GNU/Linux, los formatos usados normalmente son los ext.
●
●
●
Ext2: Se define con:
○
la jerarquía estándar y los componentes antes mencionados.
○ no es usado en la actualidad.
Ext3: Sucesor de Ext2
○ Mejora: se puede usar journaling (Para cada transacción, dígase escritura o
lectura, se hacer un registro para poder revertirla en caso de error).
○ No es tan común usarlo ya que tiene un sucesor con varias mejoras: Ext4
Ext4: Actualmente el más usado en distribuciones linux.
○ Trae consigo varias memorias desde poder usar un formato extent para la
asignación de bloques, hasta aumento de tamaño máximo de disco y
directorios.
GNU/Linux
Gestión de la red
Una red consiste de dos o más dispositivos conectados entre sí
para comunicarse, esta comunicación puede conformarse de
comandos, datos, hardware y otros recursos.
Para lograr una comunicación estable y coherente se definieron
protocolos de comunicación que se deben a la hora de acceder a
una red.
GNU/Linux
Gestión de la red
En Linux
Linux ofrece herramientas para facilitar esta comunicación entre
dispositivos:
●
socket: crea un socket del tipo indicado, usa recursos del
sistema, está identificado por un número entero.
●
bind: se usa para asociar un socket con una estructura para
almacenar la dirección de éste.
●
listen: se usa en el servidor, se usa para aceptar llamadas
TCP.
GNU/Linux
Gestión de la red
En Linux
●
connect: se usa en el cliente, se usa para asignar un puerto
libre a un socket, para intentar hacer una nueva conexión
TCP
●
accept: se usa en el servidor, acepta una conexión TCP que
haya sido recibida del cliente, creando un nuevo socket.
●
(send & recv) / (write & read) / (sendto / recvfrom): se
usan para enviar y recibir datos de sockets remotos.
GNU/Linux
Gestión de la red
En Linux
●
close: libera los recursos del sistema que estaban siendo
utilizados por el socket, de ser una conexión TCP, termina la
conexión.
●
gethostbyname & gethostbyaddr: para obtener el IP dado
un nombre o una estructura de dirección.
GNU/Linux
Gestión de la red
En Linux
En Linux se cuenta con estándares también de configuración de
conexiones.
En el directorio /etc se consiguen diversos archivos de
configuración que pueden ser modificados por el usuario y por
herramientas de configuración de redes. Por razones obvias se
recomienda usar herramientas de configuración.
GNU/Linux
Seguridad
“The first fact to face is that UNIX was not developed with security, in
any realistic sense, in mind; this fact alone guarantees a vast number of
holes.”
Dennis Ritchie, “On the Security of UNIX”, 1979
La seguridad en Linux está estrechamente ligada al enfoque de
seguridad que se dio al desarrollar Unix.
Evaluaremos las siguientes categorías que presentan mejoras de
seguridad en Linux:
●
●
●
●
Autenticación
Control de acceso de red
Criptografía
Linux Security Modules (LSM)
GNU/Linux
Seguridad
Autenticación
Tradicionalmente se utiliza el sistema de contraseñas de Linux para
autenticar a los usuarios de una máquina.
PAM (Pluggable Authentication Modules) es un mecanismo que
permite flexibilizar el esquema de autenticación que se desea utilizar en
un sistema.
Cuando un programa necesita autenticar a un usuario, PAM provee
una librería funciones para utilizar el esquema de autenticación que se
desee.
GNU/Linux
Seguridad
Controles de seguridad en la red
●
Seguridad en la capa IP (IPSec)
Es un stack de protocolos que proporcionan autenticación
y cifrado de cada paquete IP de una sesión de comunicación.
●
IPTables (Firewall)
Sistema cortafuegos implementado en el kernel de Linux.
Tiene distintos módulos que manejan distintos protocolos:
iptables (IPv4), ip6tables (IPv6), arptables (ARP) y ebtables
(Tramas Ethernet).
GNU/Linux
Seguridad
Criptografía
●
GPG (Gnu Privacy Guard)
Implementación libre de OpenPGP
●
TrueCrypt
Herramienta de cifrado multiplataforma. Soporta
distintos algoritmos como AES, Blowfish, entre otros.
GNU/Linux
Seguridad
MAC (Mandatory Access Control)
Es un tipo de control de acceso en donde el sistema operativo
restringe o controla la habilidad de un sujeto de acceder o realizar
cualquier actividad sobre un objeto. En la práctica un sujeto suele
referirse a un proceso o un thread mientras que un objeto sería un
archivo, directorio, puerto tcp/udp, etc.
Un sistema operativo revisa cualquier acción de cualquier sujeto contra
un conjunto de políticas para determinar si la acción se puede llevar a
cabo.
DAC (Discretionary Access Control)
Linux implementa esta estrategia por defecto. Restringe el acceso a
objetos basados en la identidad o los grupos al que pertenece el
sujeto. El acceso es discrecional ya que un sujeto con un permiso
particular puede pasarle su permiso a otro sujeto
GNU/Linux
Seguridad
Linux Security Modules (LSM)
Es un framework que presenta distintos módulos para
evitar favoritismo por una implementación en particular.
Cada uno de estos módulos implementa un MAC como
sistema de acceso de control.
Los siguientes módulos están integrados en el kernel de
Linux desde la versión 2.6:
●
●
●
●
SELinux
TOMOYO Linux
AppArmor
Smack (Usado en el proyecto Tizen)
GNU/Linux
Bibliografía
[1] http://personales.ya.com/aj2r/Planificador.pdf
[2] http://www.fing.edu.uy/inco/cursos/tso/teorico/TSO-Planificador.pdf
[3] http://www.infor.uva.es/~fjgonzalez/apuntes/Tema4.pdf
[4] http://es.scribd.com/doc/31000802/LINUX-Gestion-de-Procesos
[5]http://smultiprocesadorydistribuidos.wikispaces.
com/EJEMPLO+SISTEMA+OPERATIVO+MULTIPROCESADOR+DEBIANLINUX
[6] http://www.escomposlinux.org/wwol26/wwol26.html
[7] http://nthur.lib.nthu.edu.tw/bitstream/987654321/6898/12/432011.pdf
[8]http://www.ibiblio.org/pub/linux/docs/LDP/system-adminguide/translations/es/html/ch03s02.html
[9] http://www1.frm.utn.edu.ar/soperativos/Archivos/nucleolinux.pdf
[10]http://recursostic.educacion.es/observatorio/web/ca/software/software-general/562elvira-misfud-
UNIVERSIDAD SIMÓN BOLÍVAR
SISTEMAS DE OPERACIÓN II
Abril-Julio 2013
Profesora: Yudith Cardinale
Cluster
Mónica Del Río
Germán León
Juan Arocha
Matteo Ferrando
Cluster
Temas:
●
●
●
●
●
●
Definición y Conceptos Relevantes
Historia
Ventajas / Desventajas
Clasificación
Componentes:
○ Nodos
○ Almacenamiento
○ Sistemas operativos
○ Conexiones de red
○ Middleware
○ Protocolos de comunicación y servicios
○ Aplicaciones
○ Ambientes de programación paralela
Sistemas de clústeres implementado
Cluster
Definición y Conceptos Relevantes
●
Conjuntos o conglomerados de computadoras construidos
mediante la utilización de hardwares comunes y que se comportan
como si fuesen una única computadora.
●
Un clúster es un grupo de
múltiples ordenadores unidos
mediante una red de alta
velocidad, de tal forma que el
conjunto es visto como un
único
ordenador,
más
potente que los comunes de
escritorio.
Cluster
Definición y Conceptos Relevantes
Un cluster consiste en un tipo
de sistema de procesamiento
paralelo
o
distribuido,
compuesto por un conjunto de
computadoras que trabajan
cooperativamente como un
único e integrado recurso de
cómputo
Cluster
Definición y Conceptos Relevantes
●
Alto rendimiento: altas prestaciones en cuanto a capacidad de cálculo
●
Alta disponibilidad: es la capacidad de estar presente, de estar listo
en un determinado momento en el que se quiere hacer uso.
●
Balanceo de carga: técnica usada para compartir el trabajo a realizar
entre varios procesos, ordenadores, discos u otros recursos.
●
Escalabilidad: capacidad de un equipo de hacer frente a volúmenes
de trabajo cada vez mayores, sin dejar por ello de prestar un nivel de
rendimiento aceptable.
Cluster
Historia
●
Las redes de conmutación de paquetes fueron conceptualmente
inventados por la corporación RAND en 1962.
●
Gene Amdahl de IBM, en 1967 publicó la Ley de Amdahl que describe
matemáticamente el aceleramiento que se puede esperar paralelizando
cualquier otra serie de tareas realizadas en una arquitectura paralela.
●
El proyecto ARPANET logró
crear en 1969 lo que fue
posiblemente la primera red de
computadoras básico basadas
en el clúster de computadoras
Cluster
Historia
●
●
●
●
●
En 1983 los protocolos y herramientas para el trabajo remoto, que
facilitaron la distribución y el uso compartido de archivos, fueron definidos
(en gran medida dentro del contexto de BSD Unix, e implementados por
Sun Microsystems).
El primer producto comercial de tipo clúster fue ARCnet, desarrollada en
1977 por Datapoint.
1984 VAXcluster produce el sistema operativo VAX/VMS.
En 1994 se crea Tandem Himalaya.
IBM S/390 Parallel Sysplex se crea en 1994, principalmente para el uso de
la empresa.
Cluster
Historia
●
●
●
PVM (parallel virtual machine: ‘máquina virtual paralela’).
En 1993 se inicia
un proyecto de la NASA para construir
supercomputadoras de clústeres.
En 1995, la invención de la Beowulf una granja de computación.
Cluster
Ventajas
● Mayor velocidad de computación, al interactuar un
gran número de computadoras como si de una sola
se tratase. "Procesamiento en paralelo"
● Mayor disponibilidad, evita la no disponibilidad de un
sitio web, por la caída de uno de sus servidores al
direccionar su contenido directamente a otro
servidor.
● Ahorro en infraestructura
Cluster
Desventajas
● Requieren en muchos casos de un elevado nivel de
conocimientos para su montaje y configuración.
● En muchos casos, para alcanzar capacidades de
procesamiento similares a las de equipos actuales se
requiere un gran espacio para el elevado número de
computadoras.
● Existen muchos programas los cuales son
incompatibles para procesar en paralelo, o no son
capaces de migrar el 100% de los procesos.
Cluster
Clasificación
● High Performance o Alto Rendimiento
● High Availability o Alta Disponibilidad
● High Reliability o Alta Confiabilidad
● Homogéneos
● Heterogéneos
Cluster
Clasificación:
High Performance o Alto Rendimiento
El objetivo es mejorar el rendimiento, de tiempo o
precisión, para la solución de un problema, que pueden
ser de este tipo:
● Cálculos matemáticos
● Mejora de gráficos
● Compilación de programas
● Descifrado de códigos
● Rendimiento del sistema operativo
Cluster
Clasificación:
High Availability o Alta Disponibilidad
Están destinados a mejorar los servicios que ofrecen
las empresas de cara a los clientes de una red, ya sea
local o de internet. Fundamentalmente tienen dos
características:
● Fiabilidad
● Disponibilidad
Cluster
Clasificación:
High Reliability o Alta Confiabilidad
Con alta confiabilidad se trata de aportar la máxima
confianza en un entorno en el cual se necesita saber
que el sistema siempre se va a comportar de una
forma determinada, como por ejemplo sistemas de
respuesta a tiempo real.
Suele ser usado para entornos de tipo empresarial,
necesitando un hardware especializado.
Cluster
Clasificación
● Clúster homogéneo: tienen todos la misma
configuración de hardware y sistema operativo.
● Clúster
semihomogéneo:
diferente
rendimiento pero con arquitecturas y sistemas
operativos similares.
● Clúster
heterogéneo:
tienen
hardware y sistema operativo
diferente
Cluster
Componentes
●
●
●
●
●
●
●
●
Nodos
Almacenamiento
Sistemas operativos
Conexiones de red
Middleware
Protocolos de comunicación y servicios
Aplicaciones
Ambientes de programación paralela
Cluster
Componentes:
Nodos
●
Cada una de las máquinas involucradas es un nodo.
●
Pueden ser simples computadoras, sistemas multiprocesador o estaciones de trabajo.
●
Dedicados / no dedicados.
●
○
Exclusividad de uso por la máquina "maestro".
○
La máquina "maestro" usa los ciclos de reloj libres de las máquinas "esclavos".
Similitud
○
Arquitectura
○
Sistemas operativos
Cluster
Componentes:
Almacenamiento
Comparten la capacidad de almacenamiento, logrando un gran disco duro distribuido
entre todos los nodos del clúster
●
●
Se comunican usando el protocolo NFS (Network File System)
Puede consistir de
○ NAS(Network-Attached Storage)
■ Comparte la capacidad de un servidor con clientes a través de una red.
■ Todos los nodos acceden a un NAS Head, que actúa como interfaz entre los
clientes.
■ Hacen peticiones de archivos al NAS Head y trabajan con estos localmente.
■ Normalmente usa el protocolo TCP/IP
■ Hacen uso del tráfico de la red de clústeres.
○
SAN(Storage Area Network)
■ Consta de una red de alta velocidad, un equipo de interconexión y discos
duros.
■ Tráfico de datos es totalmente independiente del tráfico de usuario, es una
conexión dedicada.
■ Brinda mayor velocidad, seguridad y fiabilidad.
Cluster
Componentes:
Sistemas Operativos
●
Para un clúster se debe contar con un sistema operativo multiproceso y
multiusuario.
●
Debe tener tolerancia a fallos y capacidad de recuperación después de una falla, los
procesos activos en el resto del sistema deben haciendo caso omiso al error.
○
Cuando deja de funcionar apropiadamente un nodo.
○
Cuando quitan un nodo del clúster.
●
Es importante la escalabilidad y que esté altamente disponible.
●
Logrando ver al sistema como una sola máquina, para el usuario y para la red.
Cluster
Componentes:
Sistemas Operativos
Algunos sistemas operativos para clúster para Unix son:
●
●
●
●
Solaris MC
○ Desarrollado en Sun Microsystems
○ Implementado como una extensión del sistema base Solaris.
UnixWare
○ Desarrollado en Lancaster University, 1990s
○ Basado en UnixWare 7
MOSIX
○ Desarrollado en The Hebrew University of Jerusalem, 1990s
○ Adapta el kernel Linux/UNIX para tener capacidades de clúster.
GLUnix
○ Desarrollado en la Universidad de California, 1980s
○ Basado en Solaris 2.3-2.6
Cluster
Componentes:
Conexiones de red
Hay diversas maneras de hacer llevar a cabo la conexión entre nodos del clúster
●
●
Ethernet
○
La forma más básica de conexión.
○
Actualmente es la más utilizada por su bajo costo.
○
Normalmente con un ancho de banda de 1 Gbit/s
○
Latencia de 30 a 100 µs ( 1 s = 1.000.000 µs)
Myrinet (2000 / Myri-10G)
○
Tiene ancho de banda de 2 Gbit/s (2000) a 10 Gbit/s (10G)
○
Tiene una latencia de 3 a 10 µs
○
La red de baja latencia más usada en clústeres
Cluster
Componentes:
Conexiones de red
●
InfiniBand
○
Deriva de un estándar desarrollado específicamente para comunicación en clústeres.
○
Con agregación de canales, que puede ser en grupos de 4 o de 12, se alcanzan
niveles de ancho de banda increibles.
○
Tiene diferentes tasas de transferencia de datos.
○
Con una tasa de transferencia de datos EDR (Enhanced Data Rate) y una
agrupación de 12 canales se logra un ancho de banda de 300 Gbit/s
○
Lo logra permitiendo que varios nodos usen la red al mismo tiempo.
○
Define conexiones entre un nodo de computación, que lleva a cabo los cálculos, y un
nodo de I/O, para almacenamiento de datos generados o lectura de datos
necesarios
Cluster
Componentes:
Conexiones de red
●
SCI (Scalable Coherent Interface)
○
Tiene una latencia de 1,43 µs
○
Ancho de banda de 5333 Mbit/s
○
No necesita un conmutador (switch)
○
Adecuada para clústeres de mediano o pequeño tamaño
○
Se pueden llevar a cabo todas las comunicaciones a través de SCI-SOCKETS,
dejando transparencia al usuario
Cluster
Componentes:
Middleware
El middleware es un software que se encuentra entre el sistema operativo y
las aplicaciones. En un cluster se utiliza para proveer al mismo lo siguiente:
●
Proveer una interfaz única de acceso al sistema conocida como SSI
(Single System Image).
●
Herramientas para optimización, mantenimiento y administración del
sistema. Debe permitir manejo de procesos, balanceo de cargas,
tolerancia a fallos, etc.
●
Escalabilidad.
Cluster
Componentes:
Middleware
Existen varias implementaciones de middleware para clústeres, entre las
más populares se encuentran:
●
MOSIX (Propietario) es un sistema operativo distribuido.
●
LinuxPMI: Linux Process Migration Infrastructure está basado en el
abandonado proyecto OpenMOSIX (Open Source) el cual a su vez fue
un fork de MOSIX cuando este pasó a ser propietario.
●
HTCondor (anteriormente llamado Condor).
●
OpenSSI: es un software de para clusters que permite tratar a un
conjunto de computadoras como si fuera un único gran computador.
Cluster
Componentes:
Aplicaciones
Los clusters son utilizables en muchas situaciones en donde se requieran de
una gran cantidad de recursos como lo son:
●
Aplicaciones científicas: simuladores, genómica computacional, predicción
meteorológica, simulación de corrientes y vertidos en el mar, aplicaciones
en química computacional.
●
Aplicaciones empresariales: se utiliza para empresas que requieren alta
disponibilidad y entrega inmediata. Es usual que en un cluster se aloje un
sistema que maneje varios servicios, por ejemplo, en un nodo puede estar
alojado el manejador de bases de datos, en otro nodo el servidor web y así
sucesivamente mientras más servicios sean manejados. Ejemplos de estos
son: Flickr , Wikipedia, Google, etc.
Cluster
Componentes:
Ambientes de programación paralela
Librerías
●
Atlas: es una implementación mejorada del estándar BLAS (Basic Linear
Algebra Subproblems) con algunas rutinas LAPack adicionales. Maneja
cálculos vectoriales, gráficos y de álgebra lineal.
●
GSL (GNU Scientific Library) es un extenso conjunto de rutinas para
cómputos numéricos y científicos orientada a programadores del lenguaje
C.
●
GMP (GNU Multiple Precision Library): es utilizada para permitir el manejo
exacto de muy grandes y muy pequeños números enteros, racionales y
reales.
Cluster
Componentes:
Ambientes de programación paralela
Hay distintos modelos de programación paralela pero el más común,
particularmente en clusters Linux es el paso de mensajes.
Las dos especificaciones más populares para el paso de mensajes son:
● PVM (Parallel Virtual Machine)
● MPI (Message Passing Interface)
Ambas definen especificaciones para crear librerías y APIs que puedan ser
usadas en distintos lenguajes como Fortran, C, C++, Python, Java, entre otros.
MPI, el cual es más nuevo que PVM, tiene algunas ventajas y es considerado
un open standard, las implementaciones más populares de éste son LAM (Local
Area Multicomputer) y MPICH.
Cluster
Sistemas de clústeres implementado
●
●
●
●
Google
RoadRunner IBM (Los Álamos National Laboratory):
○ 122400 cores
○ 1042-1375 TFlops/s
○ 2345 KW de poder
○ Linux
○ 22 top 500 Noviembre 2012
Beowulf: Formado a partir de hardware de bajo costo y con sistemas
operativos en base a Unix
PS2: 70 consolas play station 2, con sistema operativo Sony Linux Kit
Cluster
Sistemas de clústeres implementado
Google
RoadRunner
Cluster
Sistemas de clústeres implementado
Ps2 Cluster
Beowulf
Cluster
Bibliografía
[1] http://es.wikipedia.org/wiki/Cluster_(informática)
[2] http://root-neztgul.blogsp ot.com/2008/11/sistemas-distribuidos-cluster.html
[3] http://wwwclusterinformatica.blogspot.com/2011/05/cluster-informatica.html
[4] http://www.telefonica.net/web2/victormn128/cluster_cinco.htm
[5]http://www.ibiblio.org/pub/linux/docs/LuCaS/Manuales-LuCAS/doc-clustercomputadoras/doc-cluster-computadoras-html/node7.html
[6]http://icaro.eii.us.es/descargas/segunda%20parte%20Sistemas%20Multiprocesadores%
202006_2007.pdf
[7] http://www.fing.edu.u://es.m.wikipedia.org/wiki/Cl%C3%BAster_(inform%C3%A1tica)
[8] http://www.fing.edu.uy/inco/cursos/hpc/material/clases/Clusters.pdf
[9] http://www.uhu.es/josem.bravo/AD/Tema3.pdf
[10] http://technet.microsoft.com/es-es/library/bb124225(v=exchg.65).aspx
[11] http://www.ac.uma.es/~sromero/ad/AD4_Clusters.pdf
[12] http://xxito.files.wordpress.com/2008/11/trabajo-final-beowulf.pdf