2.1. Liderlik ve Liderlik Yaklaşımları
2.1.4. Çağdaş Liderlik Yaklaşımları
2.1.4.1. Karizmatik liderlik
SRIP
MRIP MRIP MRIP
MRIP SRIP SRIP MRIP / SRIP a u m e n t o a u m e n t o
ASDA – Um Ambiente de Simulação Distribuída Automático
93
Figura 4.8. Relação entre o tamanho do modelo, a precisão requerida e o tamanho da simulação
Como descrito na seção 3.2.4, vários fatores influenciam o desempenho dos protocolos conservativos e otimistas. Tentar levar em consideração todos os fatores seria uma tarefa difícil, pois nem sempre todos os dados estão disponíveis para que possam ser utilizados e também porque é complicado definir todas as possibilidades. Além disso, existem alguns protocolos que são projetados especificamente para uma determinada aplicação, o que torna realmente inviável a definição de regras gerais.
Em linhas gerais, no entanto, algumas regras podem ser definidas de modo a associar determinadas características do modelo e da plataforma onde a simulação será executada a um determinado protocolo, alcançando um melhor desempenho da simulação distribuída. Nesta seção será considerado que os protocolos conservativo CMB e o otimista Time Warp são utilizados em suas versões originais.
Uma primeira tarefa desse nível do módulo avaliador é verificar qual a melhor forma de particionar o modelo em processos lógicos. Isto se deve ao fato de que, independente do protocolo de sincronização a ser utilizado, a forma de particionar o modelo em processos lógicos deve seguir algumas regras gerais. Deve-se também ao fato de que as variáveis analisadas como critérios de decisão pela segunda tarefa do nível 3 do módulo avaliador (selecionar o protocolo) dependem de forma considerável de como o modelo foi particionado. Com o objetivo de realizar uma partição eficiente, várias pesquisas utilizam ferramentas analíticas, como a análise do caminho crítico (critical path analysis) (Berry & Jefferson, 1985; Lin, 1992; Overeinder & Sloot, 1995), e outras utilizam ferramentas experimentais (Swope & Fujimoto, 1987; Jha & Bagrodia, 1996). Algumas dessas ferramentas necessitam que a simulação seja executada e que seja gerado um trace para que possa identificar a
a u m e n t o a u m e n t o tamanho do modelo precisão tam. sim. normal tam. sim. pequena tam. sim. normal tam. sim. alta tam. sim. normal tam. sim. alta tam. sim. alta tam. sim. pequena tam. sim. pequena
dependência dos eventos.
Como já enfatizado no início dessa seção, as análises apresentadas aqui são compilações de resultados já apresentados na literatura. Desse modo, algumas regras para a partição do modelo em processos lógicos podem ser obtidas levando em consideração o grafo do modelo (nível de paralelismo), a parametrização e a plataforma onde a simulação será executada (Wagner & Lazowska, 1989; Ulson, 1999; Dota, 2001; Spolon, 2001). Analisando-se os resultados e as regras apresentadas nesses trabalhos chegou-se a estas diretrizes básicas para a divisão do modelo em processos lógicos:
• Deve-se evitar o máximo possível que as realimentações (feedback) sejam
colocadas em processos lógicos distintos, pois isso prejudica tanto o protocolo CMB (aumento do número de mensagens nulas) como o protocolo Time Warp (aumento dos erros de causa e efeito e consequentemente do número de rollbacks). Caso isso não seja possível, deve-se evitar que as realimentações que possuem grandes probabilidades de retorno estejam em processos lógicos distintos. Um exemplo dessa regra pode ser observado nas figuras 4.9a e 4.9b, onde a partição correta está em 4.9a.
Figura 4.9. Partição do modelo em processos lógicos analisando a realimentação
• A granulação do modelo deve ser proporcional à velocidade de comunicação da plataforma, ou seja, caso a rede de comunicação possua uma velocidade de comunicação alta então é permitido um número maior de processos lógicos e caso contrário, é melhor utilizar um número menor de processos lógicos. Isso pode ser observado quando se utiliza plataformas distribuídas, como por exemplo NOWs
(a)
(b)
PL0 PL1
ASDA – Um Ambiente de Simulação Distribuída Automático
95
(Network of Workstations) e clusters, onde a velocidade de comunicação é mais baixa e arquiteturas paralelas, como por exemplo IBM SP2, onde a velocidade de comunicação é mais alta.
• Deve-se evitar colocar em um mesmo processo lógico recursos que não se comunicam diretamente. Esse fato faz com que aumente consideravelmente o número de mensagens que vão circular no sistema. Um exemplo dessa característica pode ser observada nas figuras 4.10a e 4.10b, ilustrada em (Ulson, 1999). Neste caso, em 4.10b não existe comunicação direta nos recursos que estão em PL0 nem em PL1.
Figura 4.10. Partição do modelo em processos lógicos analisando
Definidas as partições, a segunda tarefa do nível 3 do módulo avaliador é decidir pela utilização dos protocolos CMB, Time Warp ou CMB/Time Warp.
De uma maneira geral, duas características influenciam fortemente a escolha entre os protocolos CMB e Time Warp. São elas: lookahead e número de rollbacks. O lookahead é muito importante em protocolos que utilizam o conceito de evitar o deadlock e, portanto, influencia fortemente o protocolo CMB. Por sua vez, o número de rollbacks é muito importante nos protocolos que consideram que os erros de causa e efeito não acontecem e,
PL1 PL0
(a)
70% 30% PL1 PL0(b)
70% 30%portanto, influencia fortemente o protocolo Time Warp.
Graficamente, a escolha entre os protocolos CMB, Time Warp ou CMB/Time Warp pode ser observada na figura 4.11. A escolha pelo protocolo Time Warp é baseada no baixo número de rollbacks enquanto a escolha pelo protocolo CMB é baseada no alto grau de
lookahead. Quando essas duas características são atingidas ao mesmo tempo, pode-se optar pela utilização do CMB ou do Time Warp. Já nos outros 4 casos aconselha-se a utilização do protocolo CMB/Time Warp.
Figura 4.11. Escolha entre os protocolos CMB, Time Warp e CMB Time Warp
O protocolo CMB/Time Warp é uma adaptação da abordagem proposta por Morselli (2000) em sua tese de doutorado. Nesse trabalho, Morselli propõe um novo mecanismo que possibilita a escolha entre os protocolos de sincronização para simulação distribuída, CMB e Time Warp, durante a execução de uma simulação distribuída baseada em redes de filas. Esta abordagem é interessante pois, como pode ser observado na figura 4.11, existem situações onde não existe a melhor opção na escolha do protocolo de sincronização.
Desta forma, torna-se atrativa a opção de iniciar a simulação com um protocolo e permitir que este seja trocado por outro protocolo automaticamente e em tempo de execução. A troca de protocolos deve considerar duas questões principais: como realizar a troca, uma vez que cada protocolo apresenta suas próprias características, e quando a troca deve ser considerada. Baseando-se nessas duas questões, o mecanismo para troca de protocolos proposto no trabalho de Morselli (2000) pode ser implementado através da execução dos processos lógicos da simulação concorrentemente com os processos: observador (responsável pela coleta de dados relativos ao desempenho da simulação), gerenciador (detecta a necessidade da troca de protocolos) e o conversor (responsável pela conversão entre os protocolos). O trabalho de Kawabata (2002) estuda a utilização de agentes móveis e lógica fuzzy para a implementação dos processos definidos por Morselli.
Para realizar a troca do protocolo Time Warp para CMB em tempo de execução é
nº rollbacks lookahead a u m e n t o a u m e n t o Time Warp CMB Time Warp CMB CMB Time Warp CMB Time Warp CMB ou Time Warp CMB Time Warp CMB Time Warp
ASDA – Um Ambiente de Simulação Distribuída Automático
97
necessário antes da troca colocar a simulação em uma situação estável e o custo para realizar esta operação é muito alto pois deve-se realizar um rollback nos processos mais adiantados. Por outro lado, a troca de CMB para Time Warp apresenta um menor custo e por este motivo optou-se pela utilização no ASDA. No ASDA, esta possibilidade será utilizada quando o ganho de desempenho com a utilização do CMB ou do Time Warp não estiver claro. Neste caso, deve-se optar pelo CMB com possibilidade de troca para o Time Warp. Se for necessário realizar a troca, o tempo despendido com a troca será menor do que se fosse escolhido Time Warp com eventual troca para CMB.
A grande dificuldade na escolha entre os protocolos de sincronização é que o cálculo das variáveis rollback e lookahead antes da execução da simulação não é simples. Um exemplo de como o lookahead pode ser calculado é apresentado em (Wagner & Lazowska, 1989). Nos modelos baseados em redes de filas com disciplina de fila FCFS (First Come,
First Served), o cálculo do lookahead pode ser feito observando o valor das taxas de serviço dos servidores e da taxa de chegada. Caso um cliente esteja sendo atendido em um servidor então não haverá nenhuma partida até que este cliente termine o seu serviço. Desse modo, o valor restante do tempo de serviço pode ser utilizado como o lookahead para este servidor. Caso não exista nenhum cliente sendo atendido, o lookahead é igual a um valor a, que representa o valor mínimo da distribuição de serviço, o qual pode ser zero. Uma outra forma de calcular o lookahead é através da utilização de uma lista futura, na qual, caso não haja nenhum cliente sendo atendido, pode-se predizer (pré amostrar) o valor do tempo de serviço do próximo cliente e utilizar esse valor como lookahead. (Nicol, 1988; Wagner & Lazowska, 1989) definem também o cálculo do lookahead para outras disciplinas de fila.
Já o número de rollbacks pode ser calculado analisando o modelo a ser simulado, sua parametrização e a plataforma onde será executado. Existem várias características que podem influenciar a quantidade de rollbacks, tais como:
• Probabilidade de um cliente voltar ao sistema (realimentação);
• Plataforma onde a simulação será executada (se esta é homogênea ou não);
A probabilidade de um cliente voltar ao sistema influencia fortemente o número de
rollbacks devido à própria definição de quando um rollback pode acontecer. Um rollback deve acontecer quando são detectados erros de causa e efeito. Esses erros ocorrem quando, por exemplo, um evento e2, que deveria ser tratado antes de e3, é tratado depois (seção 3.2).
Em sistemas que possuem realimentação, quanto maior a probabilidade dos clientes voltarem ao sistema, maior será o número de rollbacks.
Outro fator que influencia o número de rollbacks é a plataforma onde a simulação será executada. As plataformas homogêneas3 não influenciam o número de rollbacks. Já nas plataformas heterogêneas o número de rollbacks pode ser alto ou não, dependendo de como
os processos lógicos foram mapeados. Caso haja a necessidade de mapear a realimentação em um processo lógico diferente, estando estes em máquinas distintas e que possuem poder computacional diferente, e o processo lógico que vai receber os clientes da realimentação estiver mapeado em uma máquina mais rápida, então a possibilidade de ocorrer rollback é maior.
A próxima seção ilustra como as conclusões descritas nesta seção e na anterior podem ser utilizadas para a implementação do módulo Avaliador, níveis 2 e 3 respectivamente.
/ , ; % 8 + %
Uma maneira de implementar o módulo avaliador, permitindo que as informações utilizadas na decisão possam ser adequadas a cada ambiente em que o ASDA for utilizado, é através da utilização de conceitos da área de Inteligência Artificial ou Inteligência Computacional.
Um sistema de Inteligência Artificial (IA) é capaz de adquirir, representar e manipular conhecimento. A manipulação inclui a capacidade de deduzir ou inferir novos conhecimentos (novas relações sobre fatos e conceitos) a partir do conhecimento existente.
Todo programa de computador possui um determinado conhecimento sobre um problema a ser resolvido. O conhecimento está no algoritmo que o programa emprega e nas rotinas de tomada de decisão. No entanto, as informações estão representadas implicitamente e não são fáceis de serem atualizada ou manipuladas. Uma das principais características de IA é que o sistema é estruturado de modo a separar os algoritmos de decisão (conhecimento procedimental) dos fatos e regras (conhecimento declarativo).
Um sistema de aprendizagem é um programa que toma decisões baseado num conjunto de casos bem sucedidos. Dessa forma, o principal objetivo de um sistema de aprendizagem é classificar com sucesso novos casos. A figura 4.12 ilustra a estrutura básica de um sistema de classificação que aceita como entrada um padrão de dados e produz como saída uma decisão (Weiss & Kulikowski, 1991).
Cada caso bem sucedido que faz parte do padrão de dados é composto de observações (também referenciadas como características) e a classe correta a que o caso está associada.
Figura 4.12. Estrutura básica de um sistema classificador Decisão da classe associada ao caso CLASSIFICADOR Caso a ser classificado e padrão de dados
ASDA – Um Ambiente de Simulação Distribuída Automático
99
Tendo o sistema de aprendizagem o objetivo de classificar com sucesso novos casos, deve haver um meio de se verificar se a classificação está tendo sucesso ou está falhando. A maneira mais utilizada é a taxa de erros, definida como:
Existem vários métodos que podem ser utilizados no problema de classificação, os quais são independentes de qualquer aplicação específica. Dentre esses métodos, pode-se citar: reconhecimento de padrão estatístico (classificadores Baysianos, discriminantes lineares, métodos do vizinho mais próximo), redes neurais e máquinas de aprendizagem (árvores de decisão e regras de indução).
Uma das alternativas para a utilização de sistemas de aprendizagem é o método do vizinho mais próximo. Este método consiste em verificar diretamente a tabela que contém os casos e tentar associar a um padrão na tabela de casos. Caso não ocorra a associação com um padrão específico, o classificador busca o padrão mais próximo e classifica o caso na classe desse padrão. Este método é simples e possui uma taxa de erro não muito alta (Weiss & Kulikowski, 1991). Uma tabela que contenha as características e a classe associada a cada conjunto de características é necessária neste método bem como um algoritmo que faça a busca nessa tabela.
Um exemplo de como esse método pode ser utilizado no nível 2 do módulo avaliador pode ser observado na tabela 4.3, onde uma parte das possibilidades são descritas e tem-se como características:
• Tamanho do modelo (TM): pequeno, médio, grande;
• Tamanho do warm-up (TWU): pequeno, médio, longo;
• Precisão (PR): pequena, média, alta;
• Paralelismo implícito no modelo (PI): pequeno, médio, alto;
• Plataforma onde a simulação será executada (PL): tipo 1, tipo 2, tipo 3;
• Número de processadores (NP): pequeno, médio, alto;
e como classes:
• SRIP
• MRIP
Quando uma característica tem uma influência maior sobre as outras, esta é predominante e as outras características não precisam ser analisadas (denotadas por X).
casos de número erros de número erro de taxa =
Tabela 4.3. Associação entre as características e a classe para o nível 2 do módulo Avaliador
TM TWU PR PI PL NP Classe
Pequeno Grande X Alto Tipo 2 X SRIP
Médio Grande X Alto Tipo 2 X SRIP
X X X Baixo Tipo 3 X MRIP
X X X Médio Tipo 3 X MRIP
Grande X X X Tipo 2 Baixo SRIP
Grande X X X Tipo 2 Médio SRIP
Médio X X X Tipo 3 Alto MRIP
Médio X X X Tipo 3 Médio MRIP
Médio X X X Tipo 3 Alto MRIP
Médio X X X Tipo 3 Médio MRIP
Pequeno X X X Tipo 3 Alto MRIP
Pequeno X X X Tipo 3 Médio MRIP
A tabela 4.4 ilustra uma parte das possibilidades para a utilização desta mesma técnica para o nível 3 do módulo Avaliador. As características definidas são:
• Lookahead (LA): pequeno, médio, alto;
• Realimentação entre processos lógicos (RE): pouca, média, alta;
• Plataforma (PF): homogênea, heterogênea;
e as classes:
• CMB
• TW (Time Warp)
• CMB TW
Tabela 4.4. Associação entre as características e a classe para o nível 3 do módulo Avaliador
LA RE PF Classe
Baixo Alto Heterogênea CMB TW
Alto Alto X CMB
ASDA – Um Ambiente de Simulação Distribuída Automático
101
Como pode ser observado, definir as tabelas 4.3 e 4.4 não é uma tarefa simples, pois muitas são as possibilidades. Por exemplo, para a tabela do nível 2 são: 6 variáveis com 3
possibilidades para cada uma o que resulta em 36 combinações. Visando buscar uma forma
mais viável de realizar a tarefa de tomar decisões, surgiu o conceito de lógica nebulosa, também conhecida como Lógica Fuzzy. A lógica fuzzy insere-se também na Inteligência Artificial e foi desenvolvida para prover uma maneira de se conseguir conclusões a partir de informações vagas, ambíguas ou imprecisas, aproximando o computador da maneira de pensar humana, a qual consegue achar soluções precisas a partir de dados aproximados.
Diferentemente da lógica clássica, na qual é possível representar somente os estados 0 e 1, ou verdadeiro e falso, ou sim e não, etc., a lógica fuzzy permite que sejam representados continuamente vários estados, tais como as várias tonalidades existentes entre as cores branca e preta.
A figura 4.13 exemplifica um gráfico gerado pelo toolbox de lógica fuzzy do MatLab para a distribuição proposta na figura 4.5 para a escolha entre a utilização das abordagens MRIP e SRIP. A parte do gráfico em preto representa a escolha da abordagem MRIP (plataformas com bom processamento e pouca comunicação). A parte em cinza escuro representa a escolha da abordagem SRIP (plataformas com processamento não muito elevado e boa comunicação) e a parte em cinza claro representa as plataformas que podem executar tanto a abordagem SRIP quanto a abordagem MRIP.
Figura 4.13. Gráfico gerado pelo toolbox de lógica fuzzy do software Matlab para a escolha entre as abordagens MRIP e SRIP
Para gerar o gráfico da figura 4.13 foi necessário definir as funções de pertinência para a variável de entrada comunicação (figura 4.14) e para a variável de entrada processamento (figura 4.15). Juntamente com as regras, as funções de pertinência determinam o comportamento do sistema. As regras definidas para esta situação foram:
Figura 4.14. Função de pertinência para a variável comunicação
Figura 4.15. Função de pertinência para a variável processamento
1. If [Processamento is Lento] and [Comunicação is CL] then [Abordagem is MRIP/SRIP]
2. If [Processamento is Lento] and [Comunicação is CM] then [Abordagem is SRIP]
3. If [Processamento is Lento] and [Comunicação is CA] then [Abordagem is SRIP]
4. If [Processamento is Médio] and [Comunicação is CL] then [Abordagem is MRIP]
ASDA – Um Ambiente de Simulação Distribuída Automático
103
6. If [Processamento is Médio] and [Comunicação is CA] then [Abordagem is SRIP]
7. If [Processamento is Rápido] and [Comunicação is CL] then [Abordagem is MRIP]
8. If [Processamento is Rápido] and [Comunicação is CM] then [Abordagem is MRIP]
9. If [Processamento is Rápido] and [Comunicação is CA] then [Abordagem is MRIP/SRIP]
sendo que CL = comunicação lenta, CM = comunicação média e CA: comunicação alta. Para a definição de todo o nível 3 do módulo Avaliador utilizando lógica fuzzy é necessária a definição das outras variáveis e de novas regras, as quais fornecerão o resultado final ao usuário, ou seja, a escolha da abordagem.
" 9 # 8 + % / 5
O caso de uso “Utilizar o auxílio do ambiente” definido no Diagrama de Casos de Uso do ADSA apresentado na figura 4.4 formaliza o comportamento deste módulo e é descrito a seguir.
Caso de Uso: Utilizar o auxílio do ambiente
Descrição: Permite ao usuário utilizar o conhecimento que o ambiente possui para definir se vai utilizar uma simulação SRIP ou MRIP. Permite também utilizar o conhecimento para decidir entre a utilização dos protocolos Time Warp ou CMB e em como particionar o modelo em processos lógicos.
Pré-condição: Ter permissão para ser UsuarioSimulacao e estar desenvolvendo uma nova simulação.
Fluxo Principal de Eventos:
Ação do Ator Resposta do Sistema
1. O usuário decide obter auxilio para o desenvolvimento de uma nova simulação
2. Verifica se o usuário precisa de auxílio para:
a. Escolher entre utilizar
MRIP ou SRIP
b. Escolher entre utilizar os protocolos CMB, Time Warp ou CMB/Time Warp
c. Escolher como particonar o
modelo em processos
lógicos seguindo o
protocolo de sincronização escolhido
3. Caso o auxílio seja para escolher entre utilizar MRIP ou SRIP, verifica as características do modelo, a plataforma onde a simulação será executada e os objetivos e decide entre SRIP ou MRIP
4. Caso o auxílio seja para escolher entre utilizar os protocolos CMB, Time Warp, CMB/Time Warp, verifica o lookahead, as características do modelo e o provável número de rollbacks e decide entre CMB, Time Warp ou CMB/Time Warp
5. Caso o auxílio seja para particionar o modelo em processos lógicos seguindo o protocolo de sincronização escolhido verifica o grafo do modelo e determina a partição que resultará no melhor otimismo para o protocolo CMB ou no menor número de rollbacks no protocolo Time Warp
Pós-condição: Ter proporcionado o auxílio desejado pelo usuário
"
+
)
O módulo Gerador é responsável pela geração do programa de simulação baseado na especificação (modelo + parametrização) do sistema fornecida pelo usuário.
Este módulo divide-se em dois sub-módulos:
• Geração de código de programas MRIP;
• Geração de código de programas SRIP;
No ASDA, a decisão de qual abordagem utilizar pode ficar a cargo do usuário ou ser uma tarefa realizada pelo módulo gerador com o auxílio do módulo Avaliador, nível 2. O funcionamento do módulo avaliador nível 2 é descrito na subseção 4.4.2.
O ambiente deve permitir a geração de código em algumas linguagens/extensões funcionais pré-determinadas. Para cada linguagem/extensão deve haver dois arquivos (figura 4.16):
ASDA – Um Ambiente de Simulação Distribuída Automático
105
• um arquivo denominado gabarito.dat, que são trechos de código na
linguagem/biblioteca alvo combinados com comandos que indicam onde as informações necessárias são encontradas;
• um programa gerador que, a partir dos dados da especificação e do arquivo
gabarito.dat, gera o programa de simulação.
Figura 4.16. Estrutura de arquivos no módulo Gerador
Um exemplo de um arquivo gabarito.dat pode ser observado na figura 4.17 (Spolon,
1994a). Este arquivo é um esqueleto de um programa de simulação seqüencial que utiliza a extensão funcional SMPL (MacDougall, 1987).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /* --- */ #include <dir.h> #include <stdio.h> #include <conio.h> #include "smpl.h" #include "rand.h" main() { /* Fase de Definições */ %0define_tempo_num_max