Versión 1.0
Proyecto OpenMosix - 1
Proyecto OpenMosix - 2
LICENCIA
0. PREAMBLE
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free program
should come with manuals providing the same freedoms that the software does.
But this License is not limited to software manuals; it can be used for any
textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose
is instruction or reference.
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be distributed
under the terms of this License. Such a notice grants a world-wide, royalty-
free license, unlimited in duration, to use that work under the conditions
stated herein. The "Document", below, refers to any such manual or work.
Any member of the public is a licensee, and is addressed as "you". You accept
the license if you copy, modify or distribute the work in a way requiring
permission under copyright law.
Proyecto OpenMosix - 3
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the publishers
or authors of the Document to the Document's overall subject (or to related
matters) and contains nothing that could fall directly within that overall
subject. (Thus, if the Document is in part a textbook of mathematics, a
Secondary Section may not explain any mathematics.) The relationship could be
a matter of historical connection with the subject or with related matters,
or of legal, commercial, philosophical, ethical or political position
regarding them.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that the
Document is released under this License. A Front-Cover Text may be at most 5
words, and a Back-Cover Text may be at most 25 words.
The "Title Page" means, for a printed book, the title page itself, plus
such following pages as are needed to hold, legibly, the material this
License requires to appear in the title page. For works in formats which do
not have any title page as such, "Title Page" means the text near the most
prominent appearance of the work's title, preceding the beginning of the body
of the text.
Proyecto OpenMosix - 4
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty Disclaimers
are considered to be included by reference in this License, but only as
regards disclaiming warranties: any other implication that these Warranty
Disclaimers may have is void and has no effect on the meaning of this
License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the copyright
notices, and the license notice saying this License applies to the Document
are reproduced in all copies, and that you add no other conditions whatsoever
to those of this License. You may not use technical measures to obstruct or
control the reading or further copying of the copies you make or distribute.
However, you may accept compensation in exchange for copies. If you
distribute a large enough number of copies you must also follow the
conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the Document's
license notice requires Cover Texts, you must enclose the copies in covers
that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on
the front cover, and Back-Cover Texts on the back cover. Both covers must
also clearly and legibly identify you as the publisher of these copies. The
front cover must present the full title with all words of the title equally
prominent and visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve the
title of the Document and satisfy these conditions, can be treated as
verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit reasonably) on
the actual cover, and continue the rest onto adjacent pages.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give them
a chance to provide you with an updated version of the Document.
Proyecto OpenMosix - 5
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release the
Modified Version under precisely this License, with the Modified Version
filling the role of the Document, thus licensing distribution and
modification of the Modified Version to whoever possesses a copy of it. In
addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
Proyecto OpenMosix - 6
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material copied
from the Document, you may at your option designate some or all of these
sections as invariant. To do this, add their titles to the list of Invariant
Sections in the Modified Version's license notice. These titles must be
distinct from any other section titles.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified versions,
provided that you include in the combination all of the Invariant Sections of
all of the original documents, unmodified, and list them all as Invariant
Sections of your combined work in its license notice, and that you preserve
all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single copy. If
there are multiple Invariant Sections with the same name but different
contents, make the title of each such section unique by adding at the end of
it, in parentheses, the name of the original author or publisher of that
section if known, or else a unique number. Make the same adjustment to the
section titles in the list of Invariant Sections in the license notice of the
combined work.
Proyecto OpenMosix - 7
6. COLLECTIONS OF DOCUMENTS
8. TRANSLATION
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to copy,
modify, sublicense or distribute the Document is void, and will automatically
terminate your rights under this License. However, parties who have received
copies, or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
Proyecto OpenMosix - 8
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the
GNU Free Documentation License from time to time. Such new versions will be
similar in spirit to the present version, but may differ in detail to address
new problems or concerns. See http://www.gnu.org/copyleft/ .
Proyecto OpenMosix - 9
1. INTRODUCCIÓN
1.1 ¿Qué es un cluster?
1.2 ¿Qué es un nodo?
1.3 ¿Qué características tiene un cluster?
1.4 ¿Clusters homogéneos o clusters heterogéneos?
1.5 ¿Qué software necesita un cluster?
1.6 ¿Clusters vs Superordenadores?
1.7 ¿Qué es la escalabilidad?
1.8 ¿Qué tipos de clusters existen?
1.9 ¿Qué es el procesamiento paralelo?
1.10 ¿Qué problemas se pueden resolver mediante paralelización?
1.11 ¿Qué es un sistema distribuido?
1.12 ¿Qué es un sistema operativo distribuido?
1.13 ¿Por qué elegimos GNU/Linux para nuestro clúster?
1.14 ¿Qué es OpenMosix?
1.15 ¿Por qué hemos elegido OpenMosix?
1.16 ¿Cuales son las desventajas de OpenMosix?
1.17 ¿Se puede solucionar el problema de memoria compartida?
1.18 ¿Cuál es el objetivo de este proyecto?
2 CONFIGURACIÓN
2.1 Hardware
2.1.1 Nodos
2.1.2 Router
2.1.3 Topología de red y cableado
2.2Versiones del software
2.2.1 Distribución de linux
2.2.2 Openmosix
2.2.3 Versión del kernel
2.2.4 Userspace Tools
2.2.5 Openmosixview
2.2.6 Librerías MPI
2.3 Opciones de compilación del kernel
2.4 Configuración de la red local
2.4.1 Seguridad en el cluster
2.4.2 Configuración del router
2.4.3 Uso de la red por parte de openMosix
2.5 Openmosix.map
2.6 Openmosix.config
2.7 Scripts
2.8 Sistemas de ficheros
2.9 Detección automática de nodos
2.10El algoritmo de migracion
2.11Consideraciones finales
3. HERRAMIENTAS DE ADMINISTRACIÓN
Proyecto OpenMosix - 10
3.1Openmosix Tools
3.1.1. Mostcl
3.1.2. Mosrun
3.1.3. Migrate
3.1.4. Mosmon
3.1.5. Moslimit
3.1.6. Mps
3.1.7. Setpe
3.2 Openmosixview
3.3 Consideraciones finales
4. TESTS Y BENCHMARKS
4.3 Codificación de ficheros de audio .wav a .mp3
4.4 Cisilia
4.5 Openmosix Stress Test
4.6 NAS Parallel Benchmarks 2.0
4.7 Compilación del kernel
4.8 Pallas MPI Benchmarks (PMB-MPI1)
6. REFERENCIAS
6.1 Webs
6.2 Libros
6.3 Revistas
6.4 Otros
7. AGRADECIMIENTOS
Proyecto OpenMosix - 11
1. INTRODUCCIÓN
¿Qué es un cluster?
¿Qué es un nodo?
Proyecto OpenMosix - 12
Los objetivos en el diseño de una SSI para sistemas clusters se
enfocan principalmente en la total transparencia en el manejo de recursos,
el rendimiento escalable y la disponibilidad del sistema para soportar las
aplicaciones del usuario. Una SSI puede definirse como la ilusión, creada por
hardware o por software, que presenta una colección de recursos como un
sólo, y más poderoso, recurso unificado.
¿Clusters vs Superordenadores?
¿Qué es la escalabilidad?
Proyecto OpenMosix - 13
mediante la reutilización de componentes.
Los clusters de alto rendimiento son los que hemos escogido para
nuestro proyecto. Éstos se basan en un conjunto de máquinas diseñadas
para lograr una capacidad de cálculo máxima al repartirse la carga de los
procesos entre los nodos de acuerdo a las reglas escogidas. Con ésto se
consigue mejorar el rendimiento en la obtención de la solución de un
problema.
Por último están los clusters de alta confiabilidad, que son una mezcla
de los de alta disponibilidad y los de alto rendimiento. Tienen como objetivo
evitar que las aplicaciones se caigan. No existe otra manera de conservar el
estado de las aplicaciones que mediante la inclusión de puntos de parada
(checkpoints), pero en conexiones de tiempo real no son suficientes, ya que
Proyecto OpenMosix - 14
no se trata únicamente de utilizar el último checkpoint del sistema y
relanzar el servicio.
Proyecto OpenMosix - 15
¿Qué es el procesamiento paralelo?
● Granjas de compilación
● Granjas de renderización
● Procesos matemáticos
➢ Multiplicación de matrices
➢ Suma de vectores por componentes
➢ Multiplicación de matrices o vectores por escalares o funciones
escalares.
➢ Integrales definidas (creando intervalos más pequeños como
elementos de proceso)
● Compresión
● Aplicación a nuevos paradigmas inherentemente paralelos
➢ Redes neuronales
➢ Algoritmos genéticos
Proyecto OpenMosix - 16
Llevar a la práctica la idea de un kernel global distribuido es muy
difícil, pues podría haber inconsistencias de datos en el kernel, además se
necesita al menos el kernel mínimo para enviar y recibir información y un
mecanismo robusto de comunicación y eficiente para evitar latencias
demasiado elevadas. Lo que se han desarrollado hasta ahora son los
llamados sistemas operativos en red. En estos sistemas cada máquina tiene
su propio kernel. Los sistemas están conectados por una red y se puede
hacer login remoto en ellos, en todo momento el usuario sabe donde se
encuentran todos los recursos (ficheros, procesos, etc.). No es un sistema
distribuido,pero actualmente se está caminando desde los sistemas
operativos en red a los sistemas distribuidos. Aunque aún no se han
cumplido los objetivos de un sistema distribuido completamente tenemos ya
algunos avances.
¿Qué es OpenMosix?
Proyecto OpenMosix - 17
que lo una a los demás nodos, ya que aunque todos deben utilizar el
protocolo TCP/IP para comunicarse entre ellos, no todos tienen que estar
conectados en la misma subred, ni utilizar los mismos medios físicos de
unión(ethernet, PPP,etc...).
Proyecto OpenMosix - 18
¿Cuáles son las desventajas de OpenMosix?
Proyecto OpenMosix - 19
2. CONFIGURACIÓN
2.1 Hardware
2.1.1 Nodos
Cada uno de los nodos ha sido bautizado con un nombre dentro del
cluster, los integrantes serían Shadowland, Asimov y salon.
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model :8
model name: AMD Athlon(tm) XP 2000+
stepping :0
cpu MHz : 1679.042
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception: yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 mmx fxsr sse syscall mmxext
3dnowext 3dnow
bogomips : 3348.88
Proyecto OpenMosix - 20
Dispone de 256Mb de memoria RAM, con tecnología DDR a 333MHz,
80 Gb de disco duro distribuido en dos discos duros de 40 Gb, la tarjeta de
red que tiene instalada es una Tarjeta de red PCI Fast Ethernet 10/100MB
con chipset Realtek. Los tres ordenadores disponen del mismo modelo de
tarjeta, para permitir que este modelo concreto funcione bajo nuestro
sistema operativo al recompilar el kernel activamos dentro de la sección
Network Device Support ->Ethernet 10/100 -> Realteck RTL-8139 PCI Fast
Ethernet Adapter Support.
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model :4
model name: AMD Athlon(tm) Processor
stepping :2
cpu MHz : 1212.223
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception: yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca
cmov pat pse36 mmx fxsr syscall mmxext 3dnowext
3dnow
bogomips : 2392.06
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model :7
model name: Pentium III (Katmai)
stepping :3
Proyecto OpenMosix - 21
cpu MHz : 501.167
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception: yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca
cmov pat pse36 mmx fxsr sse
bogomips : 999.42
Proyecto OpenMosix - 22
char. Las verdaderas funciones de retardo están en ensamblador, y por lo
tanto cada plataforma tiene su propia función en include/asm/delay.h
2.1.2 Router
Proyecto OpenMosix - 23
2.1.3 Topología de red y cableado
UTP: Par trenzado sin apantallar, se trata del modelo más extendido
debido a su menor coste. Hay distintas calidades dentro de este modelo que
van de la 1 a la 5 siendo la calidad 5 la mejor de todas ellas.
Proyecto OpenMosix - 24
2.2 Versiones del software:
2.2.2 OpenMosix
Proyecto OpenMosix - 25
Al tratarse de un sistema operativo libre, las actualizaciones son
constantes y cada actualización lleva consigo un cambio en el nombre del
núcleo. La última versión estable fue publicada a finales de diciembre de
2003 y se trata de la rama 2.6, sin embargo no vamos a trabajar con ella
debido a que estamos sujetos a la utilización de la versión de la que hemos
elegido el parche.
2.2.5 Openmosixview
2.2.6Librerías MPI
Proyecto OpenMosix - 26
nosotros teníamos. Para averiguar la ruta utilizamos el comando whereis del
siguiente modo:
$ whereis mpif77
mpif77: /usr/bin/mpif77
$ whereis mpicc
mpicc: /usr/bin/mpicc
$ whereis mpich
mpich: /usr/lib/mpich
-w: Espera a que todas las aplicaciones acaben antes de salir del
programa mpirun.
El único argumento que hemos utilizado a parte de los dos por defecto
es el siguiente:
Ejecutamos la orden:
$ make xconfig
Proyecto OpenMosix - 27
En ella hemos marcado:
Proyecto OpenMosix - 28
de identidad de procesos en 1 : nivel en el que tan solo enviamos el PID,
identificador de proceso. Nos hemos decantado por esta opción debido a
que queremos enviar la mínima cantidad de datos posibles a través de la
red, evitando el tiempo innecesario de transferencia de datos redundantes.
Proyecto OpenMosix - 29
Llegados a este punto movemos el archivo con el kernel ya compilado
hasta la carpeta /boot y modificamos el gestor de arranque de los
ordenadores para permitir que al reiniciar nuestros sistemas podamos
iniciar nuestros nodos con la configuración del cluster activada.
127.0.0.1 localhost
192.168.2.2 nodo2
192.168.2.10 nodo1
192.168.2.20 nodo3
192.168.2.1 router
X = 10 en el nodo 1.
X = 2 en el nodo 2.
X = 20 en el nodo 3.
Proyecto OpenMosix - 30
2.4.1 Seguridad en el cluster
192.168.2.2
192.168.2.10
192.168.2.20
ALL PARANOID
Proyecto OpenMosix - 31
tener en cuenta que en clusters con un gran número de nodos la congestión
de la red y las colisiones son problemas que realmente pueden restar gran
cantidad de eficiencia al cluster. En nuestro caso, al tratarse tan sólo de tres
nodos con un hub que gestiona el tráfico de la red, es presumible que no
perderemos eficiencia debido a estos problemas.
La red sobre la que hemos montado el cluster es una red Ethernet que
se caracteriza por tener una velocidad teórica de transmisión de 10Mb/seg.
El protocolo Ethernet está especificado en el estándar IEEE 802.3. Es half
duplex, significa que tenemos un medio físico (cable de red) que se
comparte como soporte de la red tanto para el envío como para la recepción
de datos. El acceso a la red se gestiona mediante el protocolo CSMA/CD.
Básicamente este protocolo se encarga de escuchar la red antes de enviar
los datos para comprobar si ya hay paquetes en la red. Con este
procedimiento evitamos las colisiones en la red y mejoramos su
rendimiento.
Proyecto OpenMosix - 32
El demonio de migrado de aplicaciones escucha constantemente en la
red utilizando el puerto 4660 que es de tipo TCP, también se encuentra
abierto el puerto 5428, este puerto es del tipo UDP y es utilizado por un
demonio de información de migrado. Eventualmente utiliza otro puerto, el
723 que es de tipo TCP. La siguiente información es la que obtenemos al
hacer un netstat:
$ netstat -tupan
2.5 Openmosix.map
1 192.168.1.200 4
Proyecto OpenMosix - 33
2.6 Openmosix.config
Block: El valor elegido es “no” ya que con esta opción permitimos que
no hay ningún tipo de bloqueo de entrada de los procesos en los nodos.
2.7 Scripts
$ setpe –w –f /etc/openmosix.map
Proyecto OpenMosix - 34
Ejecutando esta orden en cada uno de los nodos del cluster le
obligamos a hacer un mapeado del fichero /etc/openmosix.map
configurando cada nodo a lo largo del cluster.
$ setpe –off
$ ln –s /etc/init.d/openmosix /etc/rc2.d/S99openmosix
Proyecto OpenMosix - 35
Con motivo similar al anterior también hemos realizado cambios en el
fichero de configuración de arranque /etc/inittab. Mediante la siguiente línea
le decimos al sistema que tan solo arranque en el nivel dos:
id:2:default
Proyecto OpenMosix - 36
Hasta el momento tenemos nuestro sistema de ficheros montado en la
partición “/” de cada uno de los nodos. Al instalar el parche del openMosix
vimos la opción de su sistema de ficheros. Ha llegado el momento de
explicar lo que es y el porqué de su uso en este cluster.
• Consistencia de cache.
• Consistencia de “Time stamp”.
• Consistencia de enlace.
Llegados a este punto ya tenemos una base teórica sobre el uso del
sistema de ficheros en nuestro cluster. Ahora nos disponemos a explicar qué
pasos hemos dado para conseguir que nuestros nodos reconozcan el
espacio de disco compartido y permitir a los procesos migrados utilizar de
forma útil el nuevo espacio de disco destinado para ellos.
Proyecto OpenMosix - 37
Ahora nos disponemos a crear dos directorios, uno de ellos será el
mismo para los tres nodos. El segundo tendrá un nombre distinto
dependiendo del nodo. Ambos colgarán del directorio raíz, el primero de
ellos se llamara mfs y el segundo se llamara de forma distinta dependiendo
del nodo,para posteriormente crear enlaces simbólicos desde el resto de los
nodos:
$ ln –s /mfs/2/work2 /work2
$ ln –s /mfs/3/work3 /work3
Proyecto OpenMosix - 38
2.9 Detección automática de nodos
$ showmap
My Node-Id: 0x0001
Base Node-Id Address Count
---------- ----------------------- --------
0x0001 192.168.2.10 1
0x0002 192.168.2.2 1
0x0003 192.168.2.20 1
Proyecto OpenMosix - 39
La razón por la que no hemos utilizado el sistema de autodetección de
nodos es porque es mucho más seguro confiar la topología del cluster a un
fichero de configuración que a un demonio que puede fallar en un momento
determinado. Además los paquetes multicast empeoran (aunque sea
insignificantemente) el trafico de la red produciendo colisiones.
Proyecto OpenMosix - 40
Para que un proceso sea migrable debe cumplir las siguientes
condiciones:
Proyecto OpenMosix - 41
Con esto se consigue la transparencia tanto a nivel de proceso
migrado como a nivel del resto de procesos que cohabitan en el nodo raíz
sin tener que reescribir el programa paralelamente ni conocer la topología
del cluster.
Proyecto OpenMosix - 42
3. HERRAMIENTAS DE ADMINISTRACIÓN
3.1.1MOSCTL
Proyecto OpenMosix - 43
[gettune|getdecay]: Mediante la opción gettune podemos mostrar
el valor actual del parámetro overhead que es usado en el kernel para
estimar el valor de Entrada/Salida en el balanceo de carga del cluster. Estos
valores se miden en microsegundos.
$ mosctl gettune
$ mosctl getdecay
Proyecto OpenMosix - 44
podemos averiguar su IP y si por el contrario solo sabemos el identificador
del nodo podemos averiguar su IP. Este procedimiento busca en los archivos
de configuración como el /etc/openmosix.map o el /etc/hosts para averiguar
los datos que hemos de consultar.
$ mosctl whois 3
192.168.2.20
mosctl [getload|getspeed|status|isup|getmem|getfree|getutil]
[openMosix_ID]
Proyecto OpenMosix - 45
• getmem: Muestra la memoria lógica disponible en el nodo
especificado.
$ mosctl getload 3
load=0
$ mosctl getspeed 1
speed=17000.
$ mosctl getspeed 3
speed=5000.
$ mosctl isup 2
no
$ mosctl getmem 3
free memory = 324362240 of 335478784
$ mosctl getutil 1
Utilizability = 100%
Proyecto OpenMosix - 46
3.1.2 MOSRUN
Proyecto OpenMosix - 47
3.1.3 MIGRATE
Su sintaxis es la siguiente:
$ migrate pid 2
3.1.4MOSMON
-d: Muestra todos los nodos, incluso aquellos que no responden por
estar apagados o tener la opción de openMosix deshabilitada
temporalmente.
Proyecto OpenMosix - 48
La siguiente imagen es una capturación del programa mosmon con la
opción -d. Como podemos observar nos muestra la carga actual de los
nodos del cluster, para mostrar el uso de la opción -d hemos desactivado el
nodo 2.
Proyecto OpenMosix - 49
s: Nos muestra la velocidad de cada procesador.
Proyecto OpenMosix - 50
r: Muestra la memoria física utilizada frente a la disponible en cada
nodo.
3.1.5 MOSLIMIT
Proyecto OpenMosix - 51
de CPU y permitir que los procesos locales se ejecutaran con mayor
prioridad.
3.1.6 MPS
$ ompsinfo
Proyecto OpenMosix - 52
xinit 1888 0 0 0 migratable
XFree86 1889 0 0 0 monkey, mmap_dev, direct_io
x-session-manag 1892 0 0 0 monkey
ssh-agent 1923 0 0 0 migratable
gconfd-2 1926 0 0 0 migratable
bonobo-activati 1928 0 0 0 migratable
gnome-smproxy 1930 0 0 0 migratable
gnome-settings- 1932 0 0 0 monkey
metacity 1946 0 0 0 monkey
gnome-panel 1948 0 0 0 monkey
wnck-applet 1950 0 0 0 monkey
notification-ar 1952 0 0 0 migratable
gnome-terminal 1984 0 0 0 monkey
gnome-pty-helpe 1985 0 0 0 migratable
bash 1986 0 0 0 migratable
mozilla-bin 2027 0 0 0 monkey, clone_vm
mozilla-bin 2034 0 0 0 monkey, clone_vm
mozilla-bin 2035 0 0 0 monkey, clone_vm
mozilla-bin 2037 0 0 0 monkey, clone_vm
abiword 2117 0 0 0 monkey
ompsinfo 2189 0 0 0 migratable
$ ompsinfo 1
3.1.7SETPE
$ setpe -s -f /etc/openmosix.map
Proyecto OpenMosix - 53
Con esta orden indicamos que nuestro nodo local ya no pertenecerá al
cluster:
$ setpe -off
$ setpe -r
3.2 OPENMOSIXVIEW
Proyecto OpenMosix - 54
con una segunda columna en la que vemos las ips asignadas a cada uno de
los ordenadores del cluster.
Proyecto OpenMosix - 55
En la primera barra horizontal vemos la gráfica del cluster en conjunto
mientras que en las tres porciones restantes de pantalla tenemos el
balanceo de carga de los tres nodos del cluster. Como ejemplo hemos hecho
click en la lupa del grupo "All" nos aparece una nueva ventana con las
estadísticas del balanceo de carga con barras verticales de distintos colores
que nos indican el valor mínimo, medio y máximo respectivamente.
Proyecto OpenMosix - 56
Podemos ver mediante esta capturación que cada uno de los nodos
está representado por un círculo. Los puntos negros son los procesos que se
están ejecutando localmente (en este caso el nodo 2 tendría dos procesos
locales), los puntos verdes son los procesos que hemos migrado (los nodos
1 y 3 habrían obtenido procesos del nodo 2). Las líneas discontinuas nos
indican el origen del proceso.
Para realizar el proceso de migrado tan solo tenemos que hacer click
sobre uno de los punto y arrastrar el proceso hasta el ordenador que
queremos que lo ejecute.
$ ssh-keygen -t rsa
Proyecto OpenMosix - 57
$ cat authorized2_keys
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEAvXq55KQTpnwK9Bhn9a9edx9Ab
TNoNqdTzwhxMJRvzrqohYfq16Wv09qgK6WvE5IH5v/WT+92xuAR6iU
kB5aMysd4yOhdiu6FHpSK6wGhgVSdpFJsd6s+1A4eoRKwMFRtqRG/b
QPn5758BiFDuAhSbVMLTYiFyTy4iI1I0pP19qs= root@Asimov
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEA2k+KKxLkmkqvgf9sdWFcsBKnoY
zJj4mTKNeXixBT+4ec5NcOQ4/LgXHfYizQHos0wilfGwBAipHe8OIzhaN
t7z+ofWD3Vo7ocV3P3Kuuu3ONAtGKrX5lglaIOq3NTBv5GGClKtDXwK
V+msn5rgK+Z0LOILj1eHa/HVgEZwblQP0= root@Shadowland
ssh-rsa
AAAAB3NzaC1yc2EAAAABIwAAAIEA5bpT0iVDZ7dS2zltjl30+3RArZYG
I0PTTHAXrh54RZtdmCBsUVdUzbvONEjoO7qj/FA4l/LPgG/woDlLXnBpy
f2CQ2NGcc0S5QSAEqnCzd79RTiM+e8J+aTV3VWgzoAIbTwQduHzmA
447p1zH1JK9JAguVCE4wmv3bhKEgTC9qM= root@salon
Con ello se consigue que sólo los ordenadores cuya llave pública se
encuentre en este archivo puedan conectarse a nosotros. Esta medida es
importante ya que hay que tener en cuenta que vamos a utilizar un clave
ssh vacía y cualquiera podría entrar en un nuestro ordenador como root
(superusuario) y hacer de él lo que se le antoje.
PasswordAuthentication yes
Después pasamos a configurar el archivo sshd_config (archivo de
configuración del servidor sshd) cambiando únicamente las siguientes
líneas:
PermitRootLogin yes
(permite conectarse al root remotamente)
RSAAuthentication no
(no realiza autentificación de llaves RSA)
PubkeyAuthentication yes
(realiza autentificación de llaves públicas)
AuthorizedKeysFile %h/.ssh/authorized2_keys
(indica al servidor que las claves públicas de los ordenadores a los que
se permite acceder están en %h/.ssh/authorized2_keys. %h=nombre del
usuario.)
PermitEmptyPasswords yes
(permite claves vacías,es decir, sin caracteres)
Proyecto OpenMosix - 58
PasswordAuthentication yes
(requiere autentificación de claves)
Tras esto ya se pueden realizar login remotos sin tener que introducir
ninguna clave:
Proyecto OpenMosix - 59
3.3 CONSIDERACIONES FINALES
Proyecto OpenMosix - 60
4.TESTS Y BENCHMARKS
Nº DE CANCIÓN DURACIÓN
1 3:27
2 2:55
3 3:13
4 3:23
5 3:58
6 3:31
7 2:54
8 4:10
9 4:21
10 4:35
11 4:17
12 3:52
13 3:31
14 3:27
15 3:29
Proyecto OpenMosix - 61
$ bladeenc cancion.wav (la transforma a cancion.mp3)
#!/bin/sh
echo "Comienza la conversión de los 15 archivos"
bladeenc cancion1.wav &
bladeenc cancion2.wav &
bladeenc cancion3.wav &
bladeenc cancion4.wav &
bladeenc cancion5.wav &
bladeenc cancion6.wav &
bladeenc cancion7.wav &
bladeenc cancion8.wav &
bladeenc cancion9.wav &
bladeenc cancion10.wav &
bladeenc cancion11.wav &
bladeenc cancion12.wav &
bladeenc cancion13.wav &
bladeenc cancion14.wav &
bladeenc cancion15.wav &
echo "Ya se han mandado a convertir los 15 procesos (pero no
han acabado) "
$ bladeenc entero.wav
Proyecto OpenMosix - 62
La conclusión más inmediata de este test es que la conversión de los
15 archivos de forma paralela en cluster es un 23.02% más rápida respecto
a la prueba homóloga sin cluster. Sin embargo, el dato que más llama la
atención es que tarde lo mismo tanto en cluster como en solitario en la
conversión de forma secuencial y en la conversión de un sólo archivo que
contenga todo el CD.
4.2CISILIA
$ cisilia -V -n 6 fichero-claves
Proyecto OpenMosix - 63
El alfabeto se ha dejado por defecto en alfanumérico [A-Z] y [0-9] ya
que las contraseñas normalmente utilizadas por los usuarios medios no
llevan caracteres no alfanuméricos.
Proyecto OpenMosix - 64
FORKIT : Similar a EATMEN con la excepción de que utiliza la llamada
al sistema "fork()" para crear múltiples procesos(3 veces el número de
nodos del cluster) y no escribe en ningún archivo.
TEST TIEMPO
DISTKEYGEN 7 min 58 s
PORTFOLIO 7 min 24 s
EATMEM 1 min 43 s
FORKIT 2 min 46 s
TIMEWASTER 5 min 29 s
OMFSTEST 5 min 46 s
Proyecto OpenMosix - 65
3.4 NAS PARALLEL BENCHMARKS 2.0
Proyecto OpenMosix - 66
IS Benchmark
Class = A Class = B
Size = 8388608 Size = 33554432
Iterations = 10 Iterations = 10
Time in seconds = 16.71 Time in seconds = 3945.41
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 5.02 Mop/s total = 0.09
Mop/s/process = 1.26 Mop/s/process = 0.02
Operation type = keys ranked Operation type = keys ranked
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Class = S Class = W
Size = 65536 Size = 1048576
Iterations = 10 Iterations = 10
Time in seconds = 0.09 Time in seconds = 1.76
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 7.49 Mop/s total = 5.95
Mop/s/process = 1.87 Mop/s/process = 1.49
Operation type = keys ranked Operation type = keys ranked
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
EP Benchmark
Class = A Class = B
Size = 536870912 Size = 2147483648
Iterations = 0 Iterations = 0
Time in seconds = 61.82 Time in seconds = 219.97
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 8.69 Mop/s total = 9.76
Mop/s/process = 2.17 Mop/s/process = 2.44
Operation type = Random numbers Operation type = Random numbers
generated generated
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Class = S Class = W
Size = 33554432 Size = 67108864
Iterations = 0 Iterations = 0
Time in seconds = 5.70 Time in seconds = 10.61
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 5.89 Mop/s total = 6.33
Mop/s/process = 1.47 Mop/s/process = 1.58
Operation type = Random numbers Operation type = Random numbers
generated generated
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Proyecto OpenMosix - 67
MG Benchmark
Class = A Class = B
Size = 64x 64x 64 Size = 256x256x256
Iterations = 400 Iterations = 20
Time in seconds = 1098.29 Time in seconds = 1983.85
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 77.40 Mop/s total = 9.81
Mop/s/process = 19.35 Mop/s/process = 2.45
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Class = S Class = W
Size = 32x 32x 32 Size = 64x 64x 64
Iterations = 4 Iterations = 40
Time in seconds = 0.17 Time in seconds = 10.99
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 45.53 Mop/s total = 55.36
Mop/s/process = 11.38 Mop/s/process = 13.84
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
CG Benchmark
Class = A Class = B
Size = 14000 Size = 75000
Iterations = 15 Iterations = 75
Time in seconds = 32.42 Time in seconds = 1609.86
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 46.15 Mop/s total = 33.98
Mop/s/process = 11.54 Mop/s/process = 8.50
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Class = S Class = W
Size = 1400 Size = 7000
Iterations = 15 Iterations = 15
Time in seconds = 1.43 Time in seconds = 8.21
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 46.68 Mop/s total = 51.22
Mop/s/process = 11.67 Mop/s/process = 12.81
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Proyecto OpenMosix - 68
FT Benchmark
LU Benchmark
Class = A Class = B
Size = 64x 64x 64 Size = 102x102x102
Iterations = 250 Iterations = 250
Time in seconds = 1003.39 Time in seconds = 5167.12
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 118.89 Mop/s total = 96.54
Mop/s/process = 29.72 Mop/s/process = 24.13
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Class = S Class = W
Size = 12x 12x 12 Size = 33x 33x 33
Iterations = 50 Iterations = 300
Time in seconds = 3.96 Time in seconds = 162.19
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 25.84 Mop/s total = 111.36
Mop/s/process = 6.46 Mop/s/process = 27.84
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Proyecto OpenMosix - 69
SP Benchmark
BT Benchmark
Proyecto OpenMosix - 70
Class = S Class = W
Size = 12x 12x 12 Size = 24x 24x 24
Iterations = 60 Iterations = 200
Time in seconds = 2.68 Time in seconds = 70.23
Total processes = 4 Total processes = 4
Compiled procs = 4 Compiled procs = 4
Mop/s total = 85.17 Mop/s total = 109.91
Mop/s/process = 21.29 Mop/s/process = 27.48
Operation type = floating point Operation type = floating point
Verification = SUCCESSFUL Verification = SUCCESSFUL
Version = 2.3 Version = 2.3
Compile date = 24 Feb 2004 Compile date = 24 Feb 2004
Una vez vistos todos los resultados de los tests vamos a explicar el
significado de cada uno de los valores para averiguar el rendimiento de
nuestro cluster.
Proyecto OpenMosix - 71
Compiled procs: Este valor está relacionado con el campo anterior.
Este número está relacionado con el número de CPU's que tenemos. En
nuestro caso tenemos tres procesadores en los que vamos a ejecutar las
pruebas sin embargo no podemos elegir el número tres ya que en los
benchmark estamos obligados a poner números de procesos que sean
potencias de dos o cuadrados perfectos.
Proyecto OpenMosix - 72
3.5COMPILACIÓN DEL KERNEL
Proyecto OpenMosix - 73
• Exchange: Igual que el anterior salvo que el paso de mensajes se
realiza en ambas direcciones tanto a derecha como a izquierda de cada
eslabón en la cadena.
• Reduce: reduce la longitud de un vector de reales con una longitud
determinada.
• Reduce_scatter: realiza los mismo que el test anterior pero de forma
dispersa y progresiva
• Allreduce: similar al test Reduce pero con funciones de MPI diferentes
• Allgather: cada proceso pasa un número concreto de bytes y recibe
ese mismo número de bytes multiplicado por el número de procesos.
• Allgatherv: similar a Allgather pero utilizando funciones de MPI
diferentes.
• Alltoall: similar a Allgather pero se envían y reciben el número de
bytes multiplicados por el número de procesos.
• Bcast: manda un proceso con un número concreto de bytes a todos los
nodos.
• Barrier: no se menciona su función en la documentación.
Benchmarking PingPong
( #processes = 3 )
Proyecto OpenMosix - 74
Benchmarking PingPing
( #processes = 3 )
Proyecto OpenMosix - 75
Benchmarking Sendrecv
( #processes = 3 )
Proyecto OpenMosix - 76
Benchmarking Exchange
( #processes = 3 )
Proyecto OpenMosix - 77
Benchmarking Reduce
( #processes = 3 )
Proyecto OpenMosix - 78
Benchmarking Reduce_scatter
( #processes = 3 )
Proyecto OpenMosix - 79
Benchmarking Allreduce
( #processes = 3 )
Proyecto OpenMosix - 80
Benchmarking Allgather
( #processes = 3 )
Proyecto OpenMosix - 81
Benchmarking Allgatherv
( #processes = 3 )
Proyecto OpenMosix - 82
Benchmarking Alltoall
( #processes = 3 )
Proyecto OpenMosix - 83
Benchmarking Bcast
( #processes = 3 )
Benchmarking Barrier
( #processes = 3 )
Proyecto OpenMosix - 84
5.CONCLUSIONES Y OPINIÓN PERSONAL
Proyecto OpenMosix - 85
Se requiere la contratación de personal cualificado para su instalación
y mantenimiento, por lo que se genera un gasto innecesario por parte del
empresario. Además el uso del sistema operativo GNU/Linux en las
empresas es todavía limitado aunque se está experimentando un pequeño
“boom” en España a raíz de la introducción del software libre en las
administraciones de algunas comunidades autónomas.
Proyecto OpenMosix - 86
6.REFERENCIAS
6.1 WEBS
http://www.openmosix.org
Web oficial del proyecto OpenMosix. Documentación extraída del
F.A.Q (Frecently Asked Questions) y del HowTo oficiales.
http://www.openmosixview.org
Monitor para el cluster openmosixview y documentación sobre el
mismo.
http://openmosix.gulo.org
Benchmark PMB y documentación en formato PDF
http://es.tldp.org/Manuales-LuCAS/manual-openMosix-
ES/howTo_openMosixES_html/
Manual en castellano sobre clustering en OpenMosix
http://www.nas.nasa.gov/Software/NPB/
Benchmark NPB y documentación sobre el mismo.
http://www.cisiar.org/proyectos/cisilia/home_es.php
Cisilia y documentación sobre dicho programa.
http://openssi.org
Documentación sobre los clusters SSI
http://www.hispacluster.org/
Documentación diversa sobre clustering
http://howto.ipng.be/openMosixWiki/index.php/work%
20smoothly
Información sobre los diversos programas que funcionan en clusters
OpenMosix.
http://www.beowulf.org
Web oficial del proyecto Beowulf
http://www.linux-ha.org
Proyecto sobre clusters de alta disponibilidad en Linux
Proyecto OpenMosix - 87
6.2 LIBROS
6.3 REVISTAS
6.4 OTROS
7.AGRADECIMIENTOS
Proyecto OpenMosix - 88
¡Sonreíd para la foto!
Proyecto OpenMosix - 89