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

Post on 18-Apr-2015

106 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SeminárioÍndices de Carga e

Desempenho em Sistemas Distribuídos

SSC-642 Sistemas Computacionais Distribuídos

Bruno Teles Lino Begotti

Caio Cesar de Souza Bispo

Jonas Rossi Dourado

Jonathan W. R. Machado

UNIVERSIDADE DE SÃO PAULO

Í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.

O Sistema Distribuído

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

Í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.

Í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.

Í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.

Í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.

Í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.

Í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.

Í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ê ?

Í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.

Í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.

Í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.

Í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”.

Í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.

Í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

Í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.

Í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.

Índices de carga de disco

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

Í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.

Í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.

Í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.

Í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.

Í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.

Í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.

Í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.

Como obter o índice de desempenho ?

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:

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.

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.

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.

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.

O Índice de Carga e Desempenho

Dúvidas?

top related