You are on page 1of 15

Planificacin de trabajos

Un Sistema de Planificacin Temporal y Espacial para Clusters no Dedicados


Autor: Mauricio Hanzich
Director: Porfidio Hernndez y Francesc Gin
Tesis UAB, 2006

0.- Introduccin
La planificacin de trabajos tiene como objeto, proporcionar una utilizacin ms
eficiente de los recursos computacionales, a travs de polticas que determinan
los criterios de eleccin de los trabajos a ser ejecutados. El paradigma de
programacin utilizado para construir la aplicacin, tiene una especial
relevancia a la hora de aplicar criterios de planificacin (MPI, openMP,
MapReduce, Pig, Latin, etc) . Las aplicaciones construidas bajo el paradigma
de paso de mensaje en clusters (MPI), habitualmente son planificadas
siguiendo el modelo esttico, donde la planificacin se realiza antes de la
ejecucin; en tiempo de carga o compilacin.
Como es sabido, la planificacin de aplicaciones en un cluster ocurre a dos
niveles: Planificacin Espacial donde se decide en qu procesadores se
ejecutarn los trabajos, y Planificacin Temporal que define la poltica de
planificacin especfica en cada procesador individual decidiendo como se
ejecutarn los trabajos en cada nodo en particular. La figura 1.1 presenta una
taxonoma para el proceso de planificacin de trabajos en clusters.

Figura 1.1 Taxonoma de La Planificacin de Procesos Paralelos

1.- Planificacin Espacial


La planificacin espacial presenta dos retos efectivos: repartir los nodos entre
las aplicaciones que sern ejecutadas y determinar el orden de ejecucin de
las mismas .

1.1.- Distribucin de los nodos


La figura 1.2 presenta de forma esquemtica la etapa de distribucin de nodos
del cluster. En esta fase se decide el tipo de particionamiento de nodos del
cluster entre las aplicaciones/trabajos, y posteriormente se seleccionan los
nodos para cada una de las aplicaciones que sern ejecutadas. Entre las
alternativas posibles, se puede citar: esttico, variable, adaptable y dinmico.

Figura 1.2 Etapa de distribucin de nodos

1.1.1.- Tipo de Particionamiento


Particionamiento Esttico: las particiones son definidas por el administrador
y no cambian a travs del tiempo. La utilizacin de este tipo de
particionamiento suele obedecer desde restricciones impuestas por el
hardware, a polticas relacionadas con la prioridad de los usuarios, o para
respetar una clasificacin especfica de los trabajos que se ejecutan en el
sistema.
El problema con este esquema es que produce fragmentacin interna, ya que
es probable que la cantidad de procesadores solicitados por una aplicacin no
coincida exactamente con ninguna de las particiones disponibles. Por otro lado,
este mtodo tambin sufre de fragmentacin externa debido a que en cualquier
momento es probable que existan suficientes recursos para satisfacer uno o
ms requerimientos, pero que encontrndose en diferentes particiones no
puedan ser asignados.
Particionamiento Variable: este tipo de particionamiento se realiza
respetando los requerimientos (cantidad de nodos), de las aplicaciones y
construyendo particiones que se ajusten a tales requerimientos cuando stas
sean ejecutadas. Por esta razn, en estos sistemas se pueden ejecutar
aplicaciones denominadas rgidas, es decir que poseen un requerimiento
especfico de procesadores que no puede modificarse.
Bajo este tipo de particionamiento, la fragmentacin externa no se puede
solucionar porque puede suceder que el conjunto de procesadores libres
remanentes, no sea suficiente como para ejecutar ninguna de las aplicaciones
que se deben lanzar. Es factible sin embargo, eliminar el problema de la
fragmentacin interna si se construyen las particiones del tamao requerido por
las aplicaciones.

Particionamiento Adaptable: estos sistemas generan las particiones en el


momento de ejecutar la aplicacin, considerando los requerimientos de las
tareas y la carga actual. No obstante la asignacin inicial de procesadores a la
aplicacin no vara durante la ejecucin de la misma, y se requiere que la
aplicacin acepte ser ejecutada en un conjunto de nodos de diferente tamao.
Por esta razn las aplicaciones que pueden ejecutarse en este sistema deben
ser al menos moldeables, es decir que deben aceptar ser ejecutadas en la
cantidad de nodos que se le asignen.
Particionamiento Dinmico: los esquemas de particionamiento anteriores
imponen poca o ninguna restriccin sobre las aplicaciones que se ejecutan
sobre l, pero por esta razn se generan ciertas ineficiencias en el momento de
administrar el sistema, que surgen sobre todo de los problemas de
fragmentacin y por lo tanto de la utilizacin de recursos. Este tipo de
particionamiento se realiza expropiando procesadores o migrando tareas entre
ellos, lo que a su vez los hace ms apropiados para sistemas de memoria
compartida. Las aplicaciones ejecutadas en un entorno de este tipo (maleables)
deben soportar el hecho de que se le quiten nodos de cmputo a la vez que
deben poder beneficiarse de la asignacin de nuevos recursos.
1.1.2.- Poltica de Seleccin de nodos
La manera ms simple para seleccionar un conjunto de nodos en el momento de
lanzar una aplicacin paralela, es la de asumir que cualquier nodo se encontrar o
bien ocupado, o bien desocupado (seleccin binaria). Bajo esta suposicin, se pueden
utilizar esquemas de tipo buddy, que dividen el espacio de procesadores libres
mediante una lista que almacena bloques de procesadores libres, o sistemas
jerrquicos que dividen el espacio utilizando estructuras de rbol. En la figura 1.10
(Tanenbaum) se puede observar un ejemplo de un esquema de tipo buddy aplicado a
la asignacin y liberacin de memoria, un problema totalmente anlogo al de la
asignacin de procesadores.

Figura 1.10: Esquema de tipo buddy aplicado al reparto del recurso memoria.
Si el grado de multiprogramacin (MPL) en un nodo puede ser mayor que uno,
estamos ante polticas que llamaremos de seleccin. Un ejemplo de este tipo de
polticas se observa, cuando el sistema de espacio compartido se combina con un
sistema de tiempo compartido. En este caso, la poltica de seleccin de nodos requiere
de algn criterio extra para tomar una decisin, como puede ser la cantidad de
memoria disponible en un nodo dado.

Otros trabajos han utilizado un criterio basado en la duracin de los trabajos


denominado LRW (Least-Remaining-Work), donde los nodos se seleccionan en
funcin del tiempo que se espera que permanezcan con carga. Mientras menos tiempo
le reste a la carga del nodo, mejor candidato es. Para aplicar un esquema de este tipo
se requiere, que de alguna manera, se estime el tiempo en que finalizar la carga
actual en un nodo determinado.
Cabe destacar que la mayora de las propuestas anteriores se enfocan en entornos
dedicados, sin embargo en el caso de un entorno no dedicado es posible que la carga
local haga variar el nivel de disponibilidad de los nodos, y que por lo tanto un nodo se
encuentre no disponible (ocupado) para algunas aplicaciones paralelas que
quisisemos ejecutar, pero no para otras (libre). Por esta razn es importante contar
con polticas que consideren la carga local y paralela (posiblemente con un grado de
multiprogramacin mayor que uno), en cada nodo en el momento de distribuir las
aplicaciones paralelas. A las polticas que afronten tal situacin, las llamaremos de
seleccin continua y en el presente trabajo se propondrn polticas en tal sentido.

Figura 1.11: Taxonoma de la seleccin de nodos en la planificacin de aplicaciones


paralelas.
Por otra parte, tambin es deseable que las polticas de distribucin propuestas,
consideren las caractersticas del sistema de tiempo compartido subyacente. De esta
forma es posible distribuir las aplicaciones de manera tal, que no se perjudique el
funcionamiento de la coplanificacin. Esta distribucin de aplicaciones es
particularmente importante, cuando el sistema de planificacin temporal se implementa
a partir de un esquema dinmico o implcito, donde existe interaccin entre las cargas
dentro de un mismo nodo. Las polticas de distribucin propuestas tambin tienen en
cuenta tales consideraciones.

1.2.- Planificacin de Trabajos


La figura 1.3 presenta las etapas en que ocurre la planificacin de trabajos. En
esta etapa se define el orden en que los trabajos permanecen en espera de ser
ejecutados y de qu forma sern seleccionados de esta cola.

Figura 1.3 Etapa de Planificacin de Trabajos

Cuando un nuevo trabajo es inyectado en el cluster y no puede ser ejecutado


en el momento, este es aadido a una cola de espera en el planificador. La
manera como este trabajo ser aadido a la cola es definido por la poltica de
orden. Algunas de las polticas de orden son: FCFS (First Come Firt Served)
donde el ordenamiento obedece la orden de inyeccin en el sistema; SJF
(Shrotest Job First) donde la cola es ordenada de forma creciente en relacin al
tiempo de ejecucin del trabajo; y SNPF (Smallest Number of Processes First)
donde la cola es ordenada de acuerdo con el nmero de procesadores que
solicita.
Una vez que la cola de trabajo est ordenada se puede seleccionar el trabajo a
ser ejecutado en el cluster. Aunque se pueda elegir el primero trabajo de la cola
existen polticas de seleccin que tienen en consideracin el estado actual del
cluster o su estado futuro. De acuerdo con el resultado de estas
consideraciones, estas polticas pueden elegir un trabajo para ser ejecutado
que no sea el primer trabajo en la cola. Estas polticas que procuran utilizar el
conocimiento del estado del cluster son las ms usuales. Sun Grid Engine es
un planificador de aplicaciones que permite la gestin de los recursos
distribuidos que procura acomodar las necesidades de software y hardware del
usuario a los recursos distribuidos en la red, respetando las polticas de
planificacin definidas por el administrador del sistema.
SGE agrupa los recursos de un cluster en colas. Un cluster posee una o
muchas colas. En cada una de ellas estn definidos los recursos disponibles
(nodos, CPU, memoria,), el tipo de particionamiento y la poltica de seleccin
de estos nodos. Para cada cola tambin estn definidas las polticas de
ordenamiento y seleccin que sern aplicadas a los trabajos sometidos a cola.
Todas estas definiciones son responsabilidad del administrador del sistema. Un
nodo de un cluster puede formar parte de ms de una cola estando sometido a
las polticas de planificacin de cada una de ellas.
Cuando un usuario inyecta una aplicacin en el cluster utilizando SGE,
especifica los requisitos de la aplicacin como el tipo de cpu, cantidad de disco
y memoria necesarios o el tiempo mximo de ejecucin de la aplicacin y SGE

inyecta esta aplicacin en la cola ms apropiada. El usuario puede tambin


someter un trabajo directamente en una cola especfica.
La definicin de las polticas de distribucin de nodos, y de las polticas de
planificacin de trabajos, afectan directamente las prestaciones. Ajustar la
definicin adecuada de estas polticas, a la carga de trabajos del sistema, es
una tarea compleja, debido a la gran cantidad de parmetros de ajuste que
proporciona el sistema.

1.2.1 Polticas de orden de los trabajos en la cola


Cuando un trabajo llega al sistema como resultado del requerimiento de un
usuario para su ejecucin, ste debe ser colocado dentro de la cola de espera,
en alguna posicin relativa a los dems trabajos que tambin esperan por los
recursos necesarios para ejecutarse. Para alcanzar este objetivo debe
establecerse algn criterio que indique al sistema dicha posicin relativa.

Figura 1.13: Taxonoma de las polticas de orden de trabajos en la planificacin de


aplicaciones paralelas.

Las polticas definidas en la figura 1.13 ordenan los trabajos como sigue:
FCFS (First Come First Served): en este caso los trabajos son tratados
(ejecutados) en el orden en que llegan al sistema. Esta poltica es muy sencilla
de implementar, pero normalmente no hace el mejor uso de los recursos ni
maximiza la eficiencia de ninguna mtrica especfica. Sin embargo es la que
normalmente se utiliza como referencia para las comparaciones realizadas con
otras alternativas, ya que de alguna manera da una cota inferior con la que
comparar otras opciones.
Cabe destacar, sin embargo, que este criterio es el ms justo con respecto al
orden de ejecucin de los trabajos, ya que asegura que ninguno deber

esperar por otro que haya llegado ms tarde al sistema. Adems se encuentra
libre de la posibilidad de inanicin.
SJF (Shortest Job First): bajo este criterio los trabajos se ordenan de forma
creciente en funcin del tiempo de ejecucin (estimado). Este tipo de polticas
disminuyen el tiempo de turnaround promedio de la carga (makespan), pero
pueden provocar inanicin a las aplicaciones ms largas, si continuamente
llegan al sistema aplicaciones pequeas. Adems las aplicaciones paralelas
deben ser enviadas al sistema junto con una estimacin de su tiempo de
ejecucin para una determinada cantidad de procesadores. La necesidad de
esta estimacin implica un mayor conocimiento de la aplicacin por parte del
usuario. Alternativamente, el sistema puede ser capaz de estimarlo de alguna
manera (ej.: utilizando simulacin o registros histricos
SNPF (Smallest Number of Processes First): con este criterio, los trabajos
se ejecutan en orden creciente de la cantidad de procesos (procesadores) que
se ejecutan.
SCDF (Smallest Cumulative Demand First): haciendo uso de este criterio,
los trabajos son ordenados de forma creciente de acuerdo al producto de la
cantidad de procesadores solicitados, y el tiempo de ejecucin estimado.
Finalmente, es posible alterar esta poltica de ordenamiento dinmicamente, de
manera que en distintos momentos en el tiempo, se utilicen diferentes polticas
para realizar la planificacin

1.2.2 Polticas de seleccin de los trabajos de la cola


Una vez que la cola de trabajos se encuentra ordenada a partir de cualquiera
de las polticas anteriores, podramos suponer que bastara con escoger el
trabajo que se encuentra en la cabeza como el prximo candidato a ser
ejecutado (poltica Just First). Si bien este es un criterio vlido, el estado del
sistema en cada momento puede hacer que otras polticas no slo sean
vlidas, sino inclusive mejores en funcin del parmetro que pretendamos
mejorar. La afirmacin anterior es vlida si consideramos que seleccionar
siempre el primer trabajo de la cola puede, por ejemplo, disminuir mucho la
utilizacin de recursos, a la vez que se aumenta el turnaround y el slowdown de
la carga (figura 1.14). Esta situacin se puede plantear en el caso en que tengamos un
trabajo de gran tamao a la cabeza, impidiendo la ejecucin de otros pequeos que se
encuentran esperando detrs.

Figura 1.14: Ejemplo de planificacin de polticas de estado actual.

Claramente estas polticas tienen como objetivo mejorar la eficiencia en el uso


del sistema, aunque esto en muchos casos puede ser perjudicial desde el
punto de vista de las aplicaciones, debido a que se aumenta la carga. Por esta
razn es importante combinar polticas de este tipo, con polticas de
ordenamiento de trabajos, que poseen un enfoque ms orientado hacia las
aplicaciones y sus requerimientos y prioridades que hacia la utilizacin del
sistema. La combinacin de ambas polticas permite encontrar una relacin que
mejore las mtricas de usuario y sistema, para alguna situacin de
compromiso.
Dentro de estas polticas de seleccin podemos contar con algunas ms
simples que solamente consideran el estado actual del entorno, y otras que
consideran una mayor cantidad de informacin y que por lo tanto son ms
complejas. Normalmente, este tipo de sistemas ms complejos incluyen el
comportamiento futuro del sistema basado en algn tipo de estimacin. La
extensin de nuestra taxonoma para las polticas de seleccin de trabajos
puede observarse en la figura 1.15.
Las polticas siguientes slo consideran el estado actual del sistema y buscan,
de acuerdo con dicho estado, el trabajo dentro de la cola que mejor se ajuste al
criterio de bsqueda correspondiente. De este modo estas polticas no toman
en consideracin cuestiones temporales.

Figura 1.15: Taxonoma de las polticas de seleccin de trabajos en la planificacin de


aplicaciones paralelas.

First Fit: con este tipo de polticas se recorre la cola de trabajos hasta
encontrar el primero que quepa en el espacio de procesadores, de acuerdo con
el estado en que se encuentran. Se indica que para varios modelos de carga
distintos, este criterio ha dado mejores resultados al combinarse con polticas
de ordenamiento de tipo FCFS o SJF, que utilizando dichas polticas por
separado. Cabe destacar que en el caso de la poltica SJF no hay diferencia en
cuanto a si se aplica o no el esquema First Fit ya que el primer trabajo en la
cola siempre es el ms pequeo y por lo tanto ser el seleccionado en
cualquier caso.
Best Fit: bajo este criterio de seleccin se busca en la cola, el trabajo cuyos
requerimientos se aproximen ms al conjunto de recursos actualmente
disponibles en los nodos. De esta manera lo que se busca es minimizar los
efectos producidos por la fragmentacin intentando aumentar el nivel de
utilizacin de los recursos disponibles. Se indica en trabajos que este tipo de
polticas mejora el rendimiento de polticas como Worst Fit (seleccionan el
trabajo que maximiza los recursos libres), en lo referente al throughput del
sistema.
Just First: esta poltica es parte de las definiciones dadas en el presente
trabajo y solamente intenta ejecutar el primer trabajo de la cola. De no ser
posible, se ha de esperar un nuevo evento de planificacin para intentar lanzar
un trabajo.
Este criterio en s mismo no aporta flexibilidad al entorno de planificacin, pero
es sin embargo necesario para implementar criterios como por ejemplo, una
poltica FCFS estricta. La alternativa a las polticas anteriores en el momento
de seleccionar un trabajo para su ejecucin es la de estimar el estado futuro e
intentar mejorar el rendimiento del sistema considerando tal estimacin. A este
respecto dos alternativas que se han estudiado en la literatura son la Calidad
de Servicio (QoS) y el Backfilling.
La primera de las ideas (QoS) busca garantizar un conjunto de recursos
durante un tiempo limitado como parte de los requerimientos de una aplicacin
para poder ejecutarse. Estudios en este sentido se han aplicado, por ejemplo,
en entornos multimedia y de tiempo real. La segunda alternativa, la poltica de
backfilling, es sin lugar a dudas una de las tcnicas de planificacin espacial
que ms atencin ha recibido en la literatura. Dicho esquema se basa en el
siguiente criterio: un trabajo puede ejecutarse, antes que otros que se
encuentran en la cola de espera por delante (ms prioritarios), siempre y
cuando esto no retrase el tiempo de inicio de dichos trabajos. Un ejemplo de
este tipo de polticas puede observarse en la figura 1.16, donde para un
conjunto de trabajos (J0J4) planificados mediante una poltica de orden de
trabajos FCFS (figura 1.16.a), es posible introducir una mejora planificando el
trabajo J4 inmediatamente despus del J0 (figura 1.16.b). Tal modificacin es
provechosa, porque ninguno de los trabajos ms prioritarios que J4 (J0J3) se
ven perjudicados por tal asignacin. De esta forma es posible incrementar el
uso de recursos en el sistema, a la vez que el tiempo medio de espera de las
aplicaciones se ve reducido.

Claramente, para poder implementar una poltica de este tipo es imprescindible


disponer de una estimacin del tiempo de ejecucin de las aplicaciones, para
poder determinar si la ejecucin de un trabajo perjudicar o no la de otros. Tal
estimacin puede ser provista por el usuario o estimada a partir de sistemas
basados en informacin histrica, simulaciones o modelos analticos]. Adems,
y a efecto de asegurar el criterio impuesto por el esquema de Backfilling, si una
aplicacin se excede en su tiempo de ejecucin, normalmente es penalizada
por el sistema. De esta forma es posible asegurar que las reservas concedidas
a trabajos ms prioritarios son respetadas.

Figura 1.16: Ejemplo de aplicacin de una poltica de Backfilling.

En la prctica dos variantes del esquema bsico son las que normalmente se
aplican y sobre las que se han realizado distintos tipos de aportaciones en la
literatura:
Backfilling EASY: bajo este esquema, tambin conocido como backfilling
agresivo, un trabajo siempre puede adelantarse en la cola si esto no retrasa el
inicio del trabajo que se encuentra en la cabeza.
Backfilling Conservativo: con este criterio un trabajo slo puede adelantarse
en la cola si no retrasa a ninguno de los trabajos que se encuentran por
delante.
De entre los dos tipos de backfilling presentados, los trabajos que ms
procesadores requieren (altura de los trabajos en la figura 1.16), se ven
favorecidos por un esquema conservativo, debido a las reservas dadas en el
momento de la entrada al sistema.
Por otra parte, los trabajos que requieren un mayor tiempo de ejecucin
(anchura de los trabajos en la figura 1.16) se ven favorecidos por una poltica
agresiva, ya que en sta se da una mayor flexibilidad en el espacio de
procesadores para ubicar trabajos de este tipo. Para los trabajos ms
proporcionados (altura por ancho) no es clara la preferencia sobre uno u otro
esquema, y por lo tanto cualquiera puede utilizarse esperando rendimientos
semejantes.

A raz de la cantidad de estudios dedicados a esta tcnica existen diferentes


variantes y propuestas que pueden aplicarse:
Backfilling de mltiples colas: en este caso se aumenta el backfilling con la
inclusin de mltiples colas en lugar de una nica. De esta forma se clasifican
los trabajos en funcin de su tamao (en tiempo y procesadores) y se colocan
en una u otra cola dependiendo de esta clasificacin. En los estudios citados, el
espacio de procesadores se divide entre estas colas y en funcin de la carga
en cada momento, cabe la posibilidad de que algunos nodos migren de una
particin a otra. La ventaja que tienen estos esquemas es el hecho de que los
trabajos ms grandes no retrasan a los ms pequeos. Adems han
demostrado funcionar mejor que los esquemas basados en una nica cola.
Backfilling Expropiativo (Preemptive): con este criterio se incluye la
posibilidad de quitarle a un trabajo los recursos asignados en funcin de un
trabajo de mayor prioridad. Una aplicacin tpica de esta tcnica es la de
expropiar los recursos a un proceso al que previamente se haba adelantado su
ejecucin (backfill), para respetar una reserva dada previamente, sin necesidad
de terminar el proceso directamente. Este esquema ha demostrado ser til
cuando los tiempos de ejecucin no son precisos y los trabajos terminan mucho
antes de lo esperado. De hecho el tiempo de espera y el factor de expansin
son mejorados por cualquiera de las polticas de expropiacin presentadas,
frente al mismo esquema sin expropiacin, y aplicando First-Fit-Backfilling.
Backfilling con reservas variables: bajo esta poltica se realizan reservas de
forma selectiva, otorgndoselas solamente a aquellos trabajos que han
esperado lo suficiente en la cola. De esta forma se evitan los problemas del
poco Backfilling provisto por el esquema conservativo, a la vez que se
disminuye el tiempo de espera de los esquemas EASY. En el estudio se
muestra que este esquema es ms justo en el balanceo de recursos que
cualquiera de las alternativas tradicionales (EASY y conservativo). El problema
que tiene es que el lmite de reservas impuesto y el control de posposicin
indefinida (inanicin) hacen que los resultados oscilen en el tiempo. Esta
oscilacin puede disminuirse si se considera el slowdown para calcular el lmite
de reservas.
Slack-based Backfilling: en este caso, la poltica empleada utiliza slacks
(perodos) de tiempo asociados a cada trabajo. De esta forma, un trabajo
puede ser ejecutado si no retrasa a ningn otro trabajo en ms del slack
asignado a ese trabajo. De la misma manera, es posible priorizar a los trabajos
en funcin, por ejemplo, del usuario o de un contrato de QoS. El esquema
presentado mejora el rendimiento de los esquemas de Backfilling agresivo y
conservativo hasta en un 20%.
As mismo, el backfilling ha sido combinado con otras tcnicas para generar
mejores resultados, como por ejemplo con la migracin de procesos o la
inclusin de esquemas de tiempo compartido. De todas formas se demuestra
que combinar backfilling con migracin solo aporta una breve ganancia, que no
es compensada por la complejidad de implementar un esquema migratorio.
Segn el mismo estudio, por separado el backfilling aporta mejores resultados

que la sola utilizacin de migracin de procesos. Adems de lo anterior, en


estudios se indica que combinar una tcnica de backfilling con algn esquema
de planificacin temporal, disminuye el slowdown promedio de las aplicaciones
paralelas cuando el MPL paralelo se encuentra limitado a un valor pequeo (i.e.
<4 o 5).Una cuestin que no resulta obvia, y que se ha tratado en gran cantidad
de estudios, es la influencia que tiene la sobrestimacin del tiempo de
ejecucin por parte de los usuarios en el rendimiento del sistema.
Contrariamente a lo que se podra pensar, la mayora de estos estudios indican
que esta sobrestimacin es beneficiosa, porque da al sistema mejores
oportunidades de realizar el backfilling de un conjunto mayor de trabajos. Cabe
destacar as mismo, que el hecho de que esta sobrestimacin por parte de los
usuarios exista, tiene que ver con la penalizacin que sufren los trabajos que
no terminan en el tiempo estipulado.
Alternativamente se puede incluir en el sistema de planificacin, un subsistema
de estimacin que permita caracterizar, y posteriormente estimar, el tiempo de
ejecucin de una aplicacin paralela para diferentes estados del entorno.
Estudios en este sentido se han centrado en esquemas que utilizan informacin
histrica para predecir el tiempo de espera y ejecucin de los trabajos en un
entorno determinado. Alternativamente, se han propuesto sistemas basados en
simulacin que incluyen modelos analticos que permiten estimar el
funcionamiento de una aplicacin para una carga determinada del entorno
donde ha de ejecutarse.
Finalmente, se proponen igualmente esquemas de backfilling que hemos
denominado 3DBackfilling, el cual afronta la problemtica de planificar
aplicaciones paralelas aplicando backfilling en un entorno no dedicado. Para
poder llevar a cabo la planificacin, la poltica propuesta ha de considerar no
slo la cantidad de procesadores y el tiempo de ejecucin (2 dimensiones: 2D),
sino tambin la utilizacin de recursos en cada nodo en el momento actual y en
el futuro (3 dimensiones: 3D).

2.- Planificacin Temporal: Coplanificacin


Como se observa en un entorno NOW donde se pretende ejecutar carga local y
paralela, necesitaramos compartir el procesamiento entre estos dos tipos de
aplicaciones, sin embargo tal tipo de planificacin no puede realizarse sin considerar la
comunicacin de los trabajos paralelos, ya que estos se componen de tareas que
cooperan mediante la utilizacin de mecanismos de paso de mensajes a lo largo del
tiempo para poder avanzar. En esta situacin es deseable minimizar el tiempo de
ejecucin de cada tarea por eventos de comunicacin, lo que a su vez tiende a
minimizar el tiempo total de ejecucin de las aplicaciones paralelas, como se observa
en una tarea local, antes de poder procesar los mensajes recibidos (1 y 2). Si en
cambio observamos la situacin de la figura 1.4.B, el tiempo de respuesta es mucho
menor, debido a que las tareas distribuidas se encuentran en ejecucin en el mismo
momento en sus nodos respectivos. Cabe destacar que para lograr esta disminucin
del tiempo de espera, no slo se han de considerar las necesidades de comunicacin
de los trabajos paralelos, sino tambin las necesidades de interactividad de las
aplicaciones locales. En este contexto, la cuestin planteada por diferentes
investigadores es si el sistema operativo debera ser capaz de distinguir entre los
procesos cooperantes y rivales y actuar en consecuencia. Los mecanismos de
planificacin descritos en esta seccin reflejan la creencia de que es importante

planificar de forma conjunta los procesos cooperantes; opinin que es compartida por
un gran nmero de fabricantes e investigadores.

Figura 1.4: Efecto del tiempo de comunicacin sobre el tiempo de ejecucin.


Uno de los estudios ms importante presentes en la literatura corresponde a John
Ousterhout, quien estudi la analoga existente entre la gestin de memoria en un
entorno monoprocesador multiprogramado, y la gestin de procesadores en un
entorno multiprocesador multiprogramado. Esta analoga se basa en la observacin de
que las aplicaciones paralelas requieren que un conjunto de procesos se ejecuten
simultneamente, exactamente como una aplicacin local en un entorno
monoprocesador requiere que todas las pginas que forman su working set estn
residentes simultneamente en memoria. En dicho estudio, Ousterhout comprob que
si una aplicacin paralela no recibe suficientes procesadores para planificar cada tarea
en un nodo distinto, y a su vez estas tareas no son planificadas simultneamente, el
rendimiento de dicha aplicacin se ver seriamente afectado debido a los
requerimientos de comunicacin y sincronizacin entre sus procesos cooperantes.
Este comportamiento es debido a que un proceso en ejecucin puede quedar
bloqueado esperando las respuestas de aquellos procesos cooperantes que no estn
simultneamente plani ficados en los nodos remotos; con la consiguiente prdida de
tiempo asociada a la realizacin de mltiples cambios de contexto innecesarios. De
acuerdo con la definicin de coplanificacin de Ousterhout, una aplicacin est
coplanificada si todos los procesos que la integran estn ejecutndose
simultneamente en diferentes procesadores.

Figura 1.5: Ejemplo de matriz de Ousterhout.

Matriz de Ousterhout. En este algoritmo se define una matriz formada por un eje
temporal de CMV filas (cada una de las cuales define una Mquina Virtual con una
potencia de cmputo igual a PC (Pi)/ CMV, donde PC (Pi) es la potencia de cmputo
del procesador Pi), tal que CMV equivale al grado de multiprogramacin de las
aplicaciones paralelas (MPL). El otro eje de la matriz, es un eje espacial de
N columnas, donde N es el nmero de procesadores disponibles en el sistema. En la
matriz de Ousterhout, cada columna define los procesos (Jpk) asignados a un
procesador dado (Pi), mientras que cada fila define tanto los trabajos (Ji) que sern
ejecutados durante un periodo (quantum) de tiempo determinado (TSi ), como el
mapping de los procesos que integran dichos trabajos a los correspondientes
procesadores.
A modo de ejemplo, la figura 1.5 muestra una matriz con seis procesadores
(N = 6) y un grado de multiprogramacin de 4 (CMV = MPL = 4). De esta manera cada
vez que se ha de asignar un nuevo trabajo (Ji) al sistema se busca, comenzando por
la fila cero, una fila con igual nmero de celdas libres que procesos tenga el trabajo a
ser asignado. Una vez asignado dicho trabajo, el algoritmo utiliza un mecanismo de
round-robin para planificar las diferentes filas de la matriz. De este modo, teniendo en
cuenta el ejemplo de la figura 1.5, durante el quantum de tiempo TS0 se ejecutarn los
procesos pertenecientes a los trabajos J1 y J2, de manera que al analizar dicho
quantum se producir un cambio de contexto global, de modo que el trabajo J3 ser
planificado en los procesadores P0, P1, P2, P3 y P4 durante el siguiente quantum TS1, y
as sucesivamente.
Numerosos autores han utilizado el trmino Gang Scheduling (GS) para referirse a la
necesidad de coplanificacin de las aplicaciones paralelas. Feitelson define
Gang scheduling como un esquema de planificacin que combina las tres
caractersticas siguientes:
1. Las tareas son organizadas en grupos, considerando en la mayora de los casos
una aplicacin distribuida como un nico grupo.
2. Las tareas dentro de cada grupo son ejecutadas simultneamente en distintos
nodos, asignando una tarea de cada grupo a un nodo distinto.
3. La tcnica de tiempo compartido es utilizada para compartir cada nodo entre los
distintos grupos, de manera que todas las tareas dentro de un grupo son planificadas
simultneamente a lo largo de la mquina paralela. Acorde con esta definicin, se
desprende que el trmino de gang scheduling se puede considerar un sinnimo del
concepto de coplanificacin definido por Ousterhout. De este modo, a lo largo de esta
tesis ambos trminos sern tratados como tales.
Un segundo modo de entender la coplanificacin, ms flexible que la anterior
propuesta de Ousterhout, fue propuesto por Sobalvarro como sigue: la Coplanificacin
asegura que ningn proceso esperar a un proceso cooperante debido a eventos de
comunicacin y sincronizacin. La principal diferencia respecto a la definicin dada por
Ousterhout, radica en el hecho de que no todos los procesos que integran una
aplicacin deben estar coplanificados, sino que solamente se deben coplanificar
aquellos procesos que estn cooperando en un determinado instante de tiempo.
De acuerdo con las dos definiciones anteriores, muchas han sido las contribuciones
aportadas en la literatura con el objetivo de implementar la coplanificacin de
aplicaciones paralelas en entornos cluster, tanto dedicados como no dedicados. Cada
mtodo propuesto puede clasificarse en: explcito, implcito o hbrido, en funcin de la

naturaleza del mecanismo de control utilizado para establecer la coplanificacin entre


procesos cooperantes (figura 1.6).

Figura 1.6: Taxonoma de las tcnicas de coplanificacin.


Las tcnicas explcitas, estn normalmente basadas en un sistema de Gang
Scheduling, mientras que las implcitas se encuentran implementadas a partir de la
definicin elementos de las tcnicas explcitas e implcitas. Ejemplos de diferentes
propuestas para cada mecanismo de sincronizacin propuesto en la figura 1.6 son:

Coplanificacin con control explcito: acorde con la definicin de Ousterhout, la


implementacin de la coplanificacin requiere de un cambio de contexto global
simultneo a lo largo de toda la mquina paralela. Dos alternativas se han propuesto al
respecto: esttica, donde los nodos sincronizan sus relojes con un control central y
dinmica, donde el control central realiza un broadcast peridicamente, el cual es
utilizado por los nodos para sincronizar el cambio de contexto. Cabe destacar que
estos sistemas no son muy apropiados para entornos no dedicados, porque para
compensar el elevado costo del cambio de contexto global, se han de utilizar
quantums ms largos que los soportados por entornos interactivos como el de nuestro
entorno no dedicado.

Coplanificacin con control implcito: estas tcnicas se ajustan a la definicin de


coplanificacin propuesta por Sobalvarro. Las decisiones de planificacin son tomadas
por cada planificador local en tiempo de ejecucin, de acuerdo con la ocurrencia de
eventos, tanto locales como pueden ser: eventos de comunicacin, de memoria, de
CPU, de actividad de usuarios locales o grado de multiprogramacin (MPL), as como
eventos ocurridos en nodos remotos. En este caso tambin se han definido dos
alternativas: coplanificacin predictiva, que aumenta la probabilidad de coplanificacin
mediante el manejo de las prioridades de los trabajos en funcin de los eventos de
comunicacin recibidos y dinmica, que utiliza la llegada de un mensaje como una
seal para planificar el proceso destinatario del mismo, incluso causando la
expropiacin de la CPU al proceso actualmente en ejecucin.

Coplanificacin con control hbrido: en este caso se incluyen elementos de


control, tanto explcitos como implcitos, para lograr la coplanificacin. Alternativas en
este sentido son: Buffered Coscheduling (BC), Flexible Coscheduling (FCS) y
CoScheduling Cooperativo (CSC).

You might also like