Índice de carga e desempenho em sistemas distribuídos com eles é possível estimar a carga sobre...

34
Seminário Índices de Carga e Desempenho em Sistemas Distribuídos SSC-642 Sistemas Computacionais Distribuídos

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

SeminárioÍndices de Carga e

Desempenho em Sistemas Distribuídos

SSC-642 Sistemas Computacionais Distribuídos

Page 2: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Bruno Teles Lino Begotti

Caio Cesar de Souza Bispo

Jonas Rossi Dourado

Jonathan W. R. Machado

UNIVERSIDADE DE SÃO PAULO

Page 3: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Carga e Desempenho em Sistemas

Distribuídos

Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários para servidores diferentes de modo a entregar sempre a melhor performance possível.

Page 4: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

O Sistema Distribuído

Um dos objetivos de um sistema distribuído é a utilização eficiente dos recursos dos sistemas.

Page 5: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Carga

Para a utilização eficiente dos

recursos, existem os Índices de Carga, que são utilizados para medir a carga do sistema. Eles indicam se o elemento considerado está ocioso, sobrecarregado ou em situação normal.

Pode ser definido como uma variável numérica, assumindo valores para representar diferentes estados do dispositivo utilizado.

Page 6: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de CargaEx: Um índice de carga normalizado de 0 a 1

Para Índice = 0 : computador não está utilizando recursos ou está utilizando recurso que não sobrecarrega o sistema.

Para Índice = 0.5 : computador utiliza recursos e não está totalmente sobrecarregado.

Para Índice = 1 : computador utiliza recursos e está totalmente sobrecarregado.

Page 7: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Carga

As cargas podem ser alteradas rapidamente, por isso, os índices devem ser atualizados constantemente. O custo para obter este índice não deve interferir no desempenho do sistema. Geralmente as técnicas de medição são eficientes e geram uma sobrecarga mínima no sistema.

Os índices podem ser divididos em grupos: os baseado na fila de acesso ao recurso, no percentual de utilização do recurso e no tempo de execução/resposta.

Page 8: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Carga

Para a escolha do índice de carga, algumas características importantes devem ser consideradas:

quantificar a utilização do processador.quantificar as requisições de memória.quantificar as requisições de I/O.quantificar utilização de rede.

Page 9: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Carga

Recomenda-se a adoção de um índice de carga que seja a média das características essenciais de algum recurso sobre um determinado tempo.

Page 10: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Carga

Existem vários algoritmos de Índice de Cargas . A maioria dos algoritmos de índice são para sistemas homogêneos.

Por quê?

◦ Diferentes potências computacionais nas plataformas distribuídas e heterogêneas, agregam ao índice de carga a tarefa de normalizar as cargas. Essa normalização não é trivial porque depende do nível de heterogeneidade.

Page 11: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de CargaO índice de carga que é

freqüentemente assumido é o baseado no comprimento de fila de processos na CPU(CPU load).

Porém ele não funciona corretamente em ambientes onde os computadores têm capacidade de processamento heterogênea e os processos não tem ocupação semelhante.

Por quê ?

Page 12: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de CargaEx : Suponha dois computadores.

Computador 1 : 2 processos de baixa ocupação na fila.

Computador 2: 1 processo que ocupa 99% da CPU.

No índice de carga baseado no comprimento de fila de processos na CPU, o computador 1 tem índice igual a 2 e o computador 2 tem índice igual a 1.

De acordo com o algoritmo de comprimento de fila, o segundo computador irá receber o processo iniciado, apesar de não ter recursos disponíveis

Isso significa que o computador 2 está menos sobrecarregado que o 1 ?

- Não. Apesar do computador 1 ter mais processos na fila, ele está parcialmente sobrecarregado enquanto o computador 2 está totalmente carregado.

Page 13: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de CargaExistem aplicações destinadas a processamento,

acesso a disco, comunicação entre processos e as que necessitam de uma grande quantidade de memória, são elas:

CPU-Bound: alto processamento e pouca atividade de

I/O.

Disk-Bound: muitos acessos ao disco.

Network-Bound: muitas comunicações entre processos.

Memory-Bound: necessitam de uma grande quantidade de memória.

Page 14: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de processador mais utilizados

Número de chamadas ao sistema: quanto maior o número de chamadas, mais carregado o processador.

Número de interrupções : quanto mais interrupções atendidas, mais alto é o índice.

Tempo de CPU idle: o tempo que o processador ficou ocioso, geralmente medido em porcentagem de um certo período de tempo. Quanto menor o tempo de ociosidade, mais carregado o processador.

Page 15: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de processador mais utilizados

Tempo de CPU em funções do S.O. : um complementar do número de chamadas ao sistema, mas levando em conta o tempo gasto nelas, não ao número delas. Quanto mais tempo gasto, maior o índice.

Tempo de CPU para programas de usuário: tempo que o processador gastou nos programas de usuário, geralmente medido em porcentagem de um certo período de tempo.

Comprimento de fila da CPU : é o número de processos na fila de execução. Quanto mais processos na fila, maior a carga do processador. No Linux pode ser obtido utilizando o comando “sar -q”.

Page 16: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de processador mais utilizados Média do comprimento de fila da CPU : é a média do

número de processos na fila de execução em um determinado tempo. No Linux pode ser obtido utilizando o comando “uptime”, que apresenta as médias dos últimos um, cinco e quinze minutos da fila de execução.

Número de usuários ativos (logados ou ativos) : número instantâneo de usuários ativos ou logados no sistema. Pode ser obtido também no Linux com o comando “uptime”. Quanto maior o número de usuários ativos, maior a carga do sistema.

Capacidade de carga – utilização efetiva da CPU : é um número que representa a velocidade relativa do processador utilizada por um processo. Ele é obtido multiplicando a utilização do processador geralmente em porcentagem com o número que representa a velocidade relativa do processador.

Page 17: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de processador mais utilizados

Carga média do uso de CPU: Número que representa a utilização média da CPU durante um intervalo, medido em porcentagem.

Processos bloqueados: O número de processos que estão no estado bloqueado é utilizado como índice de carga de processador

Page 18: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de disco

Número de leituras por segundo: É obtido através do comando "Iostat -D" que mostra a quantidade de leituras por segundo de cada disco. Quanto mais leituras, maior a carga.

Número de escritas por segundo: É obtido através do comando "Iostat -D" que mostra a quantidade de escritas por segundo de cada disco. Quanto mais escritas, maior o índice.

Quantidade de seeks por segundo: Mostra a quantidade de buscas por segundo no disco, ou seja, quantas vezes os dados procurados não estavam organizados de forma contígua.

Page 19: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de disco

Quantidade de pedidos de I/O: É a quantidade de requisições de entrada e saída que ocorrem em cada disco.

Número de processos esperando na fila por disco: É a quantidade de processos que não estão executando pois dependem de dados armazenados e outro processo já está utilizando o disco.

Taxa de dados transferida por disco: É a quantidade de dados que foi transferida em cada disco.

Page 20: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de disco

Porcentagem de utilização de cada disco: Reflete a utilização percentual de cada disco.

Page 21: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de memória

Memória ocupada: Corresponde à quantidade de memória primária total em uso. Porém os sistemas operacionais fornecem apenas informações sobre a memória livre, então é necessário utilizar a informação sobre a quantidade de memória disponível no sistema.

Cache e buffers: Este índice corresponde à quantidade de bytes que os sistemas operacionais utilizam para armazenar arquivos lidos no disco. Com isso, esses sistemas operacionais contabilizam as páginas usadas como buffers de leitura e escrita de I/O, e o cache de páginas. Quanto menor a quantidade de caches e buffers, maior o índice de carga.

Page 22: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de memória

Memória ativa: É a porção da memória usada a qual permanece ativa, ou seja, a quantidade de bytes ocupados por páginas que foram acessadas recentemente.

Memória inativa: Mostra a porção da memória que foi alocada, entretanto não foi usada recentemente. Quanto maior a memória inativa, maior o índice de carga.

Swap usado: É a quantidade de espaço swap, o qual está sendo usado por páginas retiradas da memória principal, em casos de falta de memória.

Page 23: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de memória

Swap cache: Mede a área mantida pelo sistema operacional para diminuir o número de acessos ao disco quando ocorrer ausências de páginas. Essa área é denominada “swap cache”. Quanto a este índice, há uma indefinição se o índice de carga será maior ou menor quando o “swap cache” for maior.

Page stealing: É o número de páginas de caches e buffers retiradas pelo kernel por segundo, para utilizá-las em outro propósito.

Páginas alocadas: Mede a quantidade de novas alocações feitas por segundo, de forma a atender a demanda dos programas, ou seja, mede a atividade do sistema de alocação de páginas.

Page 24: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de memória

Ausências Menores: Este índice corresponde às ausências de páginas que não necessitam de acesso ao disco. Essas são chamadas de ausências menores ou “minor faults”.

Ausências Maiores: Este índice corresponde às ausências maiores, ou “major faults”, as quais ocorrem sempre quando uma ou mais páginas residentes no espaço swap devem ser lidas do disco para a memória.

Page 25: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de rede

Quantidade de pacotes que chegam: É obtido através do comando "netstat". Representa o valor da quantidade de pacotes que entram em cada interface da rede.

Quantidade de pacotes que saem: É obtido através do comando "netstat". Representa o valor da quantidade de pacotes que deixam cada interface da rede.

Número de colisões: É a quantidade de colisões que ocorreram na rede. Quanto mais colisões, mais congestionada a rede, portanto maior a carga.

Page 26: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índices de carga de rede

Taxa de transferência dos dados: Mede a taxa de transferência dos dados na rede. Quanto mais dados são transferidos, maior o índice.

Taxa de erros: Mede a taxa de erros nas transferências. Quanto maior o número de erros, maior será o índice de carga.

Page 27: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Índice de Desempenho

O índice de desempenho é uma grandeza que ilustra o que pode ser esperado de um sistema computacional.

Sua utilidade é realizar o balanceamento de carga em sistemas distribuídos.

Page 28: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Como obter o índice de desempenho ?

Page 29: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Como obter o índice de desempenho ?

Cada índice de carga é calculado separadamente, e possui um benchmark específico.

Fazer normalização de cada índice de carga.

Obter índice de desempenho que é dado por:

Page 30: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Como obter o índice de desempenho ?

ID é o índice de desempenho o qual leva em consideração os quatro recursos básicos (CPU, memória, disco e rede), W1, W2, W3 e W4 são os pesos dados para os índices de acordo com as características da aplicação escolhida.

IProcessador é a combinação dos índices de processador, os quais mais se adéquam a aplicações estritamente CPU-Bound.

IMemória é a combinação dos índices de memória, os quais mais se adéquam a aplicações estritamente Memory-Bound.

IDisco é a combinação dos índices de disco, os quais mais se adéquam a aplicações estritamente Disk-Bound.

IRede é a combinação dos índices de rede, os quais mais se adequam a aplicações estritamente Network-Bound.

Page 31: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

O Índice de Carga e Desempenho

Escalonamento fazendo uso de resultados de qualquer índice de carga é sempre melhor quando comparado com sistemas que não usam balanceamento.

Índices de cargas baseados na média geralmente são melhores que índices instantâneos.

A média do comprimento de fila de CPU é um pouco melhor que a utilização de CPU.

Page 32: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

O Índice de Carga e Desempenho

Os índices de desempenho são importantes pois eles fornecem informações que levam em consideração as heterogeneidades configuracional, arquitetural e temporal das máquinas existentes no sistema.

Em ambientes heterogêneo e multi-usuário, a importância do índice de carga é ainda maior.

A presença de aplicações de usuários e as diferenças entre os processadores influenciam consideravelmente no desempenho esperado para a aplicação.

Page 33: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

Referências Bibliográficas

Branco, Kalinka Regina Lucas Jaquie Castelo. Índices de carga e desempenho em ambientes paralelos/distribuídos : modelagem e métricas. 2004. 260p. Tese (Doutorado) - Instituto de Ciências Matemáticas e de Computação

Voorsluys, William. Avaliação de índices de carga de memória em sistemas computacionais distribuídos. 2006. 96p. Dissertação (Mestrado) - Instituto de Ciências Matemáticas e de Computação

Kunz, T. (1991). The Influence of Different Workload Descriptions on a Heuristic Load Balancing Scheme. IEEE Transactions on Software Engineering, v.17, n.7, p.725-730, July.

Schnor, B.; Petri, S.; Langendörfer, H. (1996). Load Management for Load Balancing on Heterogeneous Plataforms: A Comparison of Traditional and Neural Network Based Approaches. In Second International Euro-Par Conference - Euro-Par'96, Lecture Notes in Computer Science v.1124, Lyon, France, p.611-614, August.

Page 34: Índice de Carga e Desempenho em Sistemas Distribuídos Com eles é possível estimar a carga sobre um sistema afim de que seja possível realocar os usuários

O Índice de Carga e Desempenho

Dúvidas?