- O documento discute escalonamento de processos em sistemas virtualizados, abordando tópicos como modelos de nuvem, classes de serviço, gerenciamento de nuvem de código aberto e algoritmos de escalonamento de processos.
Escalonamento de processos em sistemas virtualizados
1. Escalonamento de processos em sistemas
virtualizados
Claudio Jorge Eckert Junior
Gian Paulo Vieira
Lisiane Reips
Prof. Jefferson James Cunha de Souza
2. SUMÁRIO
• Introdução
• Modelos de nuvem
• Classes de serviço
• Gerenciamento de nuvem de código aberto
• Arquitetura usada no sistema operacional nativo
• Tratamento de processos e seus escalonamentos
• Conclusão
• Bibliografia
• Dúvidas
3. Introdução
O termo de virtualização se refere de maneira geral
sobre a abstração de recursos computacionais.
Um único computador pode compartilhar seus
recursos de hardware com vários sistemas
operacionais hospedeiros.
4. Introdução
Esta abstração é geralmente realizada através de
um software (Máquina Virtual ou hypervision) que atua
como mediador entre os sistemas e os recursos da
máquina host.
5. Introdução
Também é função deste software escalonar qual
máquina virtual vai executar a cada momento,
semelhante ao escalonador de processos do Sistema
Operacional.
6. Introdução
O software é executado no modo de supervisor e as
máquinas virtuais são executadas em modo de usuário.
Quando estas tentam executar uma instrução
privilegiada, é gerada uma interrupção e o software se
encarrega de emular a execução desta instrução.
8. Modelos de nuvem
Os modelos de nuvem são definidos de acordo com
o grupo que irá utilizar os serviços da arquitetura, estes
podem ser de quatro tipos.
9. Modelos de nuvem
- Nuvem Pública: a infraestrutura é fornecida para
muitos clientes e é gerenciada por terceiros. Várias
empresas podem trabalhar simultaneamente na mesma
infraestrutura. O usuário paga por aquilo que utilizar.
10. Modelos de nuvem
- Nuvem Privada: infraestrutura disponibilizada
apenas para um cliente específico e gerenciada pela
própria organização ou por terceiros. Este utiliza o
conceito de virtualização de máquinas, usando rede
proprietária.
11. Modelos de nuvem
- Nuvem Comunidade: infraestrutura compartilhada
por várias organizações por uma causa comum,
podendo ser gerenciada por elas mesmas ou por um
prestador de serviços.
12. Modelos de nuvem
- Nuvem Híbrida: compõe um ou mais modelos de
implantação de nuvem, em que a comunicação entre
elas é realizada de modo transparente (como uma
bridge).
14. Classes de serviço
Podemos separar as classes de serviço em três
categorias:
- Software como Serviço: o software pode ser
acessado via web, o cliente não possui controle
sobre o funcionamento da aplicação, do sistema e
do servidor rodando a mesma.
15. Classes de serviço
- Infraestrutura como Serviço: nesta classe um
usuário pode acessar uma parte de sistema que
possui recursos agrupados para criar e usar sua
própria infraestrutura de computação.
- Plataforma como Serviço: oferta um sistema de
gerenciamento unificado dos recursos para a
construção de aplicações. Este serviço não
necessita que o usuário se preocupe com a
infraestrutura.
16. Gerenciamento de nuvem de código aberto
Os principais gestores de infraestrutura virtual,
open-source, descritos atualmente em artigos, são:
- APACHE VCL: fornece acesso remoto para um
ambiente de computação dedicado para o usuário
final através de uma interface Web,
proporcionando ambientes personalizados para
usuários.
17. Gerenciamento de nuvem de código aberto
- CITRIX ESSENTIALS: fornece aos clientes
virtualização de servidores com um conjunto de
serviços avançados de gerenciamento de
virtualização, permitindo estender essas
capacidades de gerenciamento para o ambiente
Windows Server 2008.
18. Gerenciamento de nuvem de código aberto
- EUCALYPTUS: desenvolvido com a intenção de
fornecer uma implementação open-source quase
idêntica em funcionalidade com a API do Amazon
Web Services. Portanto, os usuários podem
interagir com uma nuvem Eucalyptus usando as
mesmas ferramentas que eles usam para acessar
o Amazon EC2.
19. Gerenciamento de nuvem de código aberto
- NIMBUS3: fornece a maioria das características
dos outros gestores como uma API para acesso
ao Amazon EC2 com suporte ao Xen. No entanto,
distingue-se dos outros, fornecendo uma interface
de acesso para o framework Globus Web Services
Resource (WSRF).
20. Gerenciamento de nuvem de código aberto
- OPENPEX: construído em torno da noção de
usar reservas antecipadas como o principal
método para alocar instâncias de VM. Distinguese
de outros gestores, pois incorpora um protocolo de
negociação bilateral que permite usuários e
provedores chegar a um acordo sobre troca de
ofertas e contra ofertas quando seus pedidos
originais não podem ser satisfeitos.
21. Gerenciamento de nuvem de código aberto
- OVIRT: fornece a maior parte das características
básicas dos gestores, incluindo suporte para o
gerenciamento de pools de servidores físicos,
pools de armazenamento, contas de usuário e
VMs.
22. Gerenciamento de nuvem de código aberto
- VMWARE VSPHERE: ferramenta destinada a
transformar a infraestrutura em uma nuvem
privada. Distingue-se de outros gestores como um
dos mais ricos em recursos. Na arquitetura
vSphere, servidores executam na plataforma
ESXi. Um servidor a parte executa vCenter Server,
que centraliza o controle da infraestrutura. Através
do software cliente vSphere, os administradores
conectam-se ao vCenter Server para executar
várias tarefas.
23. Gerenciamento de nuvem de código aberto
- OPENSTACK ESSEX: oferece software para
criar nuvens públicas e privadas. Contém uma
coleção de projetos open-source, incluindo
OpenStack Compute (codinome Nova),
armazenamento de objetos OpenStack (codinome
Swift), serviço de imagem OpenStack (codinome
Glance), serviço de armazenamento para uso das
instâncias (codinome Cinder) e serviço de rede
(codinome Quantum).
24. Gerenciamento de nuvem de código aberto
O OpenStack Essex fornece uma plataforma
operacional e um conjunto de ferramentas para
gerenciamento das nuvens.
25. Arquitetura usada no sistema operacional nativo
Pode-se dizer que existem “duas” formas de
virtualização, sendo elas: Virtualização completa e
virtualização de interface de sistema, que por sua vez
são dois tipos de Hypervisor, sendo o nativo e o tratado
como se fosse um processo normal de sistema
operacional.
26. Arquitetura usada no sistema operacional nativo
Na virtualização completa temos a total utilização da
arquitetura e hardware acima, sendo implementado
direto sobre o hardware de máquina real,
disponibilizando uma réplica do hardware e acessos a
entradas, saídas e instruções do processador.
27. Arquitetura usada no sistema operacional nativo
Esta forma de virtualização não prevê a
necessidade de alteração no sistema operacional
visitante, e tem um desempenho melhor por não
possuir camadas de abstração,. Na virtualização de
sistema, o hypervisor é executado como se fosse um
processo normal sobre um sistema operacional nativo.
28. Arquitetura usada no sistema operacional nativo
Podemos entender melhor com a figura a seguir,
que nos mostra os anéis de privilégio da arquitetura
nativa x86, onde o anel 0 está junto ao kernel e possui
acesso direto, e a camada 1 possui menor privilégio,
sendo o anel 3 a camada do usuário, desta forma
podemos entender em qual anel está o hipervisor e as
máquinas virtuais.
30. Arquitetura usada no sistema operacional nativo
Porém na virtualização completa utiliza-se a técnica
de tradução binária, onde o hypervisor analisa,
reorganiza e traduz as sequências de instruções,
emitidas pelo sistema operacional convidado em novas
sequências de instruções, desta forma é possível
adaptar as instruções geradas pelo sistema convidado
ao sistema real.
31. Arquitetura usada no sistema operacional nativo
Como vantagens temos o fato de que o sistema
virtualizado não precisa de alteração, e como
desvantagens temos a perda de desempenho de cerca
de 30% pela interpretação dos dados.
32. Arquitetura usada no sistema operacional nativo
A arquitetura x86 não foi projetada para
virtualização e portanto não poderia ser virtualizada em
modo privilegiado “anel 0” e sim no “anel 1 e 2”, assim
foi criado o modo de virtualização assistida por
hardware, com processadores desenvolvidos pela Intel
e pela AMD, ambos chegando ao mesmo resultado,
mas ambos incompatíveis , agora os dois suportam o
hipervisor e os anéis de privilégios, proporcionando
utilizar os sistemas virtualizados convidados sem
alterá-los.
33. Tratamento de processos e seus escalonamentos
O gerenciamento de recursos e o tratamento de
tarefas são a chave de tecnologia em computação em
nuvem, desempenhando um papel vital neste contexto.
34. Tratamento de processos e seus escalonamentos
Atualmente temos estabelecidos em nuvem vários
algoritmos para estabelecer escalonamentos de
tarefas, mas não existe padrão uniforme a ser seguido,
entre eles os mais utilizados são os algoritmos de lista
que diferem principalmente na forma como a prioridade
é definida, mas em geral apresentam bom
desempenho. Os mais utilizados são:
35. Tratamento de processos e seus escalonamentos
- Myopic: consiste em organizar as atividades
prontas por ordem de chegada e associar cada
atividade a ser escalonada ao recurso disponível que
pode executá-la mais rapidamente.
- HEFT (Heterogeneus Earliest-Finish-Time =
Tempo de término mais antigo heterogêneo): escalona
atividades criando uma lista com pesos associados a
cada atividade, o peso é definido pela distância máxima
da atividade até a atividade de saída.
36. Tratamento de processos e seus escalonamentos
O primeiro passo é o cálculo de peso, sendo o valor
do peso de uma atividade igual ao tempo de execução
previsto para a atividade somado aos valores
encontrados no caminho até a atividade de saída.
- Ant Colony Optimization (ACO = Otimização de
colônias de formigas): basicamente este algoritmo
calcula o menor trajeto, a carga é calculada em cada
host (hospedeiro), tendo em conta a utilização da CPU
feita por todas as VMs que estão sendo executadas em
cada host.
37. Tratamento de processos e seus escalonamentos
Esta métrica é útil para uma formiga escolher o host
menos carregado para alocar suas VM.
O algoritmo ACO é encontrado também em
problemas de roteamento de pacotes de redes de
computadores, entre outros.
Foi descoberto que a comunicação das formigas
que caminhavam pela trilha ocorria por meio de uma
substância química denominada feromônio,
depositadas por elas próprias.
38. Tratamento de processos e seus escalonamentos
Enquanto as formigas caminhavam inicialmente de
forma aleatória, elas depositam uma certa quantidade
de substância, esta que é reforçada quando outra
formiga passar pelo caminho, tendo em vista que a
substância tende a evaporar com o tempo, quanto
maior a concentração de substância, mais curto é o
caminho.
39. Tratamento de processos e seus escalonamentos
- Algoritmo Min-Min: começa com um conjunto de
tarefas que são todas não atribuídas, primeiro, calcula
o tempo mínimo de conclusão para todas as tarefas e
todos os recursos, então, entre esses tempos mínimos,
o valor mínimo é selecionado, que é o tempo mínimo
entre todas as tarefas em quaisquer recursos.
40. Tratamento de processos e seus escalonamentos
Assim essa tarefa é programada no recurso em que
leva o mínimo tempo e o tempo disponível desse
recurso é atualizado para todos as outras tarefas, ou
seja, suponha que uma tarefa é atribuída a uma
máquina e leva 20 segundos para ser realizada, então
os tempos de execução de todos as outras as tarefas
nesta máquina serão aumentadas em 20 segundos.
Depois disso, a tarefa atribuída não é considerada e o
mesmo processo é repetido até que todas as tarefas
sejam atribuídas.
41. Tratamento de processos e seus escalonamentos
- Algoritmo Max-Min: da mesma forma que o Min-
Min exceto depois de descobrir o tempo de colisão, os
tempos mínimos de execução são encontrados para
cada tarefa. Então, entre esses tempos mínimos, o
valor máximo é selecionado, que é o tempo máximo
entre todas as tarefas em qualquer Recurso.
42. Tratamento de processos e seus escalonamentos
Assim essa tarefa está programada no recurso em
que leva o tempo mínimo, e o tempo disponível daquele
recurso é atualizado para todas as outras tarefas. A
atualização é feita da mesma maneira que para o Min-
Min. Todas as tarefas são recursos atribuídos por este
procedimento.
43. Tratamento de processos e seus escalonamentos
Além dos mais utilizados já citados, também são
utilizados:
- Otimização de exames de partículas
- Round Robin
- Genético
- Agendamento de tarefas baseado em prioridades
- Agendamento dinâmico baseado no limite