sistemas distribuidos

116
Avaliação de índices de carga de memória em sistemas computacionais distribuídos William Voorsluys

Upload: nego-lima-gosto-muito

Post on 24-Sep-2015

30 views

Category:

Documents


0 download

DESCRIPTION

Sistemas distibuidos e memória virtual

TRANSCRIPT

  • 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