Você está na página 1de 116

Avaliao de ndices de carga de

memria em sistemas computacionais


distribudos
William Voorsluys

Avaliao de ndices de carga de memria


em sistemas computacionais distribudos

William Voorsluys

Orientador: Prof. Dr. Marcos Jos Santana

Dissertao apresentada ao Instituto de Cincias Matemticas e


de Computao - ICMC-USP, como parte dos requisitos para
obteno do ttulo de Mestre em Cincias da Computao e
Matemtica Computacional.

VERSO REVISADA APS A DEFESA

Data da defesa:
Visto do orientador:

USPSoCarlos
Setembro/2006

06/04/2006

Brbara, minha maior incentivadora.

Agradecimentos

A Deus, pela proteo em todos os momentos.


Aos professores Marcos Santana e Regina Santana pela orientao, pela oportunidade e
pela confiana depositada.
Ao professor e amigo Paulo pela orientao constante desde a graduao e pela coorientao no mestrado.
Agradecimentos especiais Brbara, minha esposa, amiga e companheira em todos os
momentos. Brbara, sem voc eu no chegaria at aqui!
Aos colegas do grupo LASDPC, amigos nos momentos de estudo e tambm de
descontrao.
Simone, pela amizade, bom humor e hospitalidade em So Carlos.
s nossas famlias pelo incentivo, que foi essencial para concluirmos essa etapa.
Universidade de So Paulo, pela tima estrutura oferecida para a realizao do
mestrado.
Ao CNPq, pelo apoio financeiro.

Resumo

Este trabalho apresenta uma anlise de comportamento de ndices de carga


relacionados ao uso e atividade de memria. So descritos 11 ndices que
refletem direta ou indiretamente a carga de memria. Esses ndices podem
ser obtidos facilmente no sistema operacional GNU/Linux atravs do
sistema de arquivos /proc. Uma ferramenta de monitoramento foi criada
para facilitar a anlise de comportamento, podendo tambm servir para
fornecer informaes de carga para polticas de escalonamento. Os valores
de cada ndice foram monitorados durante a execuo de uma carga de
trabalho composta por aplicaes reais que utilizam altas quantidades de
memria. A partir dos resultados possvel descobrir a utilidade de cada
ndice, indicando como eles podem ser usados para auxiliar polticas de
escalonamento a avaliar a carga de memria de uma mquina. Mtricas de
avaliao de carga originrias da combinao de mais de um ndice so
descritas. Essas mtricas foram criadas em casos em que a combinao de
mais de um ndice permitia representar a carga de memria com mais
preciso do que ndices usados isoladamente. As mtricas e ndices
pesquisados proporcionam formas precisas de representar a carga de
memria em vrios nveis, desde nveis de baixa utilizao at nveis de
saturao da memria principal com sintomas de ocorrncia de thrashing.

Abstract

This work presents an analysis of the behavior of load indices related to


memory usage and activity. It describes 11 indices which reflect memory
load, directly or indirectly. These indices may be easily obtained on the
GNU/Linux operating system using the /proc filesystem. A monitoring tool
has been developed to make the behavior analysis easier, but it can also be
employed to provide load information to scheduling policies. The values of
each index have been monitored during the execution of a workload composed by real memory-intensive applications. From the monitoring results, it
is possible to find out the usefulness of each index, pointing out how it may
be used to help scheduling policies evaluate the memory load of a certain
computer. Load evaluation metrics have been created combining more than
one index, with the objective of characterizing memory load more precisely
than just one isolated index. The explored metrics and indices have shown
to provide precise forms of representing memory load at several levels, from
low utilization levels up to excessive main memory usage with symptoms of
thrashing.

Sumrio

1.

2.

Introduo ......................................................................................................................... 1
1.1

Motivao e objetivos............................................................................................. 1

1.2

Organizao dos captulos ...................................................................................... 4

Escalonamento de processos e ndices de carga ............................................................... 7


2.1

Consideraes Iniciais ............................................................................................ 7

2.2

Plataformas computacionais distribudas para execuo de aplicaes paralelas .. 8

2.3

Escalonamento em plataformas distribudas .......................................................... 9


2.3.1

2.4

Classes de aplicaes ............................................................................................ 12

2.5

O efeito do mau gerenciamento de memria no desempenho dos sistemas......... 14

2.6

Uso de informaes no escalonamento................................................................. 17

2.7

ndices de carga .................................................................................................... 19


2.7.1

2.8
3.

4.

5.

Componentes de um algoritmo de escalonamento ................................... 11

Exemplos de ndices de Carga ................................................................. 22

Consideraes finais ............................................................................................. 26

ndices de carga relacionados ao uso e atividade de memria ..................................... 29


3.1

Consideraes iniciais .......................................................................................... 29

3.2

Informao sobre a atividade do processador....................................................... 29

3.3

Informaes sobre a utilizao da memria ......................................................... 30

3.4

Informaes sobre o uso do espao de swap ........................................................ 33

3.5

Informaes sobre a atividade da memria virtual............................................... 34

3.6

Ausncias de pgina ............................................................................................. 34

3.7

Consideraes finais ............................................................................................. 35

Monitoramento de ndices de carga ................................................................................ 37


4.1

Consideraes iniciais .......................................................................................... 37

4.2

Coleta de informaes do diretrio /proc ............................................................. 37

4.3

Implementao de uma ferramenta de gerenciamento de carga ........................... 43

4.4

Comparao com outros sistemas operacionais ................................................... 47

4.5

Consideraes finais ............................................................................................. 47

Anlise de comportamento dos ndices de carga ............................................................ 49


5.1

Consideraes iniciais .......................................................................................... 49


i

5.2

5.3

5.4
6.

7.

Monitoramento da execuo de uma carga de trabalho ....................................... 49


5.2.1

Descrio das aplicaes.......................................................................... 50

5.2.2

Submisso das aplicaes ........................................................................ 52

Anlise dos resultados do monitoramento ........................................................... 56


5.3.1

Caracterizao da quantidade de memria ocupada ................................ 57

5.3.2

Mtricas para deteco da saturao da memria principal..................... 63

5.3.3

Mtricas para medir o uso e a atividade do espao de swap.................... 70

Consideraes finais............................................................................................. 83

Concluso ....................................................................................................................... 87
6.1

Ponderaes finais da dissertao ........................................................................ 87

6.2

Contribuies ....................................................................................................... 89

6.3

Sugestes para trabalhos futuros .......................................................................... 91

Referncias bibliogrficas .............................................................................................. 93

ii

Lista de Figuras

Figura 2.2 O escalonamento segundo Casavant; Kuhl (1988). Extrada de Souza (2000).... 10
Figura 4.1 - Contedo do arquivo /proc/stat............................................................................. 41
Figura 4.2 - Contedo do arquivo /proc/meminfo.................................................................... 41
Figura 4.3 - Contedo do arquivo /proc/vmstat........................................................................ 43
Figura 4.4 Exemplo de contedo do arquivo de configurao do mdulo............................ 44

iii

Lista de Grficos

Grfico 5.1 Porcentagem total de memria usada................................................................. 56


Grfico 5.2 - Comportamento do ndice 2 (memria ocupada) durante o monitoramento. .....57
Grfico 5.3 - Porcentagem da memria principal ocupada por caches e buffers ..................... 58
Grfico 5.4 Comparao entre a quantidade de memria ocupada incluindo e excluindo as
pginas de caches e buffers. ............................................................................................. 59
Grfico 5.5 Comportamento dos ndices de memria ativa e inativa.................................... 60
Grfico 5.6 Comparao entre mtricas propostas para representar a quantidade de memria
ocupada............................................................................................................................. 61
Grfico 5.7 Proporo entre os ndices de memria ativa e inativa. ..................................... 64
Grfico 5.8 Ausncias maiores vs. ausncias menores. ........................................................ 66
Grfico 5.9 - Atividade de alocao de pginas vs. atividade de page stealing....................... 68
Grfico 5.10 Representao dos ndices que medem a quantidade total de swap usado e a
poro do swap usada pelo swap cache. .......................................................................... 71
Grfico 5.11 Mtrica que representa a quantidade real de swap usado................................. 72
Grfico 5.12 Ausncias maiores durante a segunda iterao. ............................................... 73
Grfico 5.13 ndice que representa a ocorrncia de ausncias maiores. ............................... 76
Grfico 5.14 - Comportamento do ndice que mede a quantidade de processos bloqueados... 78
Grfico 5.15 - Fila de processos prontos. ................................................................................. 80
Grfico 5.16 - Processos prontos vs. processos bloqueados. ................................................... 81
Grfico 5.17 - Representao da mtrica M5. .......................................................................... 82

Lista de Tabelas

Tabela 3.1 - Resumo dos ndices pesquisados.......................................................................... 36


Tabela 4.1 Arquivos do diretrio /proc que contm informaes do sistema como um todo.
.......................................................................................................................................... 38
Tabela 5.1 Seqncia de 12 instncias de aplicaes que forma uma iterao de submisses
.......................................................................................................................................... 53
Tabela 5.2 Descrio das 7 iteraes de variao de carga usadas durante o monitoramento
.......................................................................................................................................... 54
Tabela 5.3 Mdia das diferenas entre as mtricas M1 e M2 em todas as iteraes............. 62
Tabela 5.4 Quadro comparativo dos ndices pesquisados. .................................................... 84

vii

1. Introduo

1.1 Motivao e objetivos


Os avanos na rea da computao paralela e distribuda trouxeram vrias vantagens
para os usurios, entre elas a possibilidade de se conectar diversos elementos de
processamento independentes para formar um sistema de alto desempenho. Isso permite que
problemas de grande porte e complexos possam ser resolvidos de forma eficiente, a um custo
relativamente baixo.
Um tipo especfico de plataforma que merece destaque so as NOWs (Networks of
Workstations). Esses sistemas so formados por estaes de trabalho ou computadores
pessoais (ns) conectados por uma rede de comunicao e disponveis para executar
aplicaes paralelas (Anderson et al., 1995). Esse tipo de plataforma apresenta caractersticas
especiais que normalmente no so encontradas nas plataformas de processamento
maciamente paralelo, como heterogeneidade e compartilhamento dos recursos com usurios
interativos. Assim surgem novas preocupaes a serem consideradas, principalmente no que
se refere ao gerenciamento dos recursos da plataforma (Ferstl, 1996).
Uma atividade que tem seu foco fortemente influenciado por essas novas caractersticas
o escalonamento de processos. Nesse contexto, vrios fatores afetam o desempenho final do
sistema, como: caractersticas do hardware, carga de trabalho externa e as exigncias das
aplicaes (Souza, 2000). Em ambientes compartilhados por aplicaes de vrios usurios,

criam-se situaes onde nem sempre um determinado elemento de processamento est apto a
executar um processo, j que seus recursos podem estar sobrecarregados. Nessas situaes
essencial que os algoritmos de escalonamento possuam informaes sobre a carga de cada
recurso. As particularidades de cada aplicao, no que se refere demanda por recursos,
tambm devem ser levadas em conta, j que cada tipo de aplicao pode apresentar exigncias
distintas, tendo seu desempenho afetado por diferentes recursos do sistema.
A eficincia do escalonamento depende da qualidade das informaes disponveis no
momento em que as decises so tomadas. O estudo dos ndices de carga visa aumentar a
qualidade das decises de escalonamento atravs da utilizao de informaes que reflitam a
capacidade dos elementos de processamento em servir os processos a serem escalonados.
Nas dcadas de 1980 e 1990 vrios estudos foram feitos para avaliar a eficincia de
ndices de carga destinados predominantemente ao escalonamento de aplicaes que
dependiam mais da velocidade do processador. A aplicao de ndices de carga em algoritmos
de escalonamento feitos para aplicaes dependentes de outros recursos (por exemplo, a
memria), no recebeu muita ateno dos pesquisadores da rea. Isso se deve ao fato de que
naquela poca a velocidade dos processadores era bem menor do que atualmente, tornando-os
o principal gargalo dos sistemas computacionais. Alm disso, devido ao tamanho reduzido da
memria, as aplicaes no podiam depender de muitos dados para executar. Portanto, a
velocidade desses recursos interferia menos no desempenho das aplicaes do que a
velocidade do processador.
Com o rpido desenvolvimento da tecnologia dos microprocessadores, o processador
deixou de ser um recurso to caro em relao memria. Os avanos nas tecnologias RISC
(Reduced Instruction Set Computer) e VLSI (Very Large Scale of Integration) foram muito
significativos na ltima dcada, contribuindo para o aumento da velocidade dos
processadores. A velocidade das memrias tambm vem aumentando, mas num ritmo bem
menor que a dos processadores. Isso contribuiu para aumentar significativamente a diferena

de velocidade entre esses recursos. Por outro lado, as aplicaes atuais esto cada vez mais
dependentes de dados para executar. Devido a essa realidade, o desempenho das aplicaes
depende cada vez mais do uso eficaz dos recursos de memria (Xiao et al., 2002; Stallings,
1999). O mesmo ocorre com os dispositivos de armazenamento externo, cuja velocidade de
acesso vrias vezes menor que a velocidade de acesso memria principal (Xiao et al.,
2002).
Os fatores de velocidade dos recursos aliados concorrncia entre aplicaes e o
tamanho insuficiente da memria podem levar ocorrncia excessiva de ausncias de pgina,
causando srias perdas de desempenho. Mesmo os acessos memria respondidos sem
ausncias de pgina so muito custosos (Lin et al., 2001; Zhang et al., 2001). Em situaes de
carga de memria extrema, surgem as situaes de thrashing, nas quais o sistema operacional
permanece grande parte do tempo tratando ausncias de pgina e pouca computao til
realizada. O mau gerenciamento da memria acarreta efeitos muito negativos nos sistemas
computacionais, podendo ser responsvel pela anulao dos benefcios do processamento
distribudo. Considerando as exigncias das aplicaes atuais, a necessidade de bons sistemas
de gerenciamento da memria evidente.
Este trabalho motiva-se no fato de que a memria um recurso que deve ser utilizado
com cuidado especial. Os algoritmos de escalonamento voltados s aplicaes que dependem
de grandes quantidades de dados devem ser dotados de informaes sobre o estado da
memria. Isso pode garantir que polticas de escalonamento tomem decises que mantenham
o bom uso desse recurso e idealmente evitem a ocorrncia de ausncias de pginas. H uma
carncia na literatura de estudos sobre ndices de carga de memria para escalonamento em
plataformas distribudas. A maioria dos trabalhos considera apenas a carga da CPU (Central
Processing Unit) como indicativo da carga das mquinas. Esses trabalhos assumem que
qualquer mquina do sistema possui memria suficiente para satisfazer todos os programas
submetidos ao sistema. O preenchimento dessa lacuna da literatura pode estimular o

desenvolvimento de outros trabalhos que estudem com mais detalhes os efeitos da utilizao
de cada ndice de carga em diferentes situaes.
Os objetivos deste trabalho so: (1) pesquisar novos ndices de carga relacionados ao
uso e atividade de memria, (2) monitorar o comportamento de cada ndice durante a
execuo de uma carga de trabalho, (3) encontrar relaes entre os ndices e (4) descobrir
como esses ndices e as mtricas criadas a partir deles podem representar o estado de carga de
uma mquina. Foram pesquisados 11 ndices de carga relacionados memria, que podem ser
facilmente obtidos no sistema operacional Linux, em nvel de usurio e sem a necessidade de
adio de mdulos ou modificao do cdigo no ncleo (kernel).
O objetivo dos ndices de carga pesquisados auxiliar as polticas de escalonamento a
tomarem decises visando otimizar o uso da memria. Este trabalho fornece indicaes sobre
as situaes nas quais cada ndice tem o uso recomendado. A maneira exata como esses
ndices sero utilizados pelas polticas depender do objetivo de cada escalonador. A
atividade de comprovar a eficincia dos ndices no escalonamento est fora do escopo deste
trabalho.
Este trabalho foi desenvolvido no contexto do sistema Linux, considerando-se: (1) o
fato de seu cdigo ser aberto, o que possibilita um melhor entendimento do funcionamento de
processos internos que influenciam o gerenciamento da memria; (2) o desenvolvimento de
software no Linux facilitado pela disponibilidade de boas ferramentas gratuitas; (3)
atualmente a abrangncia desse SO na rea de computao de alto desempenho de baixo custo
muito significativa.

1.2 Organizao dos captulos


O Captulo 2 apresenta uma reviso bibliogrfica da rea de escalonamento de
processos e ndices de carga. So apresentados alguns conceitos de sistemas distribudos e
escalonamento de processos. Tambm so mostrados conceitos sobre o uso de informaes no

escalonamento, classes de aplicaes e alguns ndices de carga pesquisados por outros


autores.
O Captulo 3 apresenta uma descrio dos 11 ndices de carga pesquisados neste
trabalho. O significado de cada uma das informaes de carga explicado. Explicaes sobre
o funcionamento do sistema de gerenciamento de memria so apresentadas quando
necessrias para melhor entender um ndice.
O Captulo 4 aborda o problema do monitoramento de ndices de carga no Linux,
apresentando uma explicao sobre o pseudo-sistema de arquivos /proc. A ferramenta de
monitoramento desenvolvida tambm descrita nesse captulo.
O Captulo 5 a principal parte desta dissertao; nele apresenta a anlise de
comportamento dos ndices pesquisados. Essa anlise baseada num monitoramento
realizado utilizando trs aplicaes reais. As configuraes do monitoramento e as
caractersticas das aplicaes so detalhadas nesse captulo. Em seguida, so mostrados
diversos dados nos quais se baseiam as concluses sobre o comportamento de cada ndice. No
decorrer do captulo so apresentadas as indicaes de como os ndices podem beneficiar as
polticas de escalonamento.
No Captulo 6 so apresentadas as concluses do trabalho, onde uma sntese dos
resultados obtidos mostrada. Tambm so descritas algumas idias de trabalhos futuros que
podem complementar este trabalho de mestrado. Por fim, o Captulo 7 lista as referncias
bibliogrficas utilizadas para o embasamento desse estudo.

2. Escalonamento de processos e ndices de carga

2.1 Consideraes Iniciais


A computao no a nica rea onde se emprega o conceito de escalonamento. O ato
de escalonar praticado em diversas reas do conhecimento, como na engenharia ou at
mesmo em nosso cotidiano. Escalonar significa atribuir uma tarefa a ser realizada a um
recurso disponvel e determinar quando o recurso ir executar a tarefa. No contexto deste
trabalho as tarefas a serem escalonadas so os processos e o recurso um computador.
A eficincia do escalonamento est fortemente ligada s informaes disponveis no
momento em que as decises devem ser tomadas para a atribuio dos processos aos
elementos de processamento. Diversas informaes podem influenciar na deciso de
escalonamento, entre elas est a quantidade de carga de trabalho presente na plataforma
computacional (Souza, 2000).
Este captulo trata dos principais tpicos relacionados ao problema de se escalonar
processos em plataformas computacionais distribudas. Inicialmente so definidos os
principais termos, atravs da reviso da bibliografia da rea, com o objetivo de situar o leitor
no contexto deste trabalho. Tambm sero discutidas questes sobre as classes de aplicaes,
diferenciando-as segundo suas exigncias por recursos. Ainda sero discutidas as questes
sobre o uso de informaes no escalonamento e sobre ndices de carga, incluindo os tipos de
ndices e os exemplos encontrados na literatura.

2.2 Plataformas computacionais distribudas para execuo de aplicaes


paralelas
Uma plataforma computacional distribuda uma coleo de elementos de
processamento, fisicamente distribudos, conectados por uma rede de comunicao e utilizada
com objetivos especficos (Souza, 2000). Uma das aplicaes das plataformas computacionais
distribudas a execuo de aplicaes paralelas, onde cada computador interligado visto
como um processador disponvel.
Uma abordagem muito difundida atualmente o uso de NOWs (Networks of
Workstations) (Anderson et al., 1995), ou COWs (Clusters of Workstations, ou simplesmente
clusters1) (Buyya, 1999). Essa abordagem fornece uma tima relao custo/benefcio, em
comparao s mquinas paralelas fortemente acopladas (alto custo), porque so sistemas
construdos utilizando-se equipamentos de fcil aquisio, baixo custo, e ao mesmo tempo,
alto desempenho. Uma outra vantagem que computadores de uso geral, conectados por uma
rede de comunicao, normalmente j se encontram instalados, reduzindo significativamente
o custo para a execuo das aplicaes paralelas (Souza, 2000). Alm de baratos, os clusters
se tornaram confiveis e escalveis devido aos avanos recentes na tecnologia de
desenvolvimento de microprocessadores e equipamentos de interconexo (Buyya, 1999).
Outro motivo que contribuiu para tornar os clusters to populares foi o surgimento de vrias
opes de software largamente aceitos, de fcil acesso e custo reduzido. Como exemplo podese citar o sistema operacional gratuito Linux e os ambientes de troca de mensagens como o
MPI (Message Passing Interface) (Gropp et al., 2000).
Um dos recursos dos ambientes de passagem de mensagens permitir que as aplicaes
paralelas sejam executadas em plataformas heterogneas (Souza, 2000). A heterogeneidade
um fator importante a ser observado nas plataformas distribudas, principalmente quando se

comum encontrar o termo cluster como sinnimo de NOW (Buyya, 1999). Graham (2001) afirma que uma
NOW um tipo de cluster onde as mquinas so compartilhadas por outros usurios (interativos ou no); o autor
trata os clusters Beowulf (Becker et al., 1995) como um outro tipo de cluster, no qual no h a presena de
usurios interativos e as mquinas geralmente so dedicadas aplicao.

trata de NOWs. Existem basicamente dois tipos de heterogeneidade. O primeiro refere-se a


computadores de diferentes arquiteturas (heterogeneidade arquitetural), enquanto o segundo
refere-se a computadores de mesma arquitetura, mas que apresentam diferentes configuraes
de recursos, como velocidade da CPU, quantidade de memria disponvel, etc.,
(heterogeneidade de configurao) (Zhou et al., 1993). comum que sistemas distribudos de
uso geral apresentem os dois tipos de heterogeneidade. O problema de escalonamento de
processos nesses sistemas depende da avaliao da heterogeneidade, j que essa caracterstica
tem impacto decisivo no desempenho da maioria das aplicaes paralelas, sobretudo se elas
dependem da sincronizao entre os processos.

2.3 Escalonamento em plataformas distribudas


O escalonamento tratado neste trabalho aquele realizado sobre vrios computadores,
tambm chamado de escalonamento global, onde o objetivo decidir qual computador, entre
vrios disponveis, est mais capacitado para atender s necessidades de certo processo,
segundo objetivos bem definidos. O escalonamento feito em um nico computador (local) no
ser abordado. No escalonamento local o objetivo gerenciar vrios processos que podem
executar concorrentemente sobre um nico processador disponvel, atribuindo fatias do tempo
do processador para os processos (Tanenbaum, 2003). O escalonamento de processos em
plataformas distribudas geralmente preocupa-se com o escalonamento global, deixando o
escalonamento local a cargo do sistema operacional do computador. O escalonamento global
tem sido muito estudado, principalmente com o advento da computao paralela em
plataformas distribudas (Souza, 2000).
Na literatura sobre escalonamento comum encontrar os termos: elemento de
processamento, processador, n, host ou mquina, como sinnimos de computador. Como
sinnimos de processo encontram-se os termos tarefa, job, programa ou aplicao. Os termos
aplicao e job tambm so usados para designar um conjunto de processos (Souza, 2000).

10

Neste trabalho utilizam-se os termos processo e tarefa como sinnimos. O termo aplicao
usado como sendo a entidade maior de execuo composta de um ou mais processos.
Vrios autores definem a atividade de escalonamento de processos. Tanenbaum (2003)
refere-se ao escalonamento global como alocao de processadores, definindo essa
atividade como sendo o estudo dos algoritmos usados para determinar quais processos sero
atribudos para quais processadores. Shirazi e Hurson (1992) definem a rea de
escalonamento global como o estudo da distribuio dos processos entre os elementos de
processamento, para atingir alguma meta de desempenho. Essa definio especialmente
interessante por que cita como caracterstica do escalonamento, os objetivos a que ele se
prope. Segundo Souza (2000), esses objetivos inseridos no algoritmo de escalonamento,
determinam a sua personalidade e restringem a sua rea de atuao. Exemplos desses
objetivos so: maximizao do throughput, otimizao da utilizao dos processadores,
reduo do tempo de execuo e balanceamento de carga (Shirazi e Hurson, 1992; Feitelson
et al, 1997; Xu e Lau, 1997).
Casavant e Kuhl (1988) definem o escalonamento global, como sendo um recurso para
o gerenciamento de recursos. Esse gerenciamento composto basicamente por uma poltica
usada para permitir o acesso e o uso de um recurso por seus vrios consumidores, de modo
eficiente (Figura 2.1). Os recursos so processadores, memrias, rede de comunicao, entre
outros; e os consumidores so os usurios representados por suas aplicaes seqenciais ou
paralelas.

Figura 2.1 O escalonamento segundo Casavant; Kuhl (1988). Extrada de Souza (2000)

11

A lgica necessria para se efetuar o escalonamento implementada pelo algoritmo de


escalonamento. No algoritmo podem ser inseridos diversos mecanismos responsveis pelos
procedimentos necessrios para atingir o objetivo do escalonamento. Alguns exemplos so os
mecanismos para coletar informaes sobre a carga do sistema e trocar informaes sobre os
processadores (Souza, 2000).
2.3.1 Componentes de um algoritmo de escalonamento
Por questes prticas geralmente divide-se um algoritmo de escalonamento em
mdulos, ou componentes. Shivaratri et al. (1992), afirmam que um algoritmo de
escalonamento tipicamente dividido em quatro componentes (chamados aqui de
polticas): poltica de transferncia, poltica de seleo, poltica de localizao e poltica de
informao.
A poltica de transferncia determina se um n deve ou no participar de uma
transferncia de processos, seja como transmissor ou como receptor. A utilizao de limites
(thresholds) muito comum na implementao de polticas de transferncia. Um n se torna
um transmissor quando a sua carga excede um limite T1, ou pode se tornar um receptor
quando a carga est abaixo de um limite T2. Dependendo do algoritmo, os valores de T1 e T2
podem ser iguais. Uma outra opo seria uma poltica de transferncia relativa, onde a carga
de um n A seria comparada carga de outro n B para determinar se A ou B deve se tornar
transmissor ou receptor.
Assim que a poltica de transferncia determina que deva haver uma transferncia,
deve-se escolher qual processo ser transferido. Esse o trabalho da poltica de seleo que
deve ser capaz de encontrar um processo apto a ser transferido. Caso isso no seja possvel o
n no pode mais ser considerado um transmissor. Efetuar uma transferncia no significa
necessariamente transferir um processo j iniciado. A maneira mais simples de implementar
uma poltica de seleo selecionar os processos mais novos, ou seja, aqueles que acabaram
de chegar para serem escalonados e, portanto, no iniciaram sua execuo. As transferncias

12

desse tipo no so preemptivas, portanto so mais baratas. Transferncias preemptivas


requerem a migrao de um processo que j iniciou sua execuo e envolvem uma srie de
tarefas para possibilitar que o processo possa ser reiniciado em outra mquina a partir do
ponto que parou. No caso da necessidade de transferncias preemptivas, a poltica de seleo
deve escolher os processos que proporcionaro uma transferncia mais rpida. Nesse caso a
seleo pode necessitar de uma anlise mais criteriosa.
A poltica de localizao responsvel por encontrar um parceiro para a transferncia
(transmissor ou receptor). Uma poltica de localizao descentralizada muito usada procura
um parceiro atravs de pooling. Nessa tcnica um n pergunta para os outros ns se algum
deles aceita participar de uma transferncia para receber ou transmitir processos. Numa
abordagem centralizada, feita uma consulta a um n especfico, chamado de coordenador,
que localiza um outro n apto a participar da transferncia.
A poltica de informao responsvel por coletar informaes sobre o sistema. Ela
decide qual informao coletar, onde encontrar essa informao e quando utiliz-la. com
base nos valores fornecidos pela poltica de informao que a poltica de transferncia
determina se deve ou no haver uma transferncia de processos.

2.4 Classes de aplicaes


Sob o ponto de vista da utilizao de recursos, as aplicaes paralelas se comportam de
diferentes maneiras. Uma forma de classificar as aplicaes agrupando-as em classes de
acordo com o seu comportamento. Muitas aplicaes paralelas, quando executadas,
demonstram uma tendncia em utilizar um determinado recurso (ou mais de um recurso) mais
intensamente do que outros. Os recursos que predominantemente influenciam o desempenho
das aplicaes so: CPU, memria, dispositivos de I/O, e rede de comunicao.
As aplicaes que permanecem a maior parte do seu tempo de execuo utilizando a
CPU so ditas orientadas CPU (CPU-bound, ou computation-intensive). Diversos
exemplos de aplicaes CPU-bound podem ser facilmente identificados em reas como

13

engenharia, fsica e biologia. Geralmente, as aplicaes dessas reas so baseadas em mtodos


matemticos complexos, clculos repetitivos ou buscas exaustivas, o que demanda muito
processamento. Os processos gerados por esse tipo de aplicao geralmente mantm a CPU
ocupada for todo o seu tempo de execuo.
Aplicaes que necessitam de grandes quantidades de memria principal para executar
so tratadas na literatura como memory-intensive (ou menos comumente memory-bound).
Qualquer aplicao que manipula grandes conjuntos de dados e os armazena na memria
principal pode se enquadrar nessa categoria, por exemplo, programas de data mining, buscas
em bancos de dados, reconhecimento de voz, processamento de vdeo e modelos climticos.
comum que as aplicaes memory-intensive tambm sejam consideradas CPU-bound, j que,
alm de manipular grandes conjuntos de dados, elas tambm podem demandar por
processamento pesado nesses dados.
Outra classe de aplicao importante a classe das aplicaes orientadas a I/O (I/Obound, ou I/O-intensive). Na literatura o termo I/O-bound geralmente refere-se a aplicaes
que utilizam com freqncia os dispositivos de armazenamento (por exemplo, disco rgido
local). Essas aplicaes caracterizam-se por realizar muitas leituras e escritas no disco durante
a execuo. Isso acontece quando o processamento realizado gera muitos resultados que
devem ser armazenados ou precisa ler um grande volume de dados.
Para as aplicaes que efetuam muitas comunicaes atravs da rede reservada a
denominao communication-intensive, ou menos freqentemente, communication-bound e
network-bound. Diversas aplicaes, quando paralelizadas, geram processos que executam
concorrentemente, mas no independentemente. Nesse caso, os processos necessitam trocar
dados entre si freqentemente para atingir o objetivo comum da aplicao.
O termo data-intensive utilizado para se referir s aplicaes que manipulam grandes
conjuntos de dados (Amiri et al., 2000). Devido ao seu comportamento, geralmente essas
aplicaes so classificadas como memory-intensive, j que os dados necessrios permanecem

14

na memria enquanto so processados e tambm I/O-bound, devido necessidade de manter


os dados em disco rgido e utiliz-los durante o processamento.
As classes de aplicaes no so conjuntos disjuntos; h aplicaes que no
demonstram uma tendncia bem definida para que estejam aptas a pertencer a apenas uma
classe. Freqentemente, durante a execuo, as aplicaes podem ter os comportamentos
alterados, exibindo tendncias de utilizao de recursos opostas em diferentes fases de sua
execuo. Nesse caso, por exemplo, possvel que uma aplicao seja considerada CPUbound durante uma ou mais fases e I/O-bound em outras fases da execuo.
Na

literatura

encontram-se

afirmaes

que

confirmam

superioridade

do

escalonamento voltado a classes de aplicaes especficas, frente ao realizado por


escalonadores que no obtm informaes sobre as aplicaes (Souza, 2000). O estudo deste
trabalho visa viabilizar a explorao dessas informaes quando so conhecidas. Em
especfico, os ndices de carga pesquisados so voltados classe de aplicaes memoryintensive, que representa uma grande gama de aplicaes das mais diversas reas.

2.5 O efeito do mau gerenciamento de memria no desempenho dos


sistemas
Um dos principais limitantes do desempenho das aplicaes que utilizam bastante
memria a ocorrncia excessiva de ausncias de pginas (page faults). Isso se deve
concorrncia entre os programas em sistemas com memria limitada e lentido dos
dispositivos de armazenamento externo, que so usados como memria secundria. Segundo
Hennesy e Patterson (1996), a latncia de uma ausncia de pgina mais de 1000 vezes maior
que um acerto (page hit).
H estudos que avaliam a execuo de programas reais e quantificam as pores de
tempo gastas com operaes de CPU e acessos memria, como o descrito por Zhang et al.
(2001). Usando os benchmarks do conjunto SPEC 2000 numa mquina simulada com
processador de 1.6GHz, cache L1 de 64KB com associao de 4 vias, 1MB de cache L2 e

15

memria principal infinita, os autores constataram que, na mdia, o processador gasta 57% do
tempo processando acessos memria principal (perdas de L2), 12% servindo perdas de L1 e
apenas 31% do tempo com operaes de CPU.
A insero das ausncias de pginas num cenrio como esse pode levar a utilizao da
CPU a nveis bem mais baixos. Nos momentos em que o tratamento das ausncias de pgina
foge do controle do sistema operacional e a utilizao do sistema cai tanto a ponto de haver
pouca computao til, situaes de thrashing aparecem. A ocorrncia de thrashing est
associada a vrias condies: (1) ao tamanho limitado da memria principal, (2) ao nmero de
processos competindo por memria, (3) s exigncias de memria de cada programa e (4) ao
algoritmo de substituio de pginas (Jiang e Zhang, 2001).
Os sistemas operacionais multitarefa gerenciam a memria virtual de modo que todos os
processos tenham as mesmas chances de executar. Para garantir esse princpio eles adotam
um mecanismo de substituio de pginas que entra em ao quando a quantidade de
memria requisitada pelos programas excede o espao de memria principal disponvel.
Nessa situao o mecanismo deve escolher, baseando numa poltica, uma pgina residente na
memria principal, que dever ser enviada para o espao de swap e substituda por outra
pgina. Uma poltica de substituio de pginas muito usada a LRU (Least Recently Used
ou Menos Recentemente Usada), que seleciona para substituio pginas que no foram
acessadas recentemente (Tanenbaum, 2003).
Cada programa possui um conjunto mnimo de dados que devem ser mantidos na
memria principal para que ele possa trabalhar. Esse conjunto conhecido com o working
set do programa. Quando o acmulo da demanda de memria dos programas excede o
espao disponvel, pode haver situaes em que nenhum programa consegue estabelecer o seu
conjunto mnimo de trabalho. Nessas situaes o sistema pode enfrentar muitas ausncias de
pginas, baixa utilizao da CPU e longas demoras no tempo de resposta dos programas.
Nesse caso diz-se que o sistema est numa situao de thrashing (Jiang e Zhang, 2005).

16

O comportamento da poltica LRU tambm pode levar a situaes desfavorveis. Essa


poltica permite que, em situaes de thrashing, pginas que recentemente foram trazidas para
a memria, com o objetivo de formar o conjunto mnimo de trabalho de um programa, sejam
substitudas antes mesmo de o programa comear a operar sobre elas. Uma pgina de
memria virtual torna-se candidata para substituio caso no seja acessada por certo perodo.
Isso pode ocorrer em duas situaes: (1) o programa no precisa da pgina e ela no
acessada; e (2) o programa no capaz de acessar a pgina porque est tratando de ausncias
de pginas que esto ocorrendo. Na literatura as pginas LRU do primeiro caso so
conhecidas como LRU verdadeiras, enquanto que as do segundo caso so as pginas LRU
falsas. As pginas falsas aparecem porque, para a poltica LRU, todos os programas possuem
o mesmo direito de manter seus dados na memria (Jiang e Zhang, 2005).
Segundo Jiang e Zhang (2001), o aspecto mais destrutivo das situaes de thrashing,
que, apesar dessas situaes serem iniciadas por picos repentinos de carga, o sistema pode
continuar em thrashing por tempo indefinido, ou seja, difcil recuperar-se dessas situaes.
Diversas solues foram propostas para tentar proteger o sistema de situaes de thrashing;
algumas inclusive esto implementadas em sistema operacionais reais. As solues esto
divididas em duas categorias: (1) solues para prevenir a ocorrncia de thrashing, e (2)
solues para minimizar o efeito do thrashing depois que ele detectado. Na primeira
categoria esto includos os modelos de conjunto mnimo de trabalho (Denning, 1968a) e as
solues de substituio local de pginas (Alderson, 1972). Na segunda categoria, esto os
mecanismos de controle de carga (Denning, 1968b).
Mesmo com a ajuda dos mecanismos de preveno e recuperao, pode no ser possvel
manter o bom desempenho de um sistema sob grande quantidade de carga. A soluo
definitiva para o thrashing continua sendo atualizar o hardware do sistema caso as situaes
de falta de memria sejam freqentes. possvel criar sistemas com grandes quantidades de
memria, mas esse recurso possui um custo no desprezvel e continua sendo limitado.

17

No caso de sistemas computacionais de processamento paralelo com memria


distribuda, garantir a boa utilizao da memria local em cada n essencial para manter o
desempenho de todo o sistema. Como a maioria das aplicaes que executam nesses sistemas
depende da coordenao (sincronizao) entre os processos, a ocorrncia de thrashing em um
nico n ou em um pequeno conjunto de ns, pode impedir que os processos que executam
em outros ns faam alguma computao til. Por isso, evitar o thrashing localmente em cada
n altamente desejvel para manter o bom desempenho do sistema como um todo (Jiang e
Zhang, 2005). Outro problema que afeta negativamente o desempenho de sistemas paralelos
a falta de balanceamento da carga de memria. Acharia e Setia (1999) mostram que, na
prtica, as utilizaes das memrias de diferentes ns tendem a ficar altamente
desbalanceadas. Ns mais carregados podem estar sofrendo ausncias de pginas, enquanto
poucos acessos memria so feitos em ns com pouca carga ou ociosos.
A partir dessas observaes podem ser sintetizadas quatro motivaes em que este
trabalho se baseia: (1) as aplicaes esto cada vez mais dependentes de dados, (2) a memria
um recurso lento, (3) o thrashing pode ser desastroso e (4) o mau gerenciamento de memria
afeta o negativamente o desempenho dos sistemas paralelos.

2.6 Uso de informaes no escalonamento


A eficincia do escalonamento depende da qualidade das informaes disponveis no
momento em que as decises devem ser tomadas para a atribuio dos processos aos
elementos de processamento. Diversas informaes podem influenciar na deciso de
escalonamento, entre elas est a quantidade de carga de trabalho presente na plataforma
computacional (Souza, 2000).
Freqentemente tambm se desejam obter informaes sobre as aplicaes que sero
executadas na plataforma. Isso inclui descobrir atravs de observaes de comportamento
quais so os recursos (memria, CPU, disco, etc.) mais utilizados pela aplicao durante sua
execuo. Por conseguinte, possvel saber quais recursos tm maior influncia sobre o

18

desempenho dessa aplicao. Quando se conhece a classe das aplicaes que sero
executadas, podem-se utilizar polticas de escalonamento destinadas a essa classe. Essas
polticas so mais especficas e geralmente dependem de menos tipos de informaes
adicionais. Por outro lado, quando se conhece pouco sobre as aplicaes, as polticas
utilizadas devem ser mais genricas e, conseqentemente, dotadas de informaes mais
abrangentes. Em resumo, quanto mais conhecimento se tem sobre o ambiente, mais precisa
pode ser a deciso de escalonamento tomada. O nvel de informao e a forma como essas
informaes so utilizadas dependem das caractersticas dos algoritmos de escalonamento.
Geralmente, algoritmos que realizam escalonamento dinmico (os que tomam decises
no momento em que as aplicaes so submetidas ao sistema) trabalham com menos
informaes porque tm menos tempo para calcular o escalonamento e as aplicaes chegam
em intervalos no previsveis. Por outro lado, as tcnicas de escalonamento esttico usam um
conjunto fixo de aplicaes, um conjunto fixo de mquinas e um conjunto fixo de atributos
das mquinas e das aplicaes para gerar um escalonamento fixo. Como as decises so feitas
antes da execuo (off-line) e so destinadas a ambientes de produo cujas caractersticas no
mudam, o algoritmo pode levar mais tempo combinando vrias informaes e gerando um
escalonamento quase timo (Ali et al., 2005). Existem heursticas de escalonamento esttico
que utilizam informaes sobre o tempo de execuo de todas as aplicaes em todas as
mquinas disponveis para definir a seqncia de execuo de um conjunto de tarefas (Braun
et al., 2001).
Os escalonadores dinmicos podem aprender novos fatos que podem ser usados
posteriormente para melhorar o escalonamento. Isso obtido usando-se o feedback fornecido
pelas prprias aplicaes e atravs de observaes da plataforma. A utilizao do tempo de
execuo de tarefas terminadas pode ajudar na previso do tempo de execuo quando tarefas
semelhantes (p.ex. pertencentes mesma aplicao) forem submetidas. Na literatura podem
ser encontrados alguns trabalhos que exploram as informaes obtidas em execues passadas

19

para prever o tempo de execuo de aplicaes submetidas posteriormente (Harchol-Balter e


Downey, 1997; Senger, 2004). Os algoritmos desenvolvidos nesses trabalhos utilizam um
conjunto de atributos das aplicaes para calcular a similaridade entre aplicaes paralelas.
Esses atributos incluem: o identificador do arquivo executvel da aplicao, argumentos da
aplicao, usurio que fez a submisso, grupo do usurio e o nmero de elementos de
processamento requisitados (Smith et al., 1999; Senger, 2004). Para prever o tempo de
execuo das tarefas os autores empregam mecanismos como mdias, regresso linear,
algoritmos genticos e solues de aprendizado baseado em instncias (Senger, 2004).

2.7 ndices de carga


Um ndice de carga uma mtrica destinada a quantificar a condio de carga de uma
mquina num determinado instante, ou num passado recente, dependendo da freqncia de
atualizao da informao. O ndice geralmente um valor numrico iniciado em zero
indicando que a mquina est ociosa, e que tenha seu valor aumentado medida que a carga
da mquina aumente, passando por nveis considerados normais, at indicar a situao onde
a mquina deve ser considerada sobrecarregada, no podendo mais aceitar processos para
execuo (Ferrari e Zhou, 1987). O principal objetivo do ndice poder prever a carga do
processador num futuro prximo, fornecendo assim uma expectativa do desempenho de uma
aplicao aps o escalonamento. Geralmente, a mquina com o menor ndice de carga tem o
maior potencial para executar uma tarefa mais rapidamente.
Um ndice de carga ainda deve possuir outras caractersticas importantes: (1) deve ter
uma relao direta com a mtrica utilizada para medir o desempenho das aplicaes, para que
seja possvel sintonizar o ndice a partir das observaes do desempenho da aplicao; (2)
deve gerar pouca sobrecarga na coleta das informaes e no clculo do ndice, para permitir
que medies de carga mais freqentes sejam feitas, aumentando sua preciso; (3) no deve
ser afetado com intensidade por flutuaes nas medies instantneas de carga; (4) deve servir
para comparar a carga de diferentes mquinas, especialmente em sistemas heterogneos

20

(Ferrari e Zhou, 1987; Mehra e Wah, 1997). A conformidade do ndice com essas
caractersticas depende de vrios fatores, entre eles, a quantidade e o tipo das informaes que
o ndice incorpora e a forma como o ndice calculado.
Basicamente, os ndices de carga podem ser classificados em dois grupos: simples ou
compostos. Os ndices simples so mais especficos e so baseados em apenas um valor, que
reflete a carga de um nico recurso (por exemplo, CPU). Esses ndices so mais indicados
para casos onde o desempenho da aplicao depende apenas de um recurso e sabe-se qual
esse recurso. Por exemplo, o tamanho da fila da CPU um ndice simples que poderia ser
usado no escalonamento de aplicaes CPU-bound. Os ndices compostos geralmente so
mais genricos e visam representar a carga de mais de um recurso combinando as medies
de carga dos recursos em um nico valor. Esse tipo de ndice pode ser til quando no h
conhecimento suficiente sobre a aplicao para determinar qual recurso afeta mais o seu
desempenho, ou quando se sabe que a aplicao depende de mais de um recurso (por
exemplo, CPU e memria). Tambm pode haver ndices compostos que combinam diferentes
informaes sobre o mesmo recurso; isso ocorre quando as informaes so complementares
e a combinao pode apresentar uma estimativa melhor do que apenas uma informao. Uma
vantagem de usar ndices simples a relativa simplicidade de obt-los e a pequena sobrecarga
gerada. Em contrapartida, um ndice composto pode oferecer informaes mais completas que
podem se transformar em mais desempenho para certos tipos de aplicaes.
O problema da escolha de mtricas de desempenho para a formao de ndices
compostos um campo de estudo interessante e ainda no muito explorado. Tipicamente,
num sistema operacional do tipo Unix, diversas variveis, que podem indicar a situao da
carga de vrios recursos, so fornecidas pelo prprio sistema operacional. Partindo do
princpio de que todas essas mtricas j esto prontas para uso, pode-se querer idealizar a
composio de um ndice extremamente genrico composto de todas as mtricas encontradas.
No entanto, essa pode no ser a melhor soluo. Alguns fatores fazem com que certas

21

variveis se tornem inadequadas para a incluso em um ndice de carga, como: a sobrecarga


associada medio. Assim, deve-se escolher um pequeno conjunto de mtricas que no
estejam sujeitas aos fatores citados e que sejam representativas o suficiente para refletir a
carga dos recursos para identificar as situaes de sobrecarga.
A dificuldade em se calcular um ndice de carga determinada por vrios fatores. Os
principais pontos que devem ser considerados so: (1) a unidade utilizada para medir a carga
de diferentes recursos, que determina se os valores podem ser comparados entre si, e (2) a
existncia de limite superior ou inferior para essa carga, que serve para determinar o nvel no
qual um recurso pode ser considerado sobrecarregado. Os valores da carga de muitos recursos
no so medidos na mesma unidade (Mehra e Wah, 1997). A utilizao da CPU medida em
ciclos; a fila da CPU dada por um nmero de processos; a utilizao da memria medida
em Megabytes; os recursos de comunicao podem ser medidos em disponibilidade de largura
de banda, quando se deseja medir sua utilizao, ou em Bytes transferidos ou nmero de
pacotes quando se deseja medir sua atividade; o disco tem sua atividade medida em Bytes
transferidos ou pginas transferidas. Essa disparidade de unidades faz com que as cargas
desses recursos sejam incomparveis entre si, tornando os clculos necessrios mais
complicados do que simples mdias, principalmente quando os recursos so heterogneos.
No caso de alguns dos recursos citados a determinao de um limite superior uma tarefa
fcil. Por exemplo, a quantidade de memria disponvel finita e esse recurso pode ser
considerado sobrecarregado assim que toda a memria esteja ocupada. Por outro lado,
determinar quando a CPU est sobrecarregada, baseando-se em sua fila uma tarefa difcil e
pode requerer uma anlise baseada em testes e observaes sobre o comportamento do
sistema.
Informaes sobre a heterogeneidade configuracional da plataforma tambm podem ser
incorporadas aos ndices de carga. A abordagem mais comumente empregada para medir os
nveis de heterogeneidade a utilizao de informaes sobre a capacidade dos recursos das

22

mquinas (por exemplo: velocidade do processador, tamanho da memria). Essas informaes


so obtidas diretamente a partir de informaes sobre o hardware da mquina, ou podem ser
medidas por benchmarks (programas destinados a quantificar a capacidade dos recursos
atravs de testes especficos). Uma forma de se utilizar esse tipo de avaliao de
heterogeneidade atravs da atribuio de um valor para cada mquina, que reflita os
resultados dos testes e medies realizadas. Atravs desse valor possvel comparar
quantitativamente a capacidade das mquinas. Para proporcionar decises de escalonamento
que reflitam a heterogeneidade, o valor de cada mquina pode ser usado para normalizar o
ndice de carga, isto , as mquinas de potncia computacional inferior tm seus ndices
rebaixados, enquanto que com as melhores mquinas ocorre o contrrio. Um possvel efeito
dessa abordagem que a poltica de escalonamento pode evitar a atribuio de processos s
mquinas inferiores, mesmo que estas estejam ociosas, enquanto as mquinas superiores
tenham condies de tratar os processos. Os ndices que combinam informaes de carga com
informaes de heterogeneidade so conhecidos como ndices de desempenho (Branco,
2004).
2.7.1 Exemplos de ndices de Carga
A literatura estudada apresenta diversos exemplos de informaes utilizadas em ndices
de carga, tanto simples como compostos. Alguns dos primeiros estudos sobre ndices de carga
foram feitos por Ferrari e Zhou (1987) e por Kunz (1991). Nesses dois estudos os autores
investigaram, atravs de simulaes ou execues reais, o impacto da utilizao de diferentes
informaes na distribuio de processos em plataformas homogneas. Ambos os estudos
apresentam concluses semelhantes, afirmando que a melhor informao de carga investigada
a fila do processador (nmero de processos rodando) e que os ganhos obtidos com o uso de
ndices compostos eram insignificantes. Para formar os ndices compostos os autores
utilizaram informaes como a quantidade de memria livre e atividade de I/O.

23

Essa ausncia de ganhos expressivos nos estudos mais antigos deve-se ao fato de que no
final dos anos 80 e no incio dos anos 90 as aplicaes eram predominantemente CPU-bound.
Como j mencionado anteriormente, esse panorama no condiz com a realidade atual dos
sistemas e das aplicaes.
Alguns trabalhos relativamente recentes, que apresentam estudos sobre ndices de carga
voltados memria, podem ser encontrados na literatura. Um exemplo relevante o estudo
feito por Xiao et al. (2002). Nesse estudo os autores utilizam apenas duas informaes para
compor o ndice de carga utilizado para basear as decises de escalonamento: a fila do
processador e a quantidade de memria livre. O objetivo do algoritmo, com a utilizao
dessas duas informaes, minimizar os tempos de ociosidade do processador e o nmero de
ausncias de pginas ocorridas. Duas heursticas foram criadas, uma destinada computao
de alto desempenho (high-performance computing) e outra destinada computao de alta
vazo (high-throughput computing). A primeira heurstica impede que um n receba
processos quando a memria est sobrecarregada, sendo que nesse caso os processos so
enviados a outros ns ou colocados em uma fila de espera. Nas situaes onde isso acontece,
o valor da fila do processador agressivamente ajustado para um valor mximo, que indica
sobrecarga total do sistema. Por definio, a computao de alta vazo enfatiza que os
recursos devem ser bem gerenciados para que o maior nmero possvel de usurios possa ser
atendido. Portanto, a heurstica destinada a esse tipo de computao no pode impedir que os
processos sejam executados quando a memria est sobrecarregada. Nesse caso o ajuste do
ndice de carga feito proporcionalmente utilizao da memria. Especificamente, quando a
quantidade de memria utilizada k vezes maior que a quantidade disponvel, o valor da fila
do processador aumenta k vezes. O aumento desse ndice de carga diminui as chances do n
ser escolhido para receber processos. Em ambas as heursticas todos os processos so
executados localmente (na mquina onde so gerados), enquanto o valor do ndice de carga
no superar um mximo estipulado. Quando esse valor ultrapassado a mquina remota

24

menos sobrecarregada escolhida para executar o processo. Neste trabalho pouca ateno
dada s informaes sobre os dispositivos de I/O. Algumas informaes sobre as atividades
de disco so utilizadas apenas na poltica de seleo do algoritmo desenvolvido. Os testes
feitos nesse estudo demonstraram ganhos significativos nas execues de diversas aplicaes,
inclusive em aplicaes I/O-bound. Apesar dos autores no terem incorporado ao ndice de
carga nenhuma informao especificamente relacionada aos dispositivos de I/O, os ganhos
obtidos com as aplicaes I/O-bound so justificados pelo fato de seu desempenho tambm
ser influenciado pelas ausncias de pgina, j que os buffers necessrios para as transferncias
de I/O competem pelo mesmo espao de memria que as aplicaes.
O trabalho de Amir et al. (2000) utiliza uma abordagem parecida com a apresentada por
Xiao et al. (2002). Informaes sobre a CPU e a memria so utilizadas para formar um nico
ndice, chamado pelos autores de custo. Nas simulaes realizadas presume-se que a
quantidade de memria que cada aplicao necessita conhecida a priori. Para escolher onde
escalonar um processo, o algoritmo estima qual seria o custo das mquinas aps receberem
aquele processo, e a mquina escolhida a que apresenta o menor custo estimado.
No sistema de compartilhamento de carga MOSIX (Barak e Braverman, 1998), foi
implementada uma poltica que monitora a quantidade de memria livre das mquinas e
realiza migraes de processos quando o nvel de memria livre fica abaixo de um mnimo
predefinido. Neste trabalho o nico ndice de carga utilizado a quantidade de memria livre.
No so considerados ndices compostos que levem em conta, por exemplo, a fila do
processador.
O trabalho de Mehra e Wah (1997) caracterizado por apresentar diversas propostas de
informaes de carga, que podem fazer parte de um ndice de carga composto. No entanto,
nem todas as informaes mencionadas foram efetivamente testadas em ndice de carga reais,
j que muitas no eram apropriadas para a utilizao no escalonamento. O sistema de
escalonamento utilizou quatro informaes: (1) o nmero de pginas livres de memria, (2) o

25

tempo gasto nos diferentes estados da CPU: ocioso, em programas de usurio, em funes do
SO, etc., (3) a quantidade de dados transferida em cada disco e (4) o nmero de pacotes
transferidos em cada interface de rede. A partir dessa escolha, os autores empregaram um
sistema de redes neurais para possibilitar um aprendizado automatizado das polticas de
escalonamento. O objetivo do sistema prever o tempo que um determinado processo leva
para terminar, caso seja colocado em um determinado processador. O sistema leva um tempo
considervel para aprender sobre o comportamento das aplicaes, efetuando medies desses
tempos em todas as mquinas do cluster. O sistema grava os padres de utilizao de recursos
apresentados pela aplicao e no momento da execuo ajusta os parmetros do ndice de
carga da forma que melhor se ajuste quela aplicao.
Outro trabalho que merece destaque neste contexto o de Ishii (2005). Esse estudo tem
como objetivo explorar as informaes relacionadas comunicao entre os processos das
aplicaes paralelas e utiliz-las na construo de uma poltica de escalonamento. A heurstica
desenvolvida faz uso de trs informaes para tomar as decises: (1) a carga da CPU, (2) a
carga da rede de comunicao e (3) a carga de comunicao gerada pela aplicao em
questo. Quando as duas cargas de comunicao apresentam valores baixos, a heurstica
considera apenas a carga da CPU para escalonar os processos. Em outra situao extrema, ou
seja, quando as duas cargas referentes comunicao apresentam valores muito altos, a
heurstica procura escalonar os processos de forma que eles no gerem mais sobrecarga rede
de comunicao. Uma forma de fazer isto colocando os processos que se comunicam muito
no mesmo processador.
O trabalho de Branco (2004) prope o desenvolvimento de novos modelos de ndices de
carga e ndices de desempenho atravs de modelagem estocstica. Uma das contribuies
desse estudo um modelo para quantificar o grau de heterogeneidade de uma plataforma
distribuda. Os clculos so feitos baseando-se em medidas da potncia computacional dos
elementos de processamento e do desvio padro existente entre essas medidas. O resultado

26

disto um ndice de desempenho que contempla a heterogeneidade da plataforma e sensvel


a qualquer mudana ocorrida (adio ou remoo de elementos de processamento). A partir
deste ndice possvel prever o impacto causado no grau de heterogeneidade da plataforma
devido a uma mudana. Nesse mesmo trabalho apresentado um estudo baseado em
simulao que testa a eficcia de um ndice composto por informaes de carga de quatro
recursos (CPU, memria, disco e rede), no escalonamento de aplicaes voltadas a um ou
mais recursos.

2.8 Consideraes finais


A rea de escalonamento de processos continua sendo muito estudada. Isso pode ser
constatado pela quantidade de propostas e novos algoritmos encontrados na literatura. Apesar
da literatura dessa rea estar sempre evoluindo, foi constatado que a maioria dos conceitos
bsicos, definidos h mais de uma dcada, ainda continua vlida, sendo que muitas
publicaes clssicas ainda continuam sendo muito referenciadas por trabalhos atuais. A
exposio de conceitos deste captulo teve por objetivo fornecer uma viso geral da rea de
escalonamento para facilitar o entendimento do restante do contedo desta dissertao.
Os algoritmos de escalonamento se propem a uma grande variedade de objetivos,
como: compartilhamento de carga, aumento da utilizao do processador, reduo do tempo
de execuo e balanceamento de carga. Para atingir esses objetivos os escalonadores,
freqentemente, precisam utilizar informaes sobre a carga de trabalho presente na
plataforma. Essas informaes so fornecidas pelos ndices de carga, que representam o
estado de carga de diferentes recursos das mquinas, como CPU, memria e disco.
O escalonamento auxiliado por ndices de carga tem se mostrado superior ao
escalonamento realizado sem informaes, o que refora a necessidade de se estudar ndices
de carga. Quando se tem conhecimento sobre as caractersticas das aplicaes o
escalonamento se torna ainda mais preciso. Apesar das aplicaes memory-intensive serem
muito comuns atualmente, pouca ateno foi dada ao estudo de ndices de carga voltados a

27

essas aplicaes. Este trabalho visa contribuir nesse sentido, fornecendo opes de ndices de
carga de memria. O prximo captulo apresenta os ndices de carga de memria identificados
no desenvolvimento deste trabalho.

3. ndices de carga relacionados ao uso e atividade


de memria

3.1 Consideraes iniciais


Para iniciar a busca por novos ndices de carga, dois requisitos bsicos foram definidos.
Primeiro, os ndices deveriam ser facilmente obtidos no sistema operacional Linux no nvel de
usurio e sem a necessidade de modificaes no cdigo do ncleo. Isso faria com que a
ferramenta de monitoramento desenvolvida para coletar esses ndices se tornasse mais flexvel
e fcil de instalar. O segundo requisito seria que as informaes representadas pelos ndices
refletissem direta ou indiretamente a utilizao ou a atividade da memria.
Foram identificadas 11 informaes de carga que satisfazem ambos os requisitos
bsicos acima. Para fins de organizao, foi atribudo um nmero (de 1 a 11) a cada ndice.
Por similaridade, as informaes foram organizadas em cinco categorias: (1) informaes
sobre a atividade do processador, (2) informaes sobre a utilizao da memria, (3)
informaes sobre a utilizao do espao de swap, (4) informaes sobre a atividade da
memria virtual e (5) ausncias de pgina.

3.2 Informao sobre a atividade do processador


Foi identificada uma informao relativa ao processador que pode refletir indiretamente
o estado de utilizao do subsistema de memria.

30

ndice 1. Processos bloqueados


No Linux h seis estados em que um processo pode estar em um determinado momento,
identificados pelas letras R, S, D, N, T e Z. O estado R (running) significa que o processo est
executando (consumindo a CPU) ou aguardando na fila do processador, pronto para executar.
Processos no estado S (sleeping) esto dormindo, o que significa que eles esto esperando
algum comando ou instruo que reinicie a execuo do processo. O estado D
(uninterruptible sleep) atribudo a processos que esto bloqueados, geralmente devido
espera de uma chamada de I/O. O estado N identifica processos que esto em baixa prioridade
(nice). Processos que esto sendo depurados entram no estado T (traced). Por fim, o estado Z
(zombie) indica um processo cujo pai morreu sem ter esperado o filho terminar e sem ter
avisado que no pretendia esperar.
O nmero de processos bloqueados (estado D) capaz de refletir o estado de utilizao
da memria indiretamente, j que em situaes de uso intenso, muitas operaes de I/O
podem ser necessrias para viabilizar as operaes de troca de pginas. A concorrncia, pelas
operaes de leitura e escrita em disco, pode fazer com que alguns processos sejam
bloqueados, fazendo-os entrar no estado D.

3.3 Informaes sobre a utilizao da memria


Os ndices de carga descritos a seguir fornecem informaes em termos de quantidade
de memria medida em diferentes situaes. O objetivo das informaes que refletem
quantidade mensurar precisamente os nveis de utilizao do espao de memria
disponvel, incluindo a memria principal e o swap. Os valores dessas informaes so dados
em Megabytes.
ndice 2. Memria ocupada
Corresponde quantidade total de memria principal em uso. Como o Linux fornece
apenas a informao sobre a quantidade de memria livre, ento para obter esse ndice

31

necessrio utilizar tambm a informao sobre a quantidade total de memria principal


disponvel no sistema.
ndice 3. Memria usada em caches e buffers
Esse ndice corresponde quantidade de Bytes usada pelo sistema operacional para
armazenar dados lidos do disco. O sistema operacional contabiliza, atravs dessas
informaes, as pginas usadas como buffers de escrita e leitura de I/O e o cache de pginas.
Os buffers de I/O, tambm chamados de buffer cache, so necessrios porque, no caso
de escritas de I/O, o SO no envia imediatamente para o disco os dados escritos pelas
aplicaes. Aqui o termo I/O refere-se apenas s operaes de leitura e escrita no disco
rgido. O acesso ao armazenamento externo mais eficiente quando uma quantidade grande
de dados escrita de uma s vez. Para permitir o acmulo de dados o SO mantm os dados na
memria principal at que seja vantajoso escrev-los no disco. Os buffers tambm so usados
para otimizar a transferncia de dados em operaes de leitura. Os dados costumam ser lidos
do disco em blocos de tamanho geralmente maior do que a poro que um programa precisa
em determinado momento. Os dados excedentes ficam armazenados nos buffers, j que h
uma grande chance de o programa requisitar um dado do mesmo bloco. Isso acontece devido
ao princpio da localidade espacial (Stallings, 1999).
O cache de pginas usado para armazenar programas executveis e fragmentos de
arquivos acessados recentemente do disco local ou de outro dispositivo de bloco. Depois que
so utilizados, esses dados ainda tm uma grande probabilidade de serem usados novamente
num futuro prximo. Isso se deve ao princpio da localidade temporal. Essa localidade define
que os fragmentos de dados lidos tendem a se agrupar no tempo (Stallings, 1999; Love 2004).
No Linux, os buffers de I/O e o cache de pginas so gerenciados em conjunto, atravs
das mesmas estruturas de dados (Love, 2004).

32

ndice 4. Memria ativa


Esse ndice equivale quantidade de Bytes ocupados por pginas que foram acessadas
recentemente, ou seja, a poro da memria usada que permanece ativa. No Linux, assim
como em diversos sistemas operacionais, a poltica de substituio de pginas baseada no
algoritmo LRU (Least Recently Used ou Menos Recentemente Usada). Cada pgina no
sistema possui um atributo que representa a sua idade (age). Periodicamente o SO percorre a
lista de pginas em uso para atualizar a idade das pginas. O sistema soma um valor constante
idade caso a pgina tenha sido acessada. Por outro lado, caso a pgina no tenha sido
acessada o valor da idade dividido por dois. Valores maiores do atributo idade representam
que a pgina foi acessada recentemente e desejvel mant-la na memria principal. Quando
o valor desse atributo chega a zero, significa que a pgina em questo no foi acessada por
vrios instantes em que o SO percorreu a lista de pginas. Nesse momento, a pgina movida
para uma lista de pginas inativas. Portanto, pginas ativas so aquelas cuja idade superior a
0.
ndice 5. Memria inativa
A quantidade de memria inativa corresponde poro da memria que est alocada,
mas no foi usada recentemente. Esse valor equivale aos Bytes ocupados pelas pginas que
foram enviadas para a lista de pginas inativas pelo sistema de substituio de pginas.
Quando h a necessidade de enviar uma ou mais pginas para o espao de swap devido
escassez de memria, o sistema utiliza a lista de pginas inativas para escolher a pgina que
ser retirada da memria. O Linux procura manter a lista de pginas inativas sempre
abastecida. A meta manter uma relao ideal de 2 para 1 entre o nmero de pginas ativas e
inativas, isto , para cada duas pginas ativas deve haver uma pgina inativa (Linux Kernel,
2005). Em situaes de utilizao intensa da memria o algoritmo de desativao de pginas
pode ter mais dificuldade para manter esta relao ideal. A cada varredura da lista de pginas
ativas o algoritmo iniciado com um nmero de pginas que devem ser desativadas. Cada vez

33

que o algoritmo percorre toda a lista sem que esse nmero seja atingido, ele aumenta sua
prioridade, que vai de 1 (alta) a 6 (baixa). Quanto mais alta a prioridade, maior a freqncia
que o algoritmo chamado. Isso faz com que, em altas prioridades, as pginas ativas sejam
desativadas com mais freqncia, j que sua idade chega a zero mais rapidamente. Assim,
mesmo em nveis de utilizao intensa da memria, a lista de pginas inativas no fica vazia
(Jiang e Zhang, 2005).

3.4 Informaes sobre o uso do espao de swap


ndice 6. Espao de swap usado
Esse ndice mede a quantidade total de espao de swap que est sendo usado por
pginas que tiveram que ser retiradas da memria principal, em situaes de falta de memria.
Esse valor inclui a quantidade de Bytes ocupados por pginas contidas no swap cache.
ndice 7. Swap cache
A rea de swap cache mantida pelo sistema operacional para reduzir o nmero de
acessos ao disco em situaes de ocorrncia de ausncias de pginas. Quando uma ausncia
maior2 ocorre, a pgina que transferida de volta para a memria no apagada do espao de
swap (no disco), a no ser quando o espao de swap livre se torna escasso. Se a mesma pgina
tiver que ser enviada novamente ao swap, o sistema verifica se a pgina foi modificada e no
a envia para o swap caso ela no tenha sido alterada enquanto esteve na memria principal.
Com isso h uma reduo do nmero de acessos ao disco. O swap cache tambm til no
caso de pginas que so compartilhadas por mais de um processo. As pginas compartilhadas,
que so escritas no swap, so mantidas em disco enquanto houver pelo menos um processo
usando a pgina (Gorman, 2004).

Ver seo 3.6 para detalhes sobre os tipos de ausncias de pginas.

34

3.5 Informaes sobre a atividade da memria virtual


Essa categoria agrupa informaes relacionadas s operaes realizadas no conjunto de
pginas que compem a memria virtual do sistema. Essas mtricas mensuram a atividade de
utilizao do sistema de gerenciamento de pginas. O monitoramento de informaes de
atividade visa capturar informaes que reflitam o dinamismo das operaes de memria
realizadas que permitem observar comportamentos que no so possveis de obter quando se
consideram apenas mtricas que medem espao.
ndice 8. Page stealing
A atividade de page stealing ocorre quando o kernel retira as pginas de caches e
buffers a fim de us-las em outro propsito. Esse ndice medido em nmero de pginas por
segundo.
ndice 9. Pginas alocadas
Esse ndice mede a atividade do sistema de alocao de pginas, isto , a quantidade de
novas alocaes feitas por segundo para satisfazer a demanda dos programas.

3.6 Ausncias de pgina


Quando um processo tenta acessar uma pgina alocada por ele, mas o endereo fsico da
pgina no pode ser obtido diretamente da tabela de pginas do processo, ocorre uma ausncia
de pgina (page fault). H dois tipos de ausncias de pginas: (1) ausncias menores e (2)
ausncias maiores.
ndice 10. Ausncias menores
As ausncias menores (minor faults) so ausncias de pgina que no requerem acesso
ao disco. Diferentes motivos podem levar a essa situao. O primeiro motivo refere-se ao
primeiro acesso a uma pgina alocada. Quando o Linux aloca uma rea de memria para uma
aplicao, os endereos das pginas alocadas no so imediatamente mapeados na tabela de
pginas do processo. Quando o processo acessa uma pgina pela primeira vez, ainda no h

35

traduo para o endereo requisitado, por isso uma ausncia de pgina gerada. Contudo,
essa ausncia pode ser resolvida sem a necessidade de acesso ao disco, gerando, portanto,
uma ausncia menor. A ao que o sistema operacional toma nesse caso simplesmente
preencher o contedo da pgina requisitada com zeros e apresentar para a tabela de pginas do
processo o endereo da pgina na memria. A partir desse momento, o processo pode ler e
escrever na pgina normalmente (Red Hat, 2003b; Cockcroft, 2005).
A outra situao em que ausncias menores ocorrem devido ao sistema de substituio
de pginas. O valor de idade da pgina, definido pela poltica LRU, reflete quo desejvel
manter aquela pgina na memria principal. As pginas inativas so as melhores candidatas
para serem substitudas caso haja falta de memria principal, j que tm menores chances de
serem acessadas num futuro prximo. Quando uma pgina marcada para substituio, o
mapeamento (endereo virtual para endereo fsico) na tabela de pginas do processo que
referenciava a pgina desfeito. Isso feito porque o espao ocupado pela pgina pode ser
utilizado para outro propsito a qualquer momento. Quando um processo tenta acessar uma
pgina que foi marcada para substituio, mas ainda no foi realmente enviada para o espao
de swap, o endereo volta a ser mapeado na tabela do processo, a pgina movida para a lista
de pginas ativas e uma ausncia menor contabilizada (Riel, 2001; Murray e Horman,
2004).
ndice 11. Ausncias maiores
Ao contrrio das ausncias menores, uma ausncia maior (major fault) ocorre sempre
que uma ou mais pginas que residem no espao de swap devem ser lidas do disco para a
memria. Isso significa que a pgina havia sido reutilizada e no se encontrava mais na
memria principal.

3.7 Consideraes finais


A Tabela 3.1 apresenta um resumo dos ndices pesquisados contendo a identificao do
ndice, a unidade utilizada e uma informao da orientao do valor desse ndice. A

36

orientao do ndice define se um valor maior ou menor que indica que a carga aumenta ou
diminui. A orientao pode assumir trs valores: (0) indefinido, (1) quanto maior, mais carga
ou (2) quanto menor, mais carga. Por exemplo, quanto maior a quantidade de processos
bloqueados, mais carregada a mquina pode ser considerada. Por outro lado, quanto menor a
quantidade de memria livre, mais carregada a mquina fica.
Tabela 3.1 - Resumo dos ndices pesquisados.
Identificao

Nome

Unidade

Orientao

ndice 1

Processos bloqueados

Nmero de processos

ndice 2

Memria ocupada

MB

ndice 3

Cache e buffers

MB

ndice 4

Memria ativa

MB

ndice 5

Memria inativa

MB

ndice 6

Swap usado

MB

ndice 7

Swap cache

MB

ndice 8

Page stealing

Pginas por segundo

ndice 9

Pginas alocadas

Pginas por segundo

ndice 10

Ausncias Menores

Ausncias por segundo

ndice 11

Ausncias Maiores

Ausncias por segundo

O prximo captulo explica como esses ndices podem ser obtidos no sistema
operacional Linux e descreve o desenvolvimento de uma ferramenta de monitoramento que
coleta os ndices e os disponibiliza para polticas de escalonamento.

4. Monitoramento de ndices de carga

4.1 Consideraes iniciais


A obteno de ndices de carga depende da forma como o sistema operacional
disponibiliza as informaes sobre o sistema para os usurios. desejvel que haja uma
maneira fcil de obter as informaes e com pouca sobrecarga. Isso pode ser obtido no Linux
atravs do pseudo-sistema de arquivos /proc, que fornece uma interface amigvel para
obteno de estatsticas diversas. A ferramenta de monitoramento desenvolvida neste trabalho
utiliza o /proc para obteno de todos os ndices de carga pesquisados. O objetivo inicial
dessa ferramenta foi auxiliar os estudos realizados neste trabalho, mas foram inseridas
funcionalidades para torn-la capaz de operar como provedora de informaes de carga para
algoritmos de escalonamento de processos.
Este captulo trata das questes relacionadas ao monitoramento de informaes de carga
no sistema operacional Linux. O diretrio /proc descrito, dando nfase obteno dos
ndices pesquisados neste trabalho. Em seguida apresentada uma descrio da ferramenta de
monitoramento desenvolvida. Uma breve comparao com outros sistemas operacionais
tambm mostrada.

4.2 Coleta de informaes do diretrio /proc


O pseudo-sistema de arquivos /proc funciona como uma interface para as estruturas de
dados internas do sistema operacional. Ele por ser usado tanto para coletar informaes sobre

38

o sistema como para alterar parmetros do SO em tempo de execuo. Este trabalho faz uso
da primeira funcionalidade para coletar estatsticas sobre o comportamento do sistema de
gerenciamento de memria. O diretrio /proc considerado um pseudo-sistema de arquivos
porque no est armazenado em mdia fixa. Todo o seu contedo fica armazenado na
memria principal, mas pode ser acessado como arquivos comuns.
O diretrio /proc contm um subdiretrio para cada processo residente no sistema,
nomeado segundo o PID (process identification) do processo. Alm disso, podem ser
encontrados diversos arquivos e diretrios que representam informaes do sistema como um
todo. A Tabela 4.1 apresenta o nome e a descrio desses arquivos e diretrios. Nem todas as
entradas listadas nessa tabela estaro presentes em todos os sistemas. Isso depende da verso e
da configurao do ncleo e da arquitetura da mquina. As informaes dessa tabela
correspondem verso 2.6 do ncleo instalado em uma mquina com arquitetura x86.
Tabela 4.1 Arquivos do diretrio /proc que contm informaes do sistema como um
todo.
Nome

Contedo

acpi

Configuraes de gerenciamento de energia

asound

Configuraes das placas de som

buddyinfo

Nveis de alocao de memria (normal, DMA, memria alta).

bus

Diretrio com informaes especficas sobre os barramentos

cmdline

A linha de comando usada para iniciar o ncleo

cpuinfo

Informaes sobre o processador (arquitetura, freqncia, fabricante, etc)

crypto

Configuraes de segurana criptogrfica

devices

Dispositivos disponveis (de bloco e de caracteres)

dma

Canais DMA (Direct Memory Access) usados

driver

Informaes sobre os drivers de dispositivos instalados

execdomains

Relativo segurana e suporte a formatos binrios de outros sistemas

39

Nome

Contedo

filesystems

Sistemas de arquivos suportados

fs

Parmetro do sistema de arquivos

ide

Diretrio contendo informaes sobre o subsistema IDE (Integrated Drive


Electronics)

interrupts

Registra o nmero de interrupes por IRQ (Interrupt Request)

iomem

Mapeamento dos endereos de memria associados a dispositivos fsicos

ioports

Listagem de endereos associados a portas de comunicaes

irq

Diretrio de mscaras de IRQ

ksyms

Smbolos usados por mdulos para linkedio dinmica de cdigo do


ncleo

kmsg

Registro de mensagem de log geradas pelo ncleo

loadavg

Mdia da carga do processador nos ltimos 1, 5 e 10 minutos

locks

Mostra os arquivos travados pelo ncleo

meminfo

Mostra vrias informaes relativas ao uso da memria

modules

Lista de mdulos carregados pelo ncleo

mounts

Lista de todas as montagens ativas

net

Diretrio com informaes sobre a rede

partitions

Detalhes das parties de disco (tamanho, nmero de blocos, etc)

pci

Lista de todos os dispositivos PCI (Peripheral Component Interconnect)


em uso

slabinfo

Utilizao de memria no nvel slab (rea reservada ao ncleo)

stat

Estatsticas gerais sobre o sistema (utilizao da CPU, atividade de disco)

swaps

Medio do espao de swap utilizado

40

Nome

Contedo

sys

Diretrio onde podem ser feitas modificaes em parmetros do ncleo

tty

Drivers de terminal

uptime

Informaes sobre h quanto tempo o sistema est ligado

version

Verso da distribuio, ncleo e gcc (GNU C Compiler)

vmstat

Informaes sobre atividade da memria virtual (alocao, ausncias, etc)

O diretrio /proc largamente utilizado por diversos utilitrios de monitoramento


disponveis para o Linux, como o top, ps e free. O top um utilitrio que monitora em tempo
real uma grande diversidade de estatsticas sobre o sistema como um todo e de cada processo
separadamente. As informaes fornecidas por ele so retiradas de arquivos como meminfo,
stat, loadavg, uptime e dos diretrios individuais dos processos rodando.
Todos os ndices de carga pesquisados neste trabalho foram obtidos a partir de arquivos
que contm informaes do sistema como um todo. Os arquivos contidos nos diretrios de
cada processo no foram utilizados. Mais especificamente, foram utilizados os seguintes
arquivos: stat, meminfo e vmstat.
O arquivo /proc/stat contm informaes gerais sobre a atividade do sistema, sobretudo
sobre a atividade de processador. Por exemplo, a utilizao do processador em diversos
modos (sistema, usurio, ocioso, etc) pode ser obtida para cada processador do sistema. A
Figura 4.1 mostra um exemplo do contedo desse arquivo. Algumas linhas foram suprimidas
por serem muito longas e no representarem informaes teis para este trabalho.
O ndice 1, que contabiliza os processos bloqueados est disponvel a partir do atributo
procs_blocked do arquivo /proc/stat, que est destacado em negrito na Figura 4.1.
O atributo procs_running fornece a quantidade de processos prontos; esse ndice no foi
includo na lista dos ndices pesquisados, mas utilizado em comparaes com outros ndices.

41

william@escrivao:~$ cat
CPU 220 236 245 161347
cpu0 220 236 245 161347
intr 415799 407667 10 0
...
ctxt 140868
btime 1133036288
processes 4601
procs_running 1
procs_blocked 0

/proc/stat
1018 0 8
1018 0 8 0
0 0 0 3 0 4 1 0 0 110 0 40 0 5033 2931

Figura 4.1 - Contedo do arquivo /proc/stat.

william@escrivao:~$ cat /proc/meminfo


MemTotal:
514232 kB
MemFree:
426016 kB
Buffers:
4660 kB
Cached:
42800 kB
SwapCached:
0 kB
Active:
50680 kB
Inactive:
25136 kB
HighTotal:
0 kB
HighFree:
0 kB
LowTotal:
514232 kB
LowFree:
426016 kB
SwapTotal:
1084348 kB
SwapFree:
1084348 kB
Dirty:
128 kB
Writeback:
0 kB
Mapped:
44780 kB
Slab:
8356 kB
CommitLimit:
1341464 kB
Committed_AS:
81100 kB
PageTables:
660 kB
VmallocTotal:
507896 kB
VmallocUsed:
2320 kB
VmallocChunk:
505512 KB
Figura 4.2 - Contedo do arquivo /proc/meminfo

O arquivo /proc/meminfo fornece todas as informaes relativas ao uso de memria e


do espao de swap utilizadas na obteno dos ndices descritos nas sees 3.3 e 3.4. A Figura
4.2 mostra um exemplo do contedo do arquivo /proc/meminfo capturado de uma mquina
com 512 MB (524288 KB) de memria principal total. O valor da quantidade de memria
total (MemTotal) representa a quantidade disponvel para as aplicaes. O valor real
apresentado pelo Linux (514232 KB) um pouco menor do que a quantidade real de memria

42

fsica porque no contabiliza a poro reservada para armazenar o cdigo binrio do ncleo
do sistema operacional (Red Hat, 2003a).
O ndice 2 baseado em informaes retiradas do arquivo /proc/meminfo, onde os
atributos considerados so MemFree e MemTotal. O valor desse ndice corresponde
diferena entre a quantidade total memria (MemTotal) e a quantidade de memria livre
(MemFree). A soma dos atributos Buffers e Cached equivale ao ndice 3, que mede a
quantidade de memria usada em caches e buffers. O ndice 4, que representa a memria ativa
e o ndice 5, que mede a memria inativa so obtidos a partir dos atributos Active e
Inactive, respectivamente. O ndice 6, que mede a quantidade de swap usado obtido a
partir da diferena entre os atributos SwapTotal e SwapFree. O atributo SwapCached
usado para obter o ndice 7.
O arquivo /proc/vmstat fornece diversas informaes que contabilizam as
atividades do sistema de gerenciamento da memria virtual. Um exemplo do contedo desse
arquivo apresentado na Figura 4.3.
Os ndices de carga descritos nas sees 3.5 e 3.6 so obtidos a partir de atributos do
arquivo /proc/vmstat. Todos os atributos desse arquivo equivalem a uma quantidade
acumulada desde que o sistema foi reiniciado, portanto, para obter a taxa de operaes por
unidade de tempo deve ser calculada a diferena entre uma medio e a medio anterior. O
ndice 8, que mede a atividade de page stealing, equivale soma de trs atributos:
pgsteal_high, pgsteal_normal e pgsteal_dma. A atividade alocao de pginas,
representada pelo ndice 9, obtida a partir da soma dos atributos: pgalloc_high,
pgalloc_normal e pgalloc_dma. As ausncias de pginas tambm so obtidas do
arquivo /proc/vmstat. O ndice 10, que contabiliza as ausncias menores corresponde
diferena entre os atributos pgfault e pgmajfault. O atributo pgmajfault contabiliza as
ausncias maiores, representados pelo ndice 11.

43

william@escrivao:~/$ cat /proc/vmstat


nr_dirty 16
nr_writeback 0
nr_unstable 0
nr_page_table_pages 165
nr_mapped 11250
nr_slab 2207
pgpgin 50845
pgpgout 11200
pswpin 0
pswpout 0
pgalloc_high 0
pgalloc_normal 205839
pgalloc_dma 1
pgfree 310544
pgactivate 6297
pgdeactivate 0
pgfault 465327
pgmajfault 476
pgrefill_high 0
pgrefill_normal 0
pgrefill_dma 0
pgsteal_high 0
pgsteal_normal 0
pgsteal_dma 0
pgscan_kswapd_high 0
pgscan_kswapd_normal 0
pgscan_kswapd_dma 0
pgscan_direct_high 0
pgscan_direct_normal 0
pgscan_direct_dma 0
pginodesteal 0
slabs_scanned 0
kswapd_steal 0
kswapd_inodesteal 0
pageoutrun 0
allocstall 0
pgrotated 0
nr_bounce 0
Figura 4.3 - Contedo do arquivo /proc/vmstat

4.3 Implementao de uma ferramenta de gerenciamento de carga


Uma das contribuies deste trabalho o desenvolvimento de um mdulo de
gerenciamento de carga capaz de coletar todos os ndices de carga citados anteriormente.
Alm de auxiliar no monitoramento realizado (descrito na seo 5.2), esse mdulo pode
auxiliar polticas de escalonamento que necessitem de informaes de carga para tomar

44

decises. O mdulo fornece apenas os ndices de carga pesquisados neste trabalho, mas o seu
projeto foi realizado de forma a permitir a coleta de qualquer informao de carga fornecida
pelo Linux. Diversas funcionalidades foram adicionadas a fim de tornar esse mdulo o mais
flexvel e genrico possvel.
Esse mdulo possui uma forma de configurao que evita a recompilao do cdigo
quando se deseja alterar o ndice de carga usado ou ajustar parmetros relacionados aos
ndices. No momento da inicializao o programa l um arquivo texto contendo todas as
informaes necessrias para configurar o sistema. A Figura 4.4 mostra o exemplo do
contedo do arquivo de configurao do mdulo.
# ID | Nome | Ativo | Freqncia Atualizao | Mudana
EMA | Orientao
#
2
3
4
5
#
# Atividade do processador
1
proc_prontos
S
2.0
5
2
proc_bloqueados
N
2.0
10
#
# Informao sobre a memria principal
3
memoria_ocupada
S
2.0
5
4
cache_buffers
N
2.0
5
5
memoria_ativa
N
2.0
5
6
memoria_inativa
N
2.0
10
#
# Informao sobre o swap
7
swap_ocupado
N
2.0
10
8
swap_cache
N
2.0
10
#
# Estatsticas de memria virtual
9
page_stealing
N
2.0
5
10
alocacao_pag
N
2.0
5
11
ausencias_menores N
2.0
30
12
ausencias_maiores N
2.0
30

de estado | Perodo
6

10
5

1
1

30
30
30
30

1
2
1
2

10
10

1
0

10
10
10
10

1
1
1
1

Figura 4.4 Exemplo de contedo do arquivo de configurao do mdulo.

Cada linha do arquivo corresponde configurao de um ndice de carga disponvel


para uso, com exceo das linhas que comeam com o smbolo # consideradas como
comentrio. So usadas 7 colunas para representar os parmetros de cada ndice. As colunas 1
e 2 fornecem um nmero identificador e um nome para o ndice. As demais colunas so
usadas para fornecer as seguintes funcionalidades:

45

Ativao e desativao de ndices


Atravs da coluna 3 possvel ativar (letra S) ou desativar (letra N) a coleta do ndice.

Para evitar sobrecarga excessiva causada pelo mecanismo de monitoramento a leitura a partir
do /proc e os clculos necessrios so executados pelo mdulo apenas quando o ndice est
ativado. O sistema foi projetado para que a ativao e a desativao tambm possam ser feitas
em tempo de execuo, atravs do envio de um comando para o mdulo que ir chamar a
funo correspondente.

Ajuste da freqncia de atualizao


O valor da coluna 4 define o intervalo de tempo, em segundos, entre as atualizaes do

ndice. Um ndice atualizado mais freqentemente pode, potencialmente, fornecer


informaes mais precisas, mas a sobrecarga gerada seria maior. Pode haver ndices para os
quais intervalos maiores entre as atualizaes sejam suficientes para manter a preciso,
evitando assim uma sobrecarga desnecessria.

Mudana de estado
Uma poltica de escalonamento que esteja recebendo informaes de carga do mdulo

pode inform-lo que deseja receber um ndice apenas se o seu valor for alterado em uma
determinada porcentagem. Geralmente, mudanas muito pequenas no estado de um ndice no
fazem diferena na tomada de deciso da poltica, portando dispensvel que a poltica tome
conhecimento dessa mudana. O valor representado pela coluna 5 indica em qual
porcentagem o valor do ndice dever mudar para se considerar uma mudana de estado. Por
exemplo, se esse valor for definido como 20, o mdulo enviar o ndice para a poltica apenas
quando o valor coletado for 20% maior ou menor do que o valor enviado anteriormente. Se
essa porcentagem for definida como 0, o mdulo enviar o ndice aps cada coleta,
independente da mudana ocorrida.

46

Ajuste do perodo da mdia mvel exponencial


O mdulo calcula automaticamente uma mdia mvel exponencial que d maior peso

uma quantidade de medies definida na coluna 6 das linhas do arquivo de configurao. A


mdia mvel exponencial um mecanismo empregado para suavizar medies de valores que
podem apresentar valores de pico momentneos. Alm disso, ela permite levar em conta
valores de medies de um passado recente, que tendem a refletir a carga num futuro prximo
(Zhou et al., 1993). Os valores mais recentes ganham mais peso no resultado da mdia do que
os valores mais antigos. Como um dos principais objetivos dos ndices de carga poder
prever a carga da mquina no futuro, o uso da mdia mvel exponencial pode ser visto como
uma forma de adicionar qualidade na informao trazida pelos ndices de carga.
O espao de tempo passado considerado na mdia depende da freqncia de atualizao
do ndice. Por exemplo, se a freqncia for definida com 2 segundos e o perodo da mdia for
ajustado para 30, o valor da mdia ter influncia de valores de carga ocorridos nos ltimos
60 segundos. Caso se deseje obter valores instantneos, basta definir o valor do perodo como
1.
O valor da mdia mvel exponencial de um ndice no tempo t dado pela equao 1,
onde vt o valor instantneo no instante de tempo t e N a quantidade de medies passadas
que recebero um peso maior.
mmet = (vt mmet 1 )

2
+ mmet 1
1+ N

(1)

Definio da orientao do ndice


Como discutido na seo 3.7 cada ndice possui uma orientao, que pode assumir trs

valores: (0) indefinido, (1) quanto maior, mais carga ou (2) quanto menor, mais carga. Essa
informao foi includa no arquivo de configurao porque adiciona um significado til ao
ndice e pode ser necessria para definir como a poltica de escalonamento ir inserir o ndice

47

em um clculo. Esse atributo uma caracterstica da mtrica, portanto no deve ser


configurado de qualquer maneira.

4.4 Comparao com outros sistemas operacionais


Outros sistemas operacionais Unix-like, tais como Solaris e FreeBSD tambm so
dotados do sistema de arquivos /proc, mas ao contrrio do Linux ele no destinado a
fornecer estatsticas do sistema. Nesses sistemas ele funciona como uma interface de
programao atravs da qual possvel interagir com os processos do sistema
(Opensolaris.org, 2005). Originalmente o /proc foi projetado para ser uma interface de
comunicao com os processos. Outros sistemas operacionais fornecem algumas informaes
sobre o estado dos processos no /proc, mas informaes sobre o sistema como um todo no
esto disponveis. O aproveitamento desse sistema de arquivos para fornecer informaes do
sistema uma abordagem introduzida pelo Linux (Schrock, 2004).
Na maioria dos sistemas operacionais Unix-like, informaes sobre o sistema so
obtidas atravs do uso de APIs destinadas a este fim. Para os usurios essa tarefa facilitada
devido grande disponibilidade de utilitrios de monitoramento existentes que utilizam essas
APIs. Por exemplo, no Solaris possvel utilizar as ferramentas iostat, vmstat e netstat para
obter informaes sobre as atividades de disco, memria virtual e interfaces de rede,
respectivamente. O desenvolvimento de uma ferramenta de monitoramento em outros SOs
seria possvel atravs do processamento da sada de utilitrios de monitoramento j existentes.
Uma alternativa seria utilizar as APIs disponveis diretamente, contudo, durante o
desenvolvimento deste trabalho, no foram encontradas documentaes sobre essa
abordagem.

4.5 Consideraes finais


O desenvolvimento da ferramenta de monitoramento descrita nesse capitulo foi bastante
facilitado devido disponibilidade do pseudo-sistema de arquivos /proc do Linux. Essa forma

48

de interface permitiu que todas as informaes necessrias fossem coletadas como se arquivos
comuns estivessem sendo lidos. Essa vantagem especfica do Linux, j que em outros
sistemas operacionais Unix-like o diretrio /proc utilizado para outras finalidades.
A ferramenta foi projetada para permitir a coleta de 11 ndices de carga, mas outros
podero ser adicionados sem dificuldade. Alm de auxiliar nos experimentos realizados neste
trabalho, essa ferramenta pode servir como provedora de ndices de carga para polticas de
escalonamento de processos. Isso faz com que a ferramenta desenvolvida constitua uma das
contribuies deste trabalho.
O prximo captulo apresenta uma anlise do comportamento dos ndices pesquisados
que foi baseada num monitoramento realizado com o auxlio da ferramenta descrita neste
captulo.

5. Anlise de comportamento dos ndices de carga

5.1 Consideraes iniciais


A motivao para a realizao da anlise descrita neste captulo estudar o
comportamento dos ndices de carga pesquisados e entender como eles podem ser utilizados
para representar com preciso a carga de memria de uma mquina. Esse estudo tambm
permite avaliar a relao entre alguns dos ndices pesquisados.
Para tornar esta anlise possvel, foi realizado um monitoramento dos ndices frente a
uma carga de trabalho formada por aplicaes memory-intensive. Em seguida, o
comportamento de cada ndice foi analisado individualmente para entender como o valor do
ndice varia com o andamento da execuo da carga de trabalho. Esse entendimento permitiu
a descoberta de relaes importantes entre os ndices e a identificao das vantagens e
desvantagens de cada um. O monitoramento citado aqui foi realizado utilizando-se a
ferramenta descrita no captulo 4.
A seo 5.2 deste captulo descreve a carga de trabalho utilizada e a seo 5.3 apresenta
a anlise detalhada de cada ndice de carga feita a partir dos resultados do monitoramento.

5.2 Monitoramento da execuo de uma carga de trabalho


A carga de trabalho corresponde execuo de um conjunto de aplicaes em uma
nica mquina. A mquina utilizada nos testes possui a seguinte configurao: Processador

50

Intel Pentium 4 2.8 GHz (512KB cache L2), 512MB de memria DDR-SDRAM e HD 80GB
SATA 7200RPM (1.5GB/s).
Trs aplicaes que tm como caracterstica a necessidade de usar grandes quantidades
de memria foram escolhidas para compor a carga de trabalho. Foram usadas verses
seqenciais das aplicaes.
5.2.1 Descrio das aplicaes
5.2.1.1 BRAMS
O BRAMS (Brazilian Regional Atmospheric Modeling System) um modelo numrico
de previso de tempo e clima (BRAMS, 2005). Essa aplicao pode ser considerada CPUintensive, memory-intensive e I/O intensive. Foram criadas duas configuraes diferentes,
chamadas de BRAMS-1 e BRAMS-2. As dimenses espaciais e temporais do modelo a ser
simulado compem o diferencial das configuraes. Um espao do BRAMS possui quatro
dimenses, trs para representar a atmosfera e uma para representar o tempo. As dimenses
que definem o espao da atmosfera so: latitude, longitude e altitude. As faixas de latitude e
longitude, juntamente com um parmetro que representa a resoluo definem a grade do
modelo.
A primeira configurao possui uma grade de 70 pontos de latitude por 70 de longitude,
32 nveis de altitude e resoluo de 20 km. Na segunda configurao foram aumentados os
pontos de latitude e longitude que passaram de 70 para 100; as configuraes de altitude e
resoluo foram mantidas as mesmas. O tempo de simulao da primeira configurao
equivale a 2 horas de previso. Na segunda configurao o tempo foi definido como 1 hora,
para evitar um tempo de execuo muito longo. O objetivo da criao dessas duas
configuraes foi variar a quantidade de memria utilizada e no, necessariamente, o tempo
de execuo.

51

5.2.1.2 GAMESS
O GAMESS uma aplicao de qumica computacional, que nasceu da juno de vrios
outros programas, especialmente o HONDO, o qual implementa diferentes tcnicas de
qumica quntica (Schmidt et al., 1993). A principal atividade fornecida pelo GAMESS a
predio quantitativa dos fenmenos qumicos obtidos com mtodos ab-initio. Essa aplicao
possui caractersticas CPU-intensive, memory-intensive e I/O-intensive. A principal causa da
alta demanda computacional do GAMESS o clculo de integrais, as quais correspondem
operao mais comumente executada pela ferramenta (Matos et al., 2006).
Trs configuraes dessa aplicao foram criadas para a execuo dos experimentos.
Cada configurao equivale execuo da aplicao com uma molcula diferente: (1)
nonaceno, (2) decaceno e (3) ppv09. As configuraes receberam o nome de GAMESSNonaceno, GAMESS-Decaceno e GAMESS-ppv09, respectivamente. Essas configuraes
possuem diferenas tanto na quantidade de memria utilizada como no tempo de execuo.
5.2.1.3 PHOLD
O PHOLD (Fujimoto, 1990) um modelo sinttico de simulao de eventos discretos.
A implementao foi construda no ambiente de simulao Warped (Martin et al., 2003). O
PHOLD uma aplicao CPU-intensive e memory-intensive.
Esse modelo simula a comunicao entre objetos dispostos numa topologia do tipo
torus de duas dimenses. Para definir o nmero de objetos definem-se o nmero de linhas e
colunas do torus. Nas trs configuraes as dimenses definidas foram de 200 linhas e 200
colunas, totalizando 4000 objetos na simulao. A simulao consiste basicamente de uma
sucesso de trocas de mensagens entre os objetos. Cada objeto comunica-se com quatro
outros objetos, que so os seus vizinhos. Para cada mensagem que um objeto recebe, uma
nica mensagem enviada, avanando no tempo de simulao. A quantidade de mensagens

52

definida como parmetro dado no incio da simulao. A simulao termina quando o tempo
virtual atinge o tempo mximo definido.
As configuraes criadas para essa aplicao tiveram como objetivo variar o tempo de
execuo, mantendo as exigncias de memria iguais. As trs variaes do PHOLD so
identificadas como PHOLD-1000, PHOLD-1500 e PHOLD-2000, para as quais o tempo
virtual mximo foi definido, respectivamente como 1000, 1500 e 2000 unidades de tempo.
5.2.2 Submisso das aplicaes
Para facilitar os testes foi criado um executor automtico de tarefas que l as
informaes de submisso de um arquivo texto. Cada linha desse arquivo contm trs campos
separados por vrgulas, que so: (1) o intervalo de tempo entre as submisses, (2) o diretrio
da aplicao e (3) o comando com os parmetros da aplicao.
O executor capaz de verificar o estado de utilizao de memria da mquina antes de
submeter cada aplicao. O valor considerado para definir o estado de utilizao equivale
quantidade de memria principal ocupada mais a quantidade de swap usado. O objetivo dessa
funcionalidade controlar a carga do sistema durante a execuo para impedir estados em que
a mquina no suporte a carga e interrompa as aplicaes por falta de memria. Esse controle
permitiu definir quatro estados de carga em que a mquina foi mantida durante momentos
distintos da execuo. Nesses estados define-se um valor mximo permitido de quantidade de
memria usada. Novas submisses so realizadas somente se a quantidade de memria
utilizada est abaixo desse nvel.
Para calcular a porcentagem de utilizao de memria utilizaram-se quatro ndices de
carga do conjunto pesquisado. A quantidade de memria principal disponvel equivale
diferena entre o ndice 2 (memria ocupada) e o ndice 3 (memria utilizada em caches e
buffers). Essa combinao uma mtrica para medir com maior preciso a utilizao de
memria principal ocupada. A mesma ser discutida com mais detalhes na seo 5.3.1, na
qual introduzida a mtrica M1. A quantidade de swap utilizado equivale diferena entre o

53

ndice 6 (swap ocupado) e o ndice 7 (swap cache). Esse clculo tambm uma mtrica
elaborada para permitir medies mais precisas. Essa mtrica, chamada de M4, ser discutida
na seo 5.3.3.1. A memria total utilizada equivale soma de M1 e M4. O tamanho da
memria principal utilizado no clculo da porcentagem de 514232 KB, o que equivale ao
total de memria principal disponvel para as aplicaes. A utilizao dessas mtricas no
controle de carga do executor configura a abordagem incremental empregada nessa anlise.
Atravs do estudo do princpio de funcionamento de cada ndice, pde-se escolher ndices
promissores para criar um mecanismo de controle de carga mais preciso. Isso facilitou a
anlise dos demais ndices avaliados.
A carga completa corresponde execuo de 7 iteraes, com nveis de carga variados.
Cada iterao corresponde execuo de uma seqncia de 12 submisses, conforme
mostrado na Tabela 5.1. Dessa forma, a execuo completa equivale execuo de 84
instncias das aplicaes. O intervalo entre as submisses de cada aplicao foi definido
como 60 segundos. O mesmo intervalo foi definido entre uma iterao e outra. Esses
parmetros foram definidos com o objetivo de obter uma carga de trabalho significativa e com
um tempo total de execuo vivel.
Tabela 5.1 Seqncia de 12 instncias de aplicaes que forma uma iterao de
submisses
1. PHOLD-1500
2. BRAMS-2
3. PHOLD-1000
4. GAMESS-Nonaceno

5. PHOLD-2000

6. GAMESS-Decaceno

7. BRAMS-1

8. GAMESS-ppv09

9. BRAMS-2

10. BRAMS-2

11. GAMESS-Nonaceno

12. GAMESS-Nonaceno

Para a 1 e a 7 iteraes foi definido um estado de carga baixa; novas aplicaes eram
submetidas apenas se a quantidade de memria utilizada fosse menor que 50% da quantidade
de memria principal disponvel. No segundo estado de carga (2 e 6 iteraes), foi permitido
que novas aplicaes fossem submetidas enquanto o nvel de memria utilizada fosse menor

54

que 80% da quantidade de memria principal. Na 3 e 5 iteraes o uso mximo de memria


para possibilitar novas execues foi definido em 110% da memria principal disponvel,
permitindo, assim, o uso do espao de swap. Na iterao 5 foi definido que novas aplicaes
no poderiam ser submetidas caso o total da memria utilizada fosse equivalente a 150% da
quantidade de memria principal. A Tabela 5.2 resume a seqncia de iteraes definida para
a execuo, mostrando tambm a quantidade de memria (em MB) aproximada, acima da
qual novas aplicaes no poderiam ser submetidas. O total de memria principal disponvel
de 512MB.
As aplicaes que no puderam ser submetidas, devido ao estado de carga, foram
colocadas em uma fila de espera. No prximo intervalo para reavaliao da carga, caso
houvesse condies para execuo, essas aplicaes eram submetidas novamente. Durante a
execuo do teste a carga foi reavaliada a cada 60 segundos. Intervalos maiores que 60
segundos, poderiam fazer com que a mquina ficasse ociosa, caso as aplicaes que
estivessem rodando terminassem e outras no fossem submetidas. Por outro lado, reavaliaes
muito freqentes poderiam influenciar nas medies devido sobrecarga gerada na mquina.
Tabela 5.2 Descrio das 7 iteraes de variao de carga usadas durante o
monitoramento
Iterao

Percentual de Utilizao

Memria permitida

50%

256 MB

80%

410 MB

110%

563 MB

150%

768 MB

110%

563 MB

80%

410 MB

50%

256 MB

55

O objetivo principal de limitar o uso da memria em menos de 100% em algumas


iteraes foi evitar, sempre que possvel, o uso do espao de swap para avaliar o uso da
memria em estados de utilizao moderada ou intensa, mas sem saturao. Nos trechos em
que foi permitido atingir nveis de at 150% da quantidade memria principal, o objetivo foi
analisar o uso da memria num cenrio de saturao da memria principal e uso
moderado/intenso do espao de swap.
O objetivo no era garantir que o nvel de utilizao da memria no ultrapassasse os
nveis estabelecidos, j que as aplicaes submetidas quando os nveis estavam abaixo do
permitido poderiam causar uma maior diminuio na quantidade de memria ou swap livre.
Independentemente disso, esse controle mostrou-se efetivo em impedir situaes de
sobrecarga excessiva, que dificultariam uma anlise realista do comportamento dos ndices de
carga em situaes normais de uso. O segundo objetivo desse controle de carga foi avaliar o
comportamento dos ndices nas transies entre estados de baixa e alta utilizao de memria.
O Grfico 5.1 mostra os nveis reais de utilizao de memria durante todo o
monitoramento. Percebe-se que a porcentagem de utilizao ficou acima do nvel mximo
definido para novas submisses. Por exemplo, na 2 iterao, na qual o nvel mximo foi
definido como 80%, a utilizao ficou prxima de 90% durante um tempo considervel,
atingindo um pico prximo a 100% aproximadamente no instante de tempo 2000. Da mesma
forma, na 4 iterao, o valor total de memria usada chegou a exceder o tamanho da memria
principal em aproximadamente 170%.
Assim como o Grfico 5.1, a rea dos outros grficos mostrados nesse captulo est
subdivida em 7 partes, que representam o intervalo de durao das 7 interaes descritas na
Tabela 5.2.
O sistema de monitoramento foi configurado para coletar todos os ndices de carga
juntos em intervalos de 2 segundos. Esse intervalo freqente o bastante para detectar as

56

180%

50%

170%

80%

110%

150%

110%

80%

50%

160%

Porcentagem total de mem. usada

150%
140%
130%
120%
110%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0%

Tempo

Grfico 5.1 Porcentagem total de memria usada.

mudanas de carga da mquina. O tempo de durao total da execuo foi de 6 horas e 40


minutos, sendo realizadas, assim, 12000 medies para cada ndice.

5.3 Anlise dos resultados do monitoramento


Esta seo apresenta os resultados das medies feitas. Foram realizadas anlises
individuais do comportamento de cada ndice para identificar padres no comportamento dos
mesmos. Tambm, foram feitas comparaes entre dois ou mais ndices, com o objetivo de
identificar relaes relevantes entre eles. A comparao de mltiplos ndices especialmente
til, porque em certos casos, foi difcil obter concluses sobre o comportamento de um ndice
analisando os valores da medio isoladamente.
Os valores apresentados nesta seo correspondem media mvel exponencial (mme),
dando maior peso para 30 medies passadas, o que equivale aos valores coletados em 1
minuto.

57

5.3.1 Caracterizao da quantidade de memria ocupada


A anlise das mtricas de utilizao de memria visa encontrar quais informaes de
carga fornecem a informao mais precisa sobre a real utilizao da memria. No contexto
das aplicaes memory-intensive, possvel dizer que a utilizao de memria equivale
utilizao do sistema computacional como um todo, porque a memria o recurso que mais
afeta do desempenho dessas aplicaes. Isso refora a necessidade de representar com
preciso a carga desse recurso. Foi detectado que nem todas as mtricas coletadas fornecem
diretamente a informao que aparentam prover, tornando difcil a tarefa de caracterizar com
preciso a quantidade real de memria usada. Um exemplo simples disso o caso do ndice
fornecido pelo Linux para representar a quantidade de memria ocupada (ndice 2), que
apresenta valores que podem no indicar a quantidade real de memria principal ocupada. No
decorrer da maior parte do tempo de execuo esse ndice mostra que praticamente toda a
memria principal est ocupada.
O Grfico 5.2 mostra o comportamento do ndice 2 durante todo o monitoramento.

600000

50%

80%

110%

150%

110%

80%

50%

400000

300000

200000

100000

Tempo

Grfico 5.2 - Comportamento do ndice 2 (memria ocupada) durante o monitoramento.

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0
0

Memria ocupada (KB)

500000

58

Percebe-se que mesmo durante as iteraes onde a carga foi mantida baixa, o nvel de
memria livre aparenta estar sempre baixo. Esse comportamento ocorre devido ocupao de
memria pelo cache de pginas e pelos buffers de I/O. Como o SO no libera a memria
utilizada pelos caches e buffers, o espao ocupado no contabilizado como memria livre,
mesmo que nenhuma aplicao esteja usando ativamente as pginas referentes a esse espao.
Para entender este comportamento, a informao sobre a memria usada em caches e
buffers foi includa no monitoramento, atravs do ndice 3. O Grfico 5.3 ilustra o
comportamento do ndice 3 durante toda a execuo. Os valores so expressos na forma de
porcentagem de memria utilizada em caches e buffers. Percebe-se que nas iteraes em que
o limite mximo para novas submisses mantido em nveis menores (50% e 80%), o valor
do ndice 3 significativamente maior do que nas situaes de maior carga (110% e 150%).
Por exemplo, quando o nvel mximo est em 50%, o valor do ndice 3 chega 50% do total de
memria principal disponvel e nas interaes onde o nvel mximo foi mantido em 80% o
valor desse ndice ficou em torno de 30%. Por outro lado, na iterao de maior carga (150%)

100%

90%

50%

80%

110%

150%

110%

80%

50%

80%

70%

50%

40%

30%

20%

10%

Tempo

Grfico 5.3 - Porcentagem da memria principal ocupada por caches e buffers

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0%
0

Cache (%)

60%

59

os valores do ndice 3 equivalem a menos de 20% do total de memria principal.


A explicao desse comportamento remete ao funcionamento da poltica de substituio
de pginas. As pginas mantidas na memria como cache tm grandes chances de se tornarem
inativas porque podem no ser requisitadas novamente. Isso faz com que, em situaes de
aumento de uso de memria, essas pginas sejam as primeiras a serem liberadas. Da mesma
forma, as pginas ocupadas por buffers de I/O podem ser liberadas imediatamente quando h
falta de memria, j que os dados mantidos nos buffers de escrita podem ser enviados
definitivamente ao disco.
Uma hiptese a se considerar o uso como mtrica de memria utilizada de um valor
equivalente diferena entre o ndice 2 (memria ocupada) e o ndice 3 (caches e buffers).
Dessa forma, a poro de memria considerada realmente ocupada no contabilizaria a
memria ocupada por caches e buffers. Para analisar essa hiptese necessria uma

600000

50%

80%

110%

150%

110%

50%

80%

500000

Quantidade (KB)

400000

300000

200000

100000

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

Tempo
mem.ocupada

mem.ocupada-caches/buffers

Grfico 5.4 Comparao entre a quantidade de memria ocupada incluindo e excluindo as pginas de
caches e buffers.

60

comparao entre o comportamento dos ndices em questo. O Grfico 5.4 ilustra uma
comparao da memria ocupada (ndice 2) e a diferena entre esse ndice e o ndice 3,
descontando assim, a quantidade ocupada por caches e buffers. A comparao desse grfico
mostra que a diferena entre os ndices apresenta valores potencialmente mais precisos para
representar a memria realmente utilizada, j que possvel diferenciar os nveis de utilizao
de memria nas diferentes situaes monitoradas (iteraes). Essa diferenciao no
possvel atravs das informaes fornecidas apenas pelo ndice 2.
Atravs da anlise do comportamento do ndice 3, foi constatado que mesmo em
situaes de uso intenso da memria, o valor desse ndice no reduzido a zero. Isso acontece
porque h pginas do cache que so requisitadas pelos programas e se mantm ativas. Dessa
forma, no se pode contar que o SO ir liberar essas pginas, retirando-as do cache de
pginas. Pode-se concluir que, de fato, uma parte das pginas usadas em cache pode ser
considerada como memria livre. Por outro lado, a poro do cache de pginas que est ativa
deve ser considerada como memria ocupada. Ento, torna-se importante saber a quantidade
real de pginas que esto inativas.

500000

50%

80%

110%

150%

110%

80%

50%

450000

400000

300000

250000

200000

150000

100000

50000

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0
0

Quantidade (KB)

350000

Tempo
mem.inativa

Grfico 5.5 Comportamento dos ndices de memria ativa e inativa.

mem.ativa

61

O ndice 4 e o ndice 5, que fornecem informaes sobre memria ativa e inativa,


respectivamente, podem ser usados para fornecer informaes ainda mais precisas sobre a real
utilizao da memria. As pginas inativas formam o conjunto de pginas que sero
escolhidas para substituio, assim que houver falta de memria. O Grfico 5.5 mostra a
representao do comportamento desses ndices durante todo o monitoramento. Claramente,
os valores so complementares, j que uma diminuio no nmero de pginas ativas,
imediatamente causa um aumento no nmero de pginas inativas. Nota-se que a quantidade
de memria inativa significativamente menor nas iteraes de carga elevada, enquanto que a
memria ativa aumenta nessas iteraes.
A lista de pginas inativas formada tanto por algumas pginas usadas em
cache/buffers como por pginas alocadas pelos programas. Portanto, o ndice 5 pode suprir a
deficincia do ndice 3 (cache/buffers), que se mostra incapaz de informar quais pginas
podem realmente ser consideradas livres. O Grfico 5.6 mostra uma comparao de duas
mtricas elaboradas para representar a quantidade real de memria ativa. A primeira mtrica

600000

50%

80%

110%

150%

110%

50%

80%

500000

Quantidade (KB)

400000

300000

200000

100000

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

Tempo
M1

M2

Grfico 5.6 Comparao entre mtricas propostas para representar a quantidade de memria ocupada.

62

(M1), corresponde diferena entre a quantidade total de memria usada e a memria


utilizada em caches e buffers. A segunda mtrica (M2) corresponde diferena entre a
quantidade total memria usada e a memria inativa. O objetivo dessa mtrica mostrar o
comportamento dos ndices caso a memria inativa seja considerada como memria livre.
Tabela 5.3 Mdia das diferenas entre as mtricas M1 e M2 em todas as iteraes
Iterao
Diferena entre M1 e M2 (%)
1 (50%)

M1 15,84% menor que M2

2 (80%)

M1 2,5% menor que M2

3 (110%)

M1 8,5% maior que M2

4 (150%)

M1 7,13% maior que M2

5 (110%)

M1 4,01% maior que M2

6 (80%)

M1 0,33% maior que M2

7 (50%)

M1 10,23% menor que M2

Pode ser observado que as duas mtricas apresentam valores bastante similares em
alguns trechos do monitoramento e valores diferentes em outros trechos. A Tabela 5.3
apresenta as diferenas mdias, em porcentagem, dos valores das mtricas M1 e M2 em todas
as iteraes. Uma tendncia observada que nas iteraes 1 e 7 (50%) a mtrica M1 apresenta
valores inferiores a M2; na iterao 1, M1 15,84% menor do que M2 e na iterao 7 a
diferena de 10,23%. A mdia das diferenas consideravelmente maior na iterao 1
devido a um perodo de diferenas grandes que ocorre no incio da execuo das aplicaes.
Como a mquina utilizada nos testes havia sido reiniciada logo antes, a quantidade de
memria inativa ainda era pequena, mas os caches e buffers j continham pginas utilizadas
por aplicativos durante a inicializao do sistema. Nas primeiras 200 medies realizadas, a
mdia das diferenas de 58,71% e o valor mximo de 173,44%. Se essas 200 primeiras
medies forem ignoradas, a mdia passa de 15,84% para 8,25%. Nas iteraes 3, 4 e 5
(110% e 150%), a tendncia se inverte, sendo que os valores de M1 so superiores (at 8,5%

63

maior). Nas iteraes 2 e 6 (80%) no h uma tendncia bem definida; na iterao 2 a mdia
de M1 foi apenas 2,5% menor que a mdia de M1, enquanto que na iterao 6, a mtrica M1
foi em mdia 0,33% maior que M1.
Uma concluso sobre a caracterizao da memria ocupada que ambas as mtricas
estudadas (M1 e M2) podem fornecer uma boa estimativa sobre a quantidade real de memria
ocupada. Essas mtricas so mais teis do que o ndice 2 sozinho, que apresenta valores
sempre altos, mesmo em situaes onde a carga de memria foi mantida baixa. Pelo seu
princpio, a mtrica M2 aparenta ser mais precisa que M1 j que considera como livre as
pginas que realmente esto inativas. A mtrica M2 considera como livres as pginas usadas
por caches e buffers, que de fato so os principais alvos do SO quando so necessrias
pginas para alocao. Contudo, algumas pginas do cache podem permanecer ativas e no
vale a pena retir-las da memria porque uma nova leitura a partir do disco seria necessria.
Portanto, essas pginas no devem ser consideradas livres. Se essas pginas forem excludas
da memria principal, pode haver uma penalidade no desempenho caso elas tenham que ser
recarregadas a partir do disco.
5.3.2 Mtricas para deteco da saturao da memria principal
Quando o espao de memria principal disponvel est todo ocupado, o sistema
operacional utiliza o espao de swap para armazenar pginas. Quando isso acontece diz-se
que a memria principal est saturada. O termo saturao usado nesse sentido no decorrer
deste texto.
Alm de saber qual a quantidade real de memria ocupada, importante haver formas
de detectar como o sistema de gerenciamento de pginas est se comportando. Para isso,
foram estudadas algumas mtricas que tm por objetivo fornecer informaes que
possibilitem prever o que acontecer com a memria num futuro prximo. Essas mtricas
podem ser tanto derivadas de mtricas que medem quantidade como podem ser formadas
pelas mtricas que medem a atividade do sistema de gerenciamento de pginas.

64

5.3.2.1 Proporo entre memria ativa e inativa


O Linux tenta manter uma relao de 2 para 1 entre o nmero de pginas ativas (ndice
4) e inativas (ndice 5), ou seja, o nmero de pginas inativas idealmente deve equivaler
aproximadamente metade do nmero de pginas ativas. Foi observado que essa relao no
mantida na maioria das situaes, indicando uma incapacidade do sistema de gerenciamento
de memria de retomar a proporo ideal. Isso acontece quando o sistema tem dificuldades
em encontrar pginas para desativao (Linux Kernel, 2005).
O Grfico 5.7 apresenta o comportamento de uma mtrica (M3) que representa a
proporo entre o nmero de pginas ativas e inativas. Nas iteraes de carga elevada (110%
e 150%), pode ser observado que o valor da proporo permanece constantemente superior a
4. Durante as iteraes de carga moderada podem ser observados os valores mais prximos da
relao ideal (igual a 2). Nessas iteraes a maioria dos valores observados est entre 1,5 e 3,
com exceo de alguns momentos em que o nmero de pginas ativas at 100 vezes maior
que o nmero de pginas inativas. Contudo, esses valores altos acontecem com pouca

100

50%

80%

110%

150%

110%

80%

50%

90
80

60
50
40
30
20
10

Tempo
ativa/inativa

Grfico 5.7 Proporo entre os ndices de memria ativa e inativa.

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0
0

Proporo

70

65

freqncia, especificamente em momentos onde muitas pginas so alocadas diminuindo


rapidamente a quantidade de pginas inativas.
A partir dos dados analisados, pode-se concluir que a relao entre a quantidade de
pginas ativas e inativas til para detectar a carga de uma mquina. Se a proporo entre
essas duas mtricas estiver prxima de 2, pode ser considerado que o sistema operacional no
est tendo dificuldades em manter a proporo. Caso o valor permanea por um longo perodo
acima de 2, a mquina pode ser considerada sobrecarregada.
importante observar que, de qualquer modo, os picos muito altos da mtrica M3
indicam que decises erradas podem ser tomadas pela poltica de escalonamento, dependendo
de como esse ndice for usado por ela. Isso pode ser visto como uma desvantagem, mas que
pode desaparecer dependendo da execuo de tarefas de refinamento da anlise de
comportamento do ndice. Essas tarefas incluem: (1) determinar os limites acima dos quais os
picos poderiam ser ignorados e (2) determinar a partir de qual durao dos perodos em que a
carga permanece acima do nvel ideal, a mquina deve ser considerada sobrecarregada. Tendo
essas tarefas resolvidas, haveria uma forma de desprezar os picos e assim a mtrica M3
poderia determinar precisamente se o sistema est mantendo ou no a proporo ideal entre o
nmero de pginas ativas e inativas.
5.3.2.2 Utilizao das ausncias menores como alerta de saturao
Os resultados do monitoramento mostraram que o ndice de carga que mede a
quantidade de ausncias menores (ndice 10) capaz de fornecer informaes importantes
sobre a saturao da memria principal. O valor desse ndice aumenta significativamente
momentos antes do espao de swap comear a ser utilizado. A deteco do aumento no
nmero de ausncias menores funciona como um sistema de alerta, identificando o momento
em que possivelmente a memria principal ir se saturar e ausncias maiores podero ocorrer.
O Grfico 5.8 mostra uma comparao entre as ausncias menores e maiores num
trecho do monitoramento que compreende as medies de nmero 2000 a 4000. Nesse trecho

3500

140

3000

120

2500

100

2000

80

1500

60

1000

40

500

20

Tempo

menores

4000

3900

3800

3700

3600

3500

3400

3300

3200

3100

3000

2900

2800

2700

2600

2500

2400

2300

2200

2100

0
2000

Ausncias maiores

Ausncias menores

66

maiores

Grfico 5.8 Ausncias maiores vs. ausncias menores.

est includo o momento de transio da 2 para a 3 iterao (instante de tempo 3100), onde a
carga mxima permitida para novas submisses passou de 80% para 110%, fazendo com que
o espao de swap fosse utilizado.
Foi observado que o nvel considerado normal para o ndice 10 de aproximadamente
100 ausncias menores por segundo; durante todo o monitoramento dificilmente o valor desse
ndice est abaixo de 100. Esse grfico mostra que o valor do ndice 10 apresenta nveis fora
do normal algum tempo antes de o ndice que mede ausncias maiores (ndice 11) aumentar
significativamente. Os nveis de anormalidade das ausncias menores iniciam por volta do
tempo 3050 quando a taxa de ausncias por segundo atinge o valor 500. A partir desse
momento esse valor atinge picos de quase 3000 ausncias menores e mantm-se superior a
500 at a ocorrncia de ausncias maiores (saturao da memria principal). Essa saturao
claramente visvel no Grfico 5.8 quando, por volta do instante de tempo 3200, a quantidade
de ausncias maiores passa de 10 ausncias por segundo para 100 ausncias
aproximadamente. Logo em seguida, esse valor aumenta para aproximadamente 130
ausncias por segundo, permanecendo nesse patamar por mais algum tempo.
O Grfico 5.8 tambm mostra que alguns picos do ndice 11 ocorrem em outros trechos
do monitoramento, por exemplo, por volta dos instantes de tempo 2400 e 2700. Essas
ocorrncias de ausncias menores no esto associadas ocorrncia de ausncias maiores, ou
seja, a saturao da memria principal no ocorre logo aps esses picos. Foi observado que

67

esses picos possuem durao menor do que os que ocorrem nos perodos que antecedem a
saturao. Nesses perodos, ao contrrio dos perodos que antecedem a saturao, o nvel de
ausncias menores volta ao valor normal (em torno de 100) aps a ocorrncia do valor de
pico.
Nesse ponto, possvel fazer uma analogia com um semforo de trnsito, que possui
trs estados: sinal verde, sinal amarelo e sinal vermelho. Quando o nvel de carga de uma
mquina est baixo e ela capaz de receber novos processos para executar considera-se que o
sinal verde est aceso. Numa situao em que a carga da mquina est atingindo nveis altos e
h a possibilidade dela se tornar sobrecarregada, o sinal amarelo pode ser aceso, indicando
um estado em que as polticas devem escalonar processos levando em conta que a chance de
saturao maior. Por ltimo, o sinal vermelho deve ser aceso quando detectado que a
mquina est sobrecarregada; nesse estado, o desempenho de aplicaes escalonadas para
essa mquina pode ser afetado negativamente.
A deteco de uma quantidade de ausncias menores acima do normal funciona como
um sinal amarelo, indicando que h a possibilidade de ocorrer saturao da memria principal
num futuro prximo. A saturao da memria principal aps a ocorrncia de muitas ausncias
menores pode ou no ocorrer. Ou seja, nesse caso, aps o sinal amarelo, pode se seguir uma
transio para o sinal vermelho (deteco de ausncias maiores) ou pode se obter um estado
de sinal verde novamente.
Mesmo que a ocorrncia de um aumento do ndice 10 no implique em uma saturao
posterior da memria principal, a utilidade desse ndice com um sistema de alerta evidente.
A utilizao desse sistema pode auxiliar uma poltica de escalonamento que tenha por
objetivo evitar o uso do espao de swap. Durante o perodo em que a anormalidade estiver
ocorrendo, a poltica pode decidir no enviar nenhum processo adicional para a mquina em
questo. Assim, possivelmente a carga da mquina pode voltar ao normal mais rapidamente.
Caso a poltica permita que mais processos sejam escalonados para a mquina enquanto o

68

nvel de ausncias menores est alto (sinal amarelo aceso), haver uma chance maior de a
memria principal dessa maquina se saturar.
5.3.2.3 Utilizao das mtricas de atividade de memria virtual
Essas mtricas indicam os momentos em que h atividade intensa do sistema de
alocao de pginas. O ndice 8 (page stealing) e o ndice 9 (pginas alocadas) podem
fornecer informaes que indicam quando esses momentos acontecem. O Grfico 5.9 contm
uma representao do comportamento dos dois ndices. Pode-se perceber que as linhas desses
ndices esto praticamente sobrepostas. Isso significa que praticamente todas as novas
alocaes feitas foram supridas por pginas retiradas da rea de caches e buffers. Quando no
h memria livre disponvel, o Linux retira pginas de caches e buffers para satisfazer os
programas. Em situaes em que o sistema est constantemente ocupado, h uma chance
maior de o espao ocupado por caches e buffers ser grande, fazendo com que no haja
memria livre e as novas alocaes sejam satisfeitas por pginas retiradas deste espao.
O fato de esses dois ndices apresentarem valores muito similares permite que eles
sejam analisados como sendo iguais. Uma tendncia observada que a taxa de alocao
maior nas iteraes de menor carga (50% e 80%). Em alguns momentos dessas iteraes essa

14000

50%

80%

110%

150%

110%

80%

50%

12000

8000

6000

4000

2000

Tempo

page stealing

Grfico 5.9 - Atividade de alocao de pginas vs. atividade de page stealing.

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0
0

Pginas por segundo

10000

alocao.pag

69

taxa chega a 12500 pginas alocadas por segundo. Nas iteraes de carga de memria mais
elevada (110% e 150%), a taxa de alocao dificilmente passa de 4000 pginas por segundo.
Esses ndices podem servir para indicar momentos em que no recomendado iniciar
novos processos em uma determinada mquina. A utilidade desses ndices similar
utilidade do ndice 10 (ausncias menores), que pode indicar o momento que o sinal amarelo
deve ser aceso. Se o sistema estiver ocupado alocando pginas, o novo processo que chegar
pode ser penalizado porque provocar uma maior concorrncia. Pode ser recomendado que a
poltica de escalonamento aguarde o trmino das alocaes atuais e verifique se aps isso o
sistema se tornou saturado. Alm disso, um novo processo requisitando memria enquanto h
muitas alocaes sendo feitas, pode contribuir para que o sistema de memria se sature mais
rapidamente.
Os dados do monitoramento indicam que h um limite mximo de alocaes por
segundo que uma mquina capaz de tratar. A mquina utilizada nos testes deste trabalho
capaz de tratar a alocao de aproximadamente 12500 pginas por segundo, considerando os
valores da mdia mvel exponencial. O maior valor instantneo detectado foi de 22110
pginas. Caso o valor do ndice 9 esteja prximo do limite, o sistema pode entrar em um
perodo de alerta. Nesse caso, a poltica de escalonamento pode decidir no enviar novos
processos enquanto o sistema no volta ao estado normal. A determinao do limite deve ser
feita para cada mquina que fizer parte do sistema paralelo.
A utilizao do limite vlida apenas nos momentos em que a carga da mquina est
moderada. Quando a memria j est saturada a quantidade de alocaes por segundo fica
abaixo do limite mximo que a mquina suporta. Mas isso no significa que a mquina ir
suportar alocaes de um novo processo submetido. Nas situaes de sobrecarga, a taxa de
alocaes baixa porque a mquina consegue tratar menos alocaes por segundo do que em
situaes de carga moderada e tambm porque nesses momentos h menos pginas
disponveis para serem alocadas. Essa constatao indica que a utilizao do ndice 9 pode

70

no ser recomendado para auxiliar poltica de escalonamento em situaes de alta atividade de


troca de pginas, j que pode informar um valor de carga baixo enquanto, na verdade, a
mquina est sobrecarregada. Uma outra desvantagem percebida que tanto o ndice 8 como
o ndice 9 apresentam informaes que aparentam ser de difcil medio, j que apresentam
valores de pico muito altos em alguns momentos e valores muito baixos em outros momentos.
5.3.3 Mtricas para medir o uso e a atividade do espao de swap
H diferentes maneiras de se detectar que o espao de swap est sendo utilizado, j que
a atividade de troca de pginas reflete em vrios ndices de carga. O ndice 6, que mede a
quantidade de Bytes usada para armazenar pginas no swap, tem seu valor alterado sempre
que novas pginas so enviadas para o swap ou so removidas dele. O ndice 7, que mede a
quantidade de Bytes usada pelo swap cache, tem seu valor alterado sempre que uma ou mais
pginas so transferidas para a memria, mas uma cpia da pgina continua armazenada no
swap. Da mesma forma, o ndice 10 (ausncias maiores) apresenta valores fora do normal
quando o sistema de gerenciamento de pginas est fazendo uso do espao de swap e h a
necessidade de transferir pginas da memria para o disco e do disco para a memria. As
mtricas obtidas a partir destes ndices iro auxiliar as polticas de escalonamento indicando o
momento em que o sinal vermelho deve ser aceso. No decorrer desta seo, ser discutido
como estes ndices cumprem seu papel na deteco da saturao do sistema.
5.3.3.1 Medio da quantidade real de swap usado
O ndice 6 mede a quantidade de Bytes referentes s pginas da memria virtual que se
encontram armazenadas no espao de swap. Esse ndice tambm contabiliza as pginas que
ficam armazenadas no swap mesmo que j tenham sido levadas de volta para a memria
(swap cache). Os Bytes usados pelo swap cache so medidos separadamente atravs do ndice
7. O Grfico 5.10 mostra uma representao do ndice 6 e do ndice 7 juntos.

71

600000

50%

80%

110%

150%

110%

80%

50%

500000

Quantidade (KB)

400000

300000

200000

100000

Tempo

swap usado

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

swap cache

Grfico 5.10 Representao dos ndices que medem a quantidade total de swap usado e a poro do swap
usada pelo swap cache.

O ndice 6 (swap usado) apresenta um comportamento que indica pouca variao da


quantidade de swap usado considerando cada iterao separadamente. O comportamento
esperado para esse ndice seria acompanhar o dinamismo das aplicaes, aumentando e
diminuindo conforme a atividade de troca de pginas. Alm disso, pode-se perceber que
durante todo tempo em que o swap est sendo usado, uma parte expressiva do espao usada
para cache. Essa quantidade visivelmente maior nas iteraes 3 e 5 (110%), nas quais em
mdia 60% do espao utilizado equivale ao swap cache. Na iterao 4 (150%), onde a
utilizao do swap mais intensa uma parte menor (em mdia 40%) utilizada pelo cache. O
ndice 7 (swap cache) apresenta uma atividade com variaes considerveis, indicando que,
ao contrrio do ndice 6, seus valores acompanham o dinamismo das aplicaes. Essas
constataes indicam que interessante utilizar o valor do ndice 7, em conjunto com o ndice
6, para encontrar uma forma precisa de medir o uso do swap.

72

As pginas que residem no swap e que no esto na memria esto sujeitas a serem
transferidas do swap para a memria na ocorrncia de uma ausncia de pgina. A poro do
swap ocupada por essas pginas pode ser considerada como a poro realmente utilizada. A
parte do espao do swap que corresponde ao swap cache pode ser desconsiderada no clculo
do swap realmente utilizado. Isso pode ser obtido subtraindo o valor do ndice 7 (swap cache)
da quantidade total de swap usado, representada pelo ndice 6.
O Grfico 5.11 apresenta a mtrica M4, proposta para representar a quantidade real de
swap usado. Essa mtrica equivale diferena entre o ndice 6 e o ndice 7. Pode-se perceber
que a mtrica M4 exibe valores mais prximos dos esperados para a quantidade de swap
usado, acompanhando o dinamismo das aplicaes.
Quando se considera apenas o ndice 6 para representar o swap usado, no se observa
uma diferena significativa na utilizao do swap entre as iteraes 3 e 5 (110%) e a iterao
4 (150%). Isso ocorre porque a porcentagem do espao de swap utilizada pelo swap cache
significativamente menor na iterao 4 em comparao com as iteraes 3 e 5, fazendo com

500000

50%

80%

110%

150%

110%

80%

50%

450000

400000

300000

250000

200000

150000

100000

50000

Tempo

Grfico 5.11 Mtrica que representa a quantidade real de swap usado

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

0
0

Quantidade (KB)

350000

M4

73

que a quantidade total de swap usado na iterao 4 fique prxima quantidade usada nas
iteraes 3 e 5. Quando se observam os valores da mtrica M4, os nveis de utilizao nas
iteraes 3, 4 e 5 esto mais coerentes com as configuraes do monitoramento. Nesse caso, a
quantidade de swap utilizada na iterao 4 significativamente maior do que a quantidade
usada nas iteraes 3 e 5, que o comportamento esperado. A partir dessas observaes
possvel concluir que a mtrica M4 representa com mais preciso o estado de utilizao do
swap e pode ser utilizada por uma poltica de escalonamento que deseje avaliar a carga de
uma mquina baseando-se na quantidade de swap usado.
No Grfico 5.11 observa-se tambm que uma pequena quantidade de swap utilizada
nas iteraes 2, 6 e 7. Nessas iteraes havia o objetivo de manter a utilizao de memria em
nveis que evitassem a utilizao do espao de swap. Como foi mencionado na seo 5.2.2,
no se pde garantir que o uso memria no ultrapassou os nveis mximos definidos para
novas submisses. Contudo, a atividade de troca de pginas no foi significativa, o que pode
ser visto no Grfico 5.12, que representa a ocorrncia de ausncias maiores na iterao 2.
Nesse grfico tambm mostrado o final da iterao 1 e o incio da iterao 3. Verifica-se que
120

50%

80%

110%

80

60

40

20

Tempo

Grfico 5.12 Ausncias maiores durante a segunda iterao.

3300

3200

3100

3000

2900

2800

2700

2600

2500

2400

2300

2200

2100

2000

1900

1800

1700

1600

1500

1400

1300

0
1200

Ausncias maiores

100

74

h apenas dois perodos de curta durao em que ocorrem ausncias maiores na iterao 2.
Um aumento mais significativo na ocorrncia de ausncias maiores percebido apenas no
incio da iterao 3. Mesmo assim, percebe-se, pelo Grfico 5.11 que certa quantidade de
swap permanece sendo utilizada durante toda a iterao 2. O mesmo comportamento vlido
para a iterao 6; a mtrica M4 indica que o swap se torna livre apenas no incio da iterao 7.
Esse comportamento acontece porque algumas pginas transferidas para o swap no so
requisitadas pelos programas e no voltam para a memria durante o perodo observado.
Essas pginas podem pertencer a alguns processos do sistema operacional que possuem pouca
atividade e tiveram suas pginas mantidas no swap por um longo perodo. A poro do swap
ocupada por pginas que tm pouca chance de voltar memria no deveria ser considerada
realmente utilizada. Uma desvantagem da mtrica M4 que ela no detecta esse tipo de
comportamento. Nas pesquisas realizadas neste trabalho, no foi encontrado um ndice de
carga disponibilizado pelo Linux que auxilie na deteco desse comportamento especfico.
Contudo, foram encontradas informaes de carga que representam a atividade de ausncias
de pginas. Essas informaes podem fornecer estatsticas mais precisas sobre o estado real
de utilizao do swap, do que as mtricas baseadas em quantidade de swap usado.
5.3.3.2 Utilizao da taxa de ausncias maiores para deteco de thrashing
Os dados analisados na seo 5.3.3.1 indicam que medir a quantidade exata de swap
usado pode no oferecer muitas vantagens para as polticas de escalonamento. Em certos
casos pode ser suficiente saber apenas se h atividade de swap ou no. Quando detectada
alguma atividade intensa de swap, a mquina pode ser considerada sobrecarregada
independente da quantidade de espao de swap usado e no vale a pena enviar qualquer novo
processo para ser executado nela. Em experimentos com diversas aplicaes, realizados por
Xiao et al. (2002), foi mostrado que quando o uso da memria excedia em aproximadamente
5% o tamanho da memria principal, a fatia do tempo de CPU usada para tratar ausncias
maiores era de 37%. Quando o uso passava para 25% e depois para 65%, o tempo para tratar

75

as ausncias passava para 43% e 91%, respectivamente. Isso evidencia a necessidade de


impedir o uso intenso do swap, porque mesmo que o uso de memria ultrapasse o tamanho da
memria principal em uma pequena porcentagem, o tempo utilizado para realizar
computaes teis reduzido consideravelmente.
Mais importante do que saber a quantidade exata de swap usado poder detectar se est
ocorrendo thrashing (situao na qual grande parte do tempo de processamento gasto com
operaes de troca e pouca computao til realizada). A questo nesse caso sobre quais
informaes usar para detectar o thrashing.
A informao sobre as ausncias maiores (ndice 11) pode ser considerada uma boa
mtrica para representar a atividade do sistema de memria porque indica o nvel de
intensidade em que os programas em execuo esto competindo pela memria principal
disponvel. Um alto nvel de competio acontece quando os programas no conseguem
estabelecer o seu conjunto mnimo de pginas de trabalho (working set) para poder executar
alguma computao til, causando thrashing. Sabe-se que o thrashing o principal
responsvel pela queda do desempenho de aplicaes que dependem de grandes quantidades
de memria, como foi discutido na seo 2.5.
O Grfico 5.13 apresenta o comportamento do ndice 11 durante todo o monitoramento.
O comportamento desse ndice indica que a taxa de ausncias maiores por segundo aumenta
significativamente logo que a utilizao de memria ultrapassa o tamanho da memria
principal, iniciando o uso do espao de swap. Isso ocorre no incio da iterao 3, quando o
monitoramento foi configurado para tolerar novas submisses de aplicaes enquanto a
utilizao de memria estivesse abaixo de 110% do tamanho da memria principal. Esse
comportamento esperado j que o espao de memria alocado pelas aplicaes no
comportado pela memria principal. Nesse caso, o uso de memria por aplicaes que esto
trabalhando ativamente resulta na ocorrncia de ausncias maiores.

76

250

50%

80%

110%

150%

110%

80%

50%

Ausncias por segundo

200

150

100

50

Tempo

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

ausncias maiores

Grfico 5.13 ndice que representa a ocorrncia de ausncias maiores.

Nota-se que logo que a utilizao do espao de swap inicia, o nvel de ausncias
maiores atinge nveis consideravelmente altos. Os nveis na iterao 3, ficam em torno de 100
ausncias por segundo na maioria do tempo. Esses nveis so menores do que os nveis da 4
iterao, na qual ocorrem at 150 ausncias maiores por segundo. Contudo, essa diferena no
expressiva em comparao com a diferena observada na quantidade de swap usado,
mostrada anteriormente no Grfico 5.11. Era esperado que a taxa de ausncias maiores por
segundo fosse maior na 4 iterao, do que nas iteraes 3 e 5, nas quais o uso de swap foi
menor. Mas na 5 iterao que essa taxa atinge o maior valor observado durante o
monitoramento. No instante de tempo 7250 a taxa chega a aproximadamente 210 ausncias
por segundo, considerando a mdia mvel exponencial. O maior pico instantneo detectado
foi de 450 ausncias maiores tratadas em um segundo. Esses dados indicam que, no caso do
monitoramento realizado neste trabalho, o comportamento desse ndice depende mais das
caractersticas das aplicaes e da interao entre elas e menos do nvel de utilizao do
espao de swap. Isso explica o fato de a taxa de ausncias maiores atingir o valor mximo na
iterao na qual a utilizao de swap menor.
Durante as iteraes 2, 6 e 7 podem ser detectados pequenos valores acima de 0 na taxa
de ausncias maiores. Isso se deve a alguns valores instantneos que aparecem vrias vezes

77

aps a primeira vez em que o swap usado na iterao 2. Como o espao de swap utilizado
nessas iteraes provavelmente contm pginas pouco requisitadas, a quantidade de ausncias
maiores causadas pequena. A mdia mvel exponencial nessas situaes fica geralmente
abaixo de 1. Dessa forma, conclui-se que h um nvel de ausncias maiores que pode ser
tolerado. Isso tambm indica que o ndice 11 no deve ser usado isoladamente e sim, em
conjunto com outros ndices. Por exemplo, quando outras mtricas indicam que o sistema est
no sinal verde, a taxa de ausncias maiores, que ser baixa, poder ser ignorada. Por outro
lado, num momento em que o sinal amarelo estiver aceso, um aumento nos valores do ndice
11, indicar que o sistema est ficando realmente sobrecarregado. Nesse caso, ocorrer a
transio para o sinal vermelho.
A principal concluso da anlise do ndice 11 que um valor alto no nmero de
ausncias maiores um indicativo de que est ocorrendo thrashing. Quanto mais prximo
esse ndice estiver do limite mximo que a mquina suporta, maior ser o tempo gasto pelo
sistema para tratar as ausncias maiores. O limite mximo um valor dependente das
caractersticas do hardware da mquina, sobretudo do desempenho do disco rgido. Portanto,
no possvel atribuir um valor de referncia vlido para qualquer mquina. Para obter esse
valor, uma anlise deve ser feita para cada mquina do sistema heterogneo, de forma a
descobrir qual a taxa mxima de ausncias por segundo que o sistema de gerenciamento de
memria consegue tratar. Por exemplo, os dados do monitoramento realizado neste trabalho
indicam que a mquina utilizada nos testes capaz de tratar no mximo 450 ausncias em um
segundo, que foi o valor mximo detectado.
5.3.3.3 Deteco de thrashing atravs das filas de processos
O ndice 1, que mede a quantidade de processos bloqueados devido ao excesso de
operaes de I/O, tambm pode ser til na deteco da ocorrncia de thrashing. Quando a
memria principal est saturada e ocorrem muitas ausncias maiores, o sistema no capaz de
tratar todas as operaes de I/O ao mesmo tempo, causando o bloqueio de alguns processos. O

78

14

50%

80%

110%

150%

110%

80%

50%

12

Processos bloqueados

10

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

Tempo

Grfico 5.14 - Comportamento do ndice que mede a quantidade de processos bloqueados

Grfico 5.14 apresenta o comportamento do ndice 1 durante todo o monitoramento. Esse


grfico mostra que a quantidade de processos bloqueados maior nas iteraes 3, 4 e 5, nas
quais o uso de swap intenso. interessante observar que a quantidade de processos
bloqueados significativamente maior na iterao 4, em comparao com as iteraes 3 e 5.
Na iterao 5 podem ser percebidos dois picos mais altos desse ndice, mas na mdia os
valores so similares aos valores da iterao 3.
Esse comportamento no havia sido observado com relao ao ndice 11, que mede as
ausncias maiores. Nesse caso, as diferenas entre as iteraes 3, 4 e 5 no eram expressivas.
Quando o nvel de ausncias maiores encontra-se em seu valor mximo, qualquer novo
processo colocado para executar na mquina tem grandes chances de contribuir para o
aumento do tamanho da fila de processos bloqueados. O fato do ndice 1 representar esse
aumento de carga pode ser visto como uma vantagem a favor desse ndice. Caso seja
necessrio diferenciar a carga de duas mquinas sobrecarregadas, a mquina cuja fila de
processos bloqueados foi maior poder ser considerada mais sobrecarregada.
O tratamento de ausncias maiores no a nica causa do bloqueio de processos. A
disputa por acessos ao disco ou rede feitos diretamente pelas aplicaes tambm pode

79

causar bloqueios. Isso pode ser visto atravs do Grfico 5.14 com ateno especial s
iteraes 1, 2, 6 e 7. Nessas iteraes o ndice 1 apresenta uma atividade significativa, mas a
atividade de swap insignificante. Mesmo quando o sistema de memria da mquina no est
saturado, mas h vrios processos bloqueados, os novos processos que chegarem, podem
sofrer uma penalidade caso necessitem executar operaes de I/O ou acessos rede de
comunicao.
O ndice 1 (processos bloqueados) aparenta ser um bom ndice de carga para o
escalonamento de aplicaes memory-intensive e I/O-intensive. Contudo, algumas
informaes adicionais seriam necessrias para acrescentar mais significado a esse ndice. Por
exemplo, assim como em outros casos, a determinao de limites uma tarefa necessria. Os
dados do monitoramento sugerem que quando esse ndice est abaixo de 2, a mquina no
est sobrecarregada. Mas esses dados dependem das peculiaridades do monitoramento.
Sozinho, o ndice 1 no capaz de fornecer informaes que permitam avaliar a
ocorrncia de thrashing. Para permitir avaliar a quantidade de computao til realizada,
foram coletadas durante o monitoramento informaes sobre o tamanho da fila de processos
prontos. Esse ndice no foi includo inicialmente na lista de ndices pesquisados porque no
reflete o uso de memria. A fila de processos prontos corresponde aos processos que, de
acordo com o Linux, se encontram no estado R (running) e esto realmente consumindo o
processador. Essa fila um dos ndices de carga mais utilizados por sistemas encontrados na
literatura e geralmente descrito como um bom ndice para representar a carga de mquinas
de plataformas distribudas (Shivaratri et al., 1992). Esse ndice mais usado por polticas de
escalonamento e balanceamento de carga quando o foco so as aplicaes que dependem mais
do processador, mas freqentemente utilizado de maneira genrica no escalonamento de
qualquer tipo de aplicao.
O Grfico 5.15 mostra a representao da fila de processos prontos durante todo o
monitoramento. Os valores apresentados indicam um padro bem definido no comportamento

80

50%

80%

110%

150%

110%

80%

50%

Processos prontos

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

Tempo

Grfico 5.15 - Fila de processos prontos.

desse ndice. Quando ocorre a transio da 1 para a 2 iterao, percebe-se um aumento no


nvel de processos prontos. Quando o monitoramento passa para a 3 iterao esse nvel
permanece estvel, no sendo percebido aumento ou diminuio significativa. Por outro lado,
quando ocorre a transio para a 4 iterao pode ser percebida uma diminuio no nmero de
processos prontos. Os comportamentos das iteraes 5, 6 e 7 se aproximam dos
comportamentos das iteraes 1, 2 e 3, respectivamente. Uma comparao dos
comportamentos da fila de processos prontos com o ndice 1 (processos bloqueados) ajuda a
entender esse comportamento.
O Grfico 5.16 mostra com detalhes um trecho do monitoramento que compreende o
perodo entre os instantes de tempo 4000 e 7000. Esse grfico foi elaborado para comparar as
filas de processos prontos e bloqueados. O objetivo entender porque a fila de processos
prontos diminui quando a carga de memria aumenta. O grfico mostra que os momentos em
que a quantidade de processos prontos diminui coincidem com aumentos da quantidade de
processos bloqueados. Durante a iterao de maior carga (4) e no incio da iterao 5, a fila de
processos prontos significativamente menor do que a fila de processos bloqueados. Por

81

14

110%

150%

110%

12

Processos prontos

10

Tempo

prontos

7000

6750

6500

6250

6000

5750

5500

5250

5000

4750

4500

4250

4000

bloqueados

Grfico 5.16 - Processos prontos vs. processos bloqueados.

exemplo, por volta do instante de tempo 5700, a quantidade de processos prontos chega
prxima a zero enquanto h aproximadamente 12 processos bloqueados. Nos momentos em
que a utilizao do swap muito intensa, a maioria dos processos incapaz de rodar
(consumir o processador) e permanecem bloqueados. Isso um sinal de diminuio da
quantidade de computao til e de aumento de tempo gasto com tratamento de operaes de
I/O.
Nas outras iteraes, nas quais a carga menor, essa tendncia no observada. Nas
iteraes em que no h atividade de swap, a quantidade de processos bloqueados sempre
menor do que nas iteraes onde o swap usado ativamente. Na iterao 3 e em parte da
iterao 5, onde o uso de swap foi menos intenso, os tamanhos das duas filas ficaram em nvel
similares. Nesses perodos, a quantidade de processos prontos caiu abaixo do nmero de
processos bloqueados menos freqentemente.
A partir da relao entre o tamanho dessas duas filas de processos pode ser criada uma
nova mtrica de medio de carga. Essa mtrica, chamada de M5, equivale diviso entre o
ndice 1 (processos bloqueados) e o tamanho da fila de processos prontos. O valor de M5 ser
maior do que 1 quando houver mais processos bloqueados do que processos prontos e menor

82

10

50%

80%

110%

150%

110%

80%

50%

9
8
7
6
5
4
3
2
1

Tempo

11500

11000

10500

10000

9500

9000

8500

8000

7500

7000

6500

6000

5500

5000

4500

4000

3500

3000

2500

2000

1500

1000

500

M5

Grfico 5.17 - Representao da mtrica M5.

do que 1 no caso oposto. Dessa forma, inicialmente o nmero 1 o limiar de carga definido
para essa mtrica. No caso de o divisor (processos prontos) ser igual a zero, o resultado da
diviso poder ser o prprio dividendo (processos bloqueados), ou algum valor maior, por
exemplo, o dobro do dividendo. Contudo, durante o monitoramento realizado, no houve
nenhum momento em que havia pelo menos um processo bloqueado e o nmero de processos
prontos era igual a zero. O comportamento da mtrica M5 durante todo o monitoramento pode
ser visto no Grfico 5.17.
A hiptese levantada aqui que essa mtrica pode indicar os momentos em que o
sistema est gastando mais tempo no tratamento de operaes de I/O do que com
computaes teis. Isso indicaria o momento em que o sinal vermelho deveria ser aceso. O
limiar de carga tambm poderia ser definido para valores menores do que 1, deixando essa
mtrica mais conservadora, ou para valores maiores do que 1 para deixar a mtrica mais
otimista. Esses valores dependem das necessidades das polticas de escalonamento que fariam
uso dessa mtrica.
A mtrica M5 possui uma vantagem clara em relao utilizao da fila de processos
prontos. Apesar de esse ndice ser muito usado na prtica, ele apresentaria uma viso errada

83

da carga do sistema na maior parte do monitoramento, sobretudo nos trechos onde foi
detectada atividade de troca de pginas. Por exemplo, quando a atividade de swap est
intensa, a fila de processos prontos indicaria que a carga do sistema est diminuindo,
enquanto na verdade ela est aumentando. Isso deixa claro que a fila de processos prontos no
um bom ndice para avaliar a carga nessa situao.

5.4 Consideraes finais


Este captulo apresentou a anlise do comportamento dos ndices de carga pesquisados.
As vantagens e desvantagens de cada ndice foram apresentadas. Vrias relaes entre os
ndices foram descritas possibilitando a criao de cinco mtricas originadas da combinao
entre ndices. Algumas vezes, as desvantagens de um ndice desapareceram atravs da juno
com outro ndice.
Os ndices de carga e mtricas tm o objetivo de estimar a carga de uma mquina em
momentos especficos. Uma analogia com semforos de trnsito foi utilizada para facilitar o
entendimento da aplicao de diferentes ndices. As informaes fornecidas pelos ndices que
caracterizam a quantidade de memria principal utilizada tm utilidade apenas enquanto o
sinal verde est aceso. As informaes que funcionam como alertas de saturao da memria
principal, so teis para indicar quando o sinal amarelo ser aceso. Quando for detectado que
o sinal vermelho foi aceso, a carga da mquina deve ser avaliada pelas mtricas que avaliam o
uso e atividade do espao de swap.
Neste captulo foram discutidas algumas sugestes de como as polticas poderiam se
beneficiar dos ndices pesquisados. A maneira exata de usar esses ndices e mtricas
depender das necessidades das polticas. Diversas solues de escalonamento podero ser
desenvolvidas utilizando um ou mais ndices. Por exemplo, uma poltica de balanceamento de
carga dotada de um mecanismo de migrao de processos pode ser auxiliada por vrias das
mtricas pesquisadas. Baseada nas mquinas para as quais o sinal vermelho estiver aceso, a
poltica poder identificar as fornecedoras de carga, enquanto as mquinas que estiverem no

84

sinal verde sero receptoras. Se a poltica for mais conservadora, poder escolher
fornecedoras de carga logo que detectar mquinas que estejam no sinal amarelo.
A Tabela 5.4 mostra um quadro comparativo que resume as principais caractersticas
dos ndices pesquisados. Nesse quadro so apresentadas as informaes: (1) nmero e nome
do ndice, (2) o nvel de carga que o ndice capaz de representar, de acordo com a analogia
com sinais de trnsito, (3) a principal utilidade do ndice e (4) a principal desvantagem, se
houver.

Nome

Processos

Tabela 5.4 Quadro comparativo dos ndices pesquisados.


Sinal
Utilidade
Desvantagem
Verm

Deteco de thrashing

Difcil determinar limites

Verd/ Am

Medir utilizao em nveis

No representa quantidade

moderados

real de memria usada

Complementar o ndice 2

Inclui algumas pginas que

na mtrica M1

pode estar ativas

bloqueados
2

Memria
ocupada

Cache e

Verd/ Am/

buffers
4
5

Memria

Verd/ Am/

Formar a mtrica M3 junto Causa picos muito altos em

ativa

Verm

com ndice 5

M3

Memria

Verd/ Am/

Complementar o ndice 2

Causa picos muito altos em

inativa

Verm

na mtrica M2. Formar a

M3

mtrica M3
6
7

Swap usado
Swap cache

Verm
Verm

Medir quantidade de

No mede a quantidade real

espao de swap usado

de swap usado

Complementar o ndice 6

No h

na mtrica M4
8

Page

Verd/ Am

stealing
9

Pginas

Verd/ Am

alocadas
10

Ausncias
Menores

Verd/ Am

Detectar atividade de

Apresenta picos muito altos.

alocao intensa

difcil determinar limites

Detectar atividade de

Apresenta picos muito altos.

alocao intensa

difcil determinar limites

Prever ocorrncia de

Apresenta valores elevados

ausncias maiores

em momentos que no
antecedem a ausncias
maiores

85

11

Ausncias
Maiores

Vermelho

Deteco de thrashing

Atinge o valor mximo muito

(mtrica M5)

rapidamente

6. Concluso

Esse captulo apresenta as concluses sobre o trabalho realizado, destaca as


contribuies desta dissertao e sugere alguns trabalhos futuros.

6.1 Ponderaes finais da dissertao


Este trabalho apresentou um estudo de ndices de carga de memria, incluindo uma
anlise de comportamento dos ndices identificados. Essa anlise resultou na identificao de
diversas opes de mtricas de carga aplicveis em diferentes situaes.
A necessidade de um estudo como este motivada por diversas constataes, sendo que
as principais so: (1) a crescente demanda das aplicaes por maiores quantidades de
memria, (2) o baixo desempenho dos sistemas de memria em comparao com os
processadores, (3) os efeitos negativos causados pelo mau gerenciamento de memria em
sistemas paralelos e (4) a presena de poucos estudos sobre ndices de carga de memria na
literatura.
A pesquisa dos ndices foi guiada por dois requisitos: primeiro, os ndices deveriam
refletir direta ou indiretamente a utilizao de memria e segundo, a obteno dos ndices
deveria ser fcil do sistema operacional Linux em nvel de usurio. O primeiro requisito foi
definido para mostrar claramente o foco da pesquisa e tornar a anlise dos ndices mais
objetiva. possvel que os ndices pesquisados sejam usados em conjunto com outros ndices
que no reflitam a utilizao da memria, mas este trabalho no esteve focado em encontrar

88

essas relaes. Contudo, uma informao de carga, a fila de processos prontos, foi utilizada
para auxiliar a anlise do ndice 1 (Processos bloqueados), resultando na definio da mtrica
M5. O segundo requisito foi definido porque a obteno dos ndices deveria ser feita sem a
necessidade de modificaes do ncleo do Linux melhorando, assim, a flexibilidade dos
ndices e facilitando sua utilizao na prtica. Esse requisito foi facilitado pela disponibilidade
do sistema de arquivos /proc, que fornece, de forma simples, uma grande gama de
informaes sobre o sistema.
Foram identificados 11 ndices de carga que satisfazem os requisitos definidos. Esses
ndices incluem tanto informaes em termos de quantidade de espao usado como
informaes de atividade de memria. Essas duas categorias de informaes mostraram ser
complementares, j que as vantagens dos ndices de uma categoria puderam minimizar as
desvantagens dos ndices da outra. Por exemplo, o ndice que mede a quantidade de memria
ocupada til apenas enquanto a memria no est sobrecarregada. A partir da,
interessante utilizar ndices que reflitam a utilizao do swap. O ndice que mede a quantidade
de swap usado demonstrou algumas desvantagens, que foram superadas pelo ndice que mede
a atividade de ausncias maiores (ndice de atividade). Esse ndice demonstrou vantagens que
sugerem a sua adoo para representar a carga de uma mquina quando a memria principal
est sobrecarregada.
Um monitoramento da execuo de uma carga de trabalho composta de trs aplicaes
reais foi realizado para coletar os ndices de carga. A carga de memria durante o
monitoramento foi mantida em diferentes nveis, para capturar o comportamento dos ndices
em situaes de carga moderada a alta. Esse mecanismo se mostrou til para o entender do
comportamento de alguns ndices em momentos de transio entre os nveis de utilizao. Por
exemplo, o ndice que mede a quantidade de ausncias menores (ndice 10) se mostrou capaz
de prever a saturao da memria principal e a ocorrncia de ausncias maiores. Esse

89

comportamento foi identificado a partir da observao de que o valor do ndice 10 aumenta


significativamente momentos antes da ocorrncia de ausncias maiores.
A elaborao de mtricas a partir da combinao de um ou mais ndices resultou em
maneiras mais precisas de representar a carga de memria. Para representar a quantidade de
memria realmente utilizada, no suficiente adotar o valor fornecido pelo Linux para esse
propsito. Para isso, foram propostas duas mtricas (M1 e M2) que consideram como
ocupado apenas o espao de memria que est ativo. As duas mtricas apresentam
comportamentos similares, no sendo possvel afirmar qual a mais precisa. Contudo, pelo
seu princpio, a mtrica M2 aparenta ser mais precisa porque considera como livre apenas a
quantidade de memria que est realmente inativa, enquanto que M1 considera que todo o
espao ocupado por caches e buffers est livre. De forma semelhante, a quantidade de swap
realmente utilizado no deve ser medida diretamente atravs da informao fornecida pelo
Linux. Atravs da combinao com o ndice que mede o swap cache, foi criada a mtrica M4,
que representa com preciso a quantidade de swap realmente usado. A mtrica M3 representa
a proporo entre os ndices que medem pginas ativas e inativas. Como o Linux tenta manter
uma relao de 2 para 1 entre esses ndices, um valor consideravelmente maior que 2 dessa
relao pode indicar sobrecarga de memria. A ltima mtrica proposta (M5) tem o objetivo
de quantificar o nvel de thrashing calculando uma proporo entre os tamanhos das filas de
processos bloqueados e prontos. De acordo com essa mtrica, considera-se que o SO est
executando menos computaes teis quando o nmero de processos bloqueados maior do
que o nmero de processos rodando (prontos).

6.2 Contribuies
As principais contribuies dos estudos apresentados nesta dissertao so:

Anlise da bibliografia da rea com nfase na identificao dos principais


problemas referentes ao gerenciamento de memria. A partir dessa reviso

90

bibliogrfica possvel entender quais caractersticas devem ser encontradas em


novos ndices de carga.

Identificao de 11 ndices de carga relacionados ao uso e atividade de


memria que podem ser obtidos facilmente do sistema operacional Linux.
Vrios desses ndices no haviam sido considerados em outros trabalhos. Alm
disso, o conjunto de ndices corresponde a informaes especficas para medir a
carga de memria, ao contrrio de vrios trabalhos encontrados na literatura, que
tm objetivos mais abrangentes e no se focam em um recurso especfico.

Realizao de uma anlise de comportamento dos valores apresentados pelos


ndices durante a execuo de aplicaes reais. Isso possibilitou entender o
comportamento de cada ndice em diferentes situaes de carga de memria. O
uso de aplicaes reais torna a anlise mais realista e aumenta a confiabilidade
dos ndices de carga.

Identificao dos nveis de carga nos quais os ndices so teis. Isso importante
para definir como as polticas de escalonamento, dependendo de seus objetivos,
podem utilizar um determinado ndice.

Identificao de mtricas de desempenho que combinam mais de um ndice de


carga. As mtricas criadas correspondem a formas mais precisas de representar a
carga de memria do que ndices isolados. Algumas estatsticas fornecidas pelo
sistema operacional poderiam levar a decises erradas, caso no fosse
combinadas com outras estatsticas.

Implementao de uma ferramenta de monitoramento para coletar ndices de


carga e fornec-los a polticas de escalonamento. Essa ferramenta permite que
polticas empreguem os ndices pesquisados e os incluam em suas decises de
escalonamento sem muito esforo.

91

6.3 Sugestes para trabalhos futuros


A anlise de comportamento dos ndices pesquisados sugere a necessidade de alguns
estudos mais especializados para adicionar mais significado aos ndices. Alm disso, alguns
passos precisam ser executados para que os ndices possam ter sua eficincia comprovada na
prtica. Nesse sentido, as sugestes para trabalhos futuros baseados nesta dissertao so:

Realizar estudos especficos para encontrar limites (thresholds) para alguns


ndices. Isso requer uma anlise incluindo a execuo de algumas aplicaes
reais, a fim de verificar qual o impacto dos valores dos ndices no desempenho
das aplicaes;

Aplicar os ndices pesquisados em polticas de escalonamento existentes e


executar testes reais ou simulados para verificar se os ndices melhoraram as
decises de escalonamento dessas polticas;

Criar polticas de escalonamento que sejam focadas em aplicaes memoryintensive e aplicar os ndices pesquisados;

Combinar os ndices de memria com outros tipos de ndices para verificar seu
efeito no escalonamento de outros tipos de aplicaes. A maioria das aplicaes
depende de quantidades considerveis de memria para executar, mesmo no
sendo consideradas memory-intensive. Portanto, ndices de carga de memria,
potencialmente, podem ajudar no escalonamento dessas aplicaes;

Estender o mdulo de monitoramento para permitir a comunicao com vrias


polticas de escalonamento. Isso envolve definir um protocolo de comunicao
para definir as mensagens que o mdulo poder trocar com as polticas. O
mdulo funcionaria como um agente de monitoramento que receberia pedidos
(mensagens) das polticas requisitando os ndices.

7. Referncias bibliogrficas

Acharia, A.; Setia, S. (1999). Availability and Utility of Idle Memory in Workstation Clusters.
In: Proceedings of ACM SIGMETRICS, Atlanta, USA, p.35-46.
Alderson, A.; Lynch, W.; Randell, B. (1972) Thrashing in a Multiprogrammed Paging System. In: Hoare, C. A. R.; Perrot, R. H. (editores), Operating Systems Techniques, London:
Academic Press, p. 152-167.
Ali S.; Braun, T. D.; Siegel, H. J.; Maciejewski, A. A.; Beck, N.; Blni, L.; Maheswaran,
M.; Reuther, A. I.; Robertson, J. P.; Theys, M.D.; Yao. B. (2005) Characterizing Resource
Allocation Heuristics for Heterogeneous Computing Systems. In: Zelkowitz, M; Hurson A.
(Editores). Advances in Computers: Volume 63: Parallel, Distributed, and Pervasive
Computing, Elsevier, p. 93-129.
Amir, Y.; Awerbuch, B.; Barak, A.; Borgstrom, R. S.; Keren, A. (2000). On Opportunity Cost
Approach for Job Assignment in a Scalable Computing Cluster. IEEE Transactions on
Parallel and Distributed Systems, v. 11, n. 7, p. 760-768.
Amiri, K.; Petrou, D.; Ganger, G. R.; Gibson, G. A. (2000). Dynamic Function Placement for
Data-intensive Cluster Computing. In: Proc. USENIX 2000 Annual Technical Conference,
San Diego, CA.
Anderson, T. E.; Culler, D. E.; Patterson, D. A. (1995). A Case for NOW (Networks of Workstations). IEEE Micro, v. 15, n. 1, pp. 54-64.
Barak, A; Braverman, A. (1998). Memory Ushering in a Scalable Computing Cluster. Journal
of Microprocessors and Microsystems, v. 22, n. 3-4, p. 175-182.
Becker, D. J.; Sterling, T.; Savarese, D.; Dorband, J. E.; Ranawak, U. A.; Packer, C. V.
(1995) Beowulf: A Parallel Workstation for Parallel Computing. In: Proc. the 24th International Conference on Parallel Processing. Urbana-Champain, Illinois.
BRAMS - Brazilian Regional Atmospheric Modeling System. (2005) Disponvel em
<http://www.cptec.inpe.br/brams>. Acessado: dez. 2005.
Branco, K. R. L. J. C. (2004) ndices de carga e desempenho em ambientes paralelos/
distribudos: modelagem e mtricas. Tese (Doutorado). ICMC-USP, So Carlos, Dez.
2004.

94

Braun, T. D.; Siegel, H. J.; Beck N.; Blni, L. L.; Maheswaran, M.; Reuther, A. I.; Robertson,
J. P.; Theys, M. D.; Yao, B.; Hensgen, D.; Freund, R. F. (2001). A comparison of eleven
static heuristics for mapping a class of independent tasks onto heterogeneous distributed
computing systems, Journal of Parallel and Distributed Computing, v. 61, n. 6, p. 810837.
Buyya, R. (1999) High Performance Cluster Computing: Architectures and Systems, v. 1,
New Jersey: Prentice Hall, 1999.
Casavant; T. L.; Kuhl, J. G. (1988). A Taxonomy of Scheduling in General-Purpose Distributed Computing Systems. IEEE Transactions on Software Engineering, v. 14, n. 2, p. 141154.
Cockcroft A. (2005). Help! Ive lost my memory. Disponvel em: <http://www.itworld.com/
Comp/2377/UIR951001perf>. Acesso: Dez. 2005.
Denning, P. J. (1968a). The working set model for program behavior. Communications of the
ACM, v. 11, n. 5, p. 323-333.
Denning, P. J. (1968b). Thrashing: its causes and prevention. In: Proceedings of AFIPS Conference 1968, p. 915-922.
Feitelson, D. G.; Rudolph, L.; Schwiegelshohn, U.; Sevcik, K. C.; Wong, P. (1997). Theory
and Practice in Parallel Job Scheduling. In: IPPS' 97 Workshop on Job Scheduling Strategies for Parallel Processing, LNCS 1291, Geneva, Switzerland.
Ferrari, D.; Zhou, S. (1987). An Empirical Investigation of Load Indices for Load Balancing
Applications. In: Proceedings 12th Int'l Symposium on Computer Performance Modeling,
Measurement and Evaluation (Performance87), p. 515-528.
Ferstl, F. (1996). Job-and resource-management systems in heterogeneous clusters. Future
Generation Computer Systems - FGCS, v. 12, p. 39-51.
Fujimoto, R. M. (1990). Performance of Time Warp under Synthetic Workloads. In: Proceedings of the SCS Multiconference on Distributed Simulation, p.23-28.
Gorman, M. (2004). Understanding the Linux Virtual Memory Manager. Upper Saddle River:
Prentice-Hall, 2004. 832 p.
Graham, P. A. (2001). DSM Cluster Architecture Supporting Aggressive Computation in
Active Networks. In: Proc. the 3rd International Workshop on Distributed Shared Memory
(DSM 2001). Brisbane, Australia.
Gropp W.; Lusk E.; Skjellum A. (2000). Using MPI: portable parallel programming with the
message-passing interface. 2 edio. Cambridge: MIT Press, 2000. 350 p.
Harchol-Balter, M.; Downey, A. B. (1997). Exploiting Process Lifetimes Distributions for
Dynamic Load Balancing. ACM Transactions on Computer Systems, v. 15, n. 3, p. 253285.
Hennesy, J. L.; Patterson, D. A. Computer Architecture: A Quantitative Approach, 2 ed., San
Francisco: Morgan Kaufmann, 1996.
Ishii, R. P.; Mello, R. F.; Senger, L. J.; Santana, M. J.; Santana, R. H. C. (2005). Improving
Scheduling of Communication Intensive Parallel Applications on Heterogeneous Computing Environments. Parallel Processing Letters, v. 15, n. 4, p. 423-438.
Jiang, S.; Zhang, X. (2001). Adaptive Page Replacement to Protect Thrashing in Linux. In:
Proceedings of the 5th Annual Linux Showcase & Conference. Oakland, California.
Jiang, S.; Zhang, X. (2005). Token-ordered LRU: an effective page replacement policy and its
implementation in Linux systems, Performance Evaluation, v. 60, n 1-4, 2005, p. 5-29.

95

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.
Lin, W.; Reinhardt, S. K.; Burger, D. (2001). Reducing DRAM Latencies with an Integrated
Memory Hierarchy Design. In: Proceedings Seventh Intl Symp. High-Performance Computer Architecture (HPCA-7). Monterrey, Mexico.
Linux Kernel. (2005). Cdigo-fonte do kernel do Linux verso 2.6.11. Disponvel em:
<http://www.kernel.org>. Acesso: Nov. 2005.
Love, R. (2004). Linux Kernel Development: A practical guide to the design and implementation of the Linux kernel, Indianapolis: Sams Publishing, 2004.
Martin D. E.; Wilsey, P. A.; Hoekstra, R. J; Keiter, E. R.; Hutchinson, S. A.; Russo, T. V.;
Waters, L. J. (2003). Redesigning the WARPED Simulation Kernel for Analysis and Application Development. In: Annual Simulation Symposium 2003. Orlando, Florida, p. 216223.
Matos, J.; Bortolato, E.; Camilo Jr, A.; Martini, J. A.; Gonalves R. A. L.; Souza, P. S. L.
(2006). Binary SCF: GAMESS improvements for energy evaluation based on SCF methods. Computer Physics Communications, v. 174, n. 1, p. 1-16.
Mehra, P.; Wah, B. W. (1997) Automated learning of load-balancing strategies in multiprogrammed distributed systems. International Journal of Systems Science, v. 28, n. 11, p.
1077-1099.
Murray, N.; Horman N. (2004). Understanding Virtual Memory. Red Hat Magazine. Issue 1,
Nov. 2004. Disponvel em: <http://www.redhat.com/magazine/001nov04/features/vm/>.
Acesso: Nov. 2005.
Opensolaris.org (2005). Procfs. Disponvel em: http://www.opensolaris.org/os/community/
observability/process/procfs. Acesso: Dez. 2005.
Pielke, R. A.; Cotton W. R.; Walko, R. L.; Tremback, C. J.; Lyons, W. A.; Grasso, L. D.;
Nicholls, M. E.; Moran, M. D.; Wesley, D. A.; Lee, T. J.; Copeland, J. H. (1992). A comprehensive meteorological modeling system-RAMS. Meteorology of Atmospheric Physics,
v. 49, p. 69-91.
Red Hat, Inc. (2003a). Tips & Tricks Featured Article: /proc/meminfo Explained. Disponvel
em: <http://www.redhat.com/advice/tips/meminfo.html>. Acesso: Jan. 2005.
Red Hat, Inc. (2003b). Red Hat Linux 9 Manual. Disponvel em: <http://www.redhat.com/
docs/manuals/linux/RHL-9-Manual/>. Acesso: Jan. 2006.
Riel, R. (2001). Page replacement in Linux 2.4 memory management. In: Proceedings of the
2001 USENIX Annual Technical Conference. Boston, MA.
Schmidt, M. W.; Baldridge, K.K.; Boatz, J.A.; Elbert, S.T.; Gordon, M.S.; Jensen, J.H.;
Koseki, S.; Matsunaga, N.; Nguyen, K.A.; Su, S.J.; Windus, T.L.; Dupuis, M.; Montgomery, J.A. (1993). The general atomic and molecular electronics structure systems. Journal
of Computational Chemistry, v. 14, n. 11, p. 1347-1363.
Schrock,
E.
(2004).
A
brief
history
of
/proc.
Disponvel
<http://blogs.sun.com/roller/page/eschrock/20040625>. Acesso: Dez. 2004.

em:

Senger, L. J. (2004). Escalonamento de processos: uma abordagem dinmica e incremental


para a explorao de caractersticas de aplicaes paralelas. Tese (Doutorado), ICMCUSP, So Carlos. Dez. 2004.

96

Shirazi, B.; Hurson, A. R. (1992). Special Issue on Scheduling and Load Balancing: guest
editor's introduction. Journal of Parallel and Distributed Computing, v. 16, n. 4, p. 271275.
Shivaratri, N.G.; Krueger, P.; Singhal, M. (1992). Load Distributing for Locally Distributed
Systems. IEEE Computer, v. 25, n. 12.
Smith, W.; Taylor, V.; Foster, I. (1999). Using run-time predictions to estimate queue wait
times and improve scheduler performance. In: Job Scheduling Strategies for Parallel
Processing, LNCS 1659. p. 202-219.
Souza, P. S. L. (2000) AMIGO: Uma Contribuio para a Convergncia na rea de
Escalonamento de Processos. Tese (Doutorado). IFSC-USP, So Carlos. Jun. 2000.
Stallings, W. (1999). Computer Organization and Architecture, 5. ed, Upper Saddle River:
Prentice-Hall, 1999. 768 p.
Tanenbaum, A. S. (2003). Modern Operating Systems. Upper Saddle River: Prentice-Hall,
2003. 976 p.
Xiao, L; Chen, S; Zhang, X. (2002) Dynamic cluster resource allocations for jobs with known
and unknown memory demands. IEEE Transactions on Parallel and Distributed Computing, v. 13, n. 3, p. 223-240.
Xu, C.; Lau, F. C. M. (1997). Load Balancing in Parallel Computers: Theory and Practice,
Boston: Kluwer Academic Publishers, 1997.
Zhang, Z.; Zhu, Z.; Zhang, X. (2001). Cached DRAM for ILP Processor Memory Access
Latency Reduction. IEEE Micro, v. 21, n. 4, p. 22-32.
Zhou, S.; Wang, J.; Zheng, X.; Delisle P. (1993) Utopia: A load-sharing facility for large heterogeneous distributed computing systems. Software - Practice and Experience, v. 23, n.
12, 1993.