sistemas distribuidos
DESCRIPTION
Sistemas distibuidos e memória virtualTRANSCRIPT
-
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
U S P S o C a r l o s S e t e m b r o / 2 0 0 6
Data da defesa: 06/04/2006 Visto do orientador:
-
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 co-
orientao 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 com-posed 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.
-
i
Sumrio
1. Introduo .........................................................................................................................1
1.1 Motivao e objetivos.............................................................................................1
1.2 Organizao dos captulos ......................................................................................4
2. 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 Componentes de um algoritmo de escalonamento ...................................11
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 Exemplos de ndices de Carga .................................................................22
2.8 Consideraes finais .............................................................................................26
3. 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
4. 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
5. Anlise de comportamento dos ndices de carga ............................................................49
5.1 Consideraes iniciais ..........................................................................................49
-
ii
5.2 Monitoramento da execuo de uma carga de trabalho ....................................... 49
5.2.1 Descrio das aplicaes.......................................................................... 50
5.2.2 Submisso das aplicaes ........................................................................ 52
5.3 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
5.4 Consideraes finais............................................................................................. 83
6. Concluso ....................................................................................................................... 87
6.1 Ponderaes finais da dissertao ........................................................................ 87
6.2 Contribuies ....................................................................................................... 89
6.3 Sugestes para trabalhos futuros .......................................................................... 91
7. Referncias bibliogrficas .............................................................................................. 93
-
iii
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
-
v
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
-
vii
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
-
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,
-
2
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
-
3
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
-
4
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
-
5
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.
-
8
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 pode-
se 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
1 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.
-
9
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/O-
bound, 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 CPU-
bound durante uma ou mais fases e I/O-bound em outras fases da execuo.
Na literatura encontram-se afirmaes que confirmam a 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 memory-
intensive, 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).
2 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 1
ndice 2 Memria ocupada MB 1
ndice 3 Cache e buffers MB 2
ndice 4 Memria ativa MB 1
ndice 5 Memria inativa MB 2
ndice 6 Swap usado MB 1
ndice 7 Swap cache MB 0
ndice 8 Page stealing Pginas por segundo 1
ndice 9 Pginas alocadas Pginas por segundo 1
ndice 10 Ausncias Menores Ausncias por segundo 1
ndice 11 Ausncias Maiores Ausncias por segundo 1
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 /proc/stat CPU 220 236 245 161347 1018 0 8 cpu0 220 236 245 161347 1018 0 8 0 intr 415799 407667 10 0 0 0 0 3 0 4 1 0 0 110 0 40 0 5033 2931 ...
ctxt 140868 btime 1133036288 processes 4601 procs_running 1 procs_blocked 0
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 a