| Red Hat Enterprise Linux 4: Introdução à Administração de Sistemas | ||
|---|---|---|
| Anterior | Capítulo 4. Memória Física e Virtual | Próxima |
Devido à complexidade inerente de um sistema operacional com memória virtual de páginas sob demanda, monitorar os recursos relacionados à memória sob o Red Hat Enterprise Linux pode ser confuso. Consequentemente, é melhor começar pelas ferramentas mais simples e seguir adiante.
Usando o free, é possível obter uma visão geral concisa (e de certa maneira simplista) da utilização da memória e de swap. Veja aqui um exemplo:
total used free shared buffers cached
Mem: 1288720 361448 927272 0 27844 187632
-/+ buffers/cache: 145972 1142748
Swap: 522104 0 522104
|
Nós percebemos que este sistema tem 1.2GB de RAM, dos quais somente 350MB estão em uso. Como esperado num sistema com tanta memória RAM livre, nenhuma das partições swap de 500MB está em uso.
Contraste aquele exemplo com esse:
total used free shared buffers cached
Mem: 255088 246604 8484 0 6492 111320
-/+ buffers/cache: 128792 126296
Swap: 530136 111308 418828
|
Esse sistema tem em torno de 256MB de RAM e a maioria está em uso, deixando apenas 8MB livres. Mais de 100MB da partição swap de 500MB estão em uso. Apesar desse sistema ser mais limitado que o primeiro em termos de memória, temos que investigar um pouco mais para saber se esta limitação de memória está causando problemas de desempenho.
Apesar de ser mais secreto que o free, o vmstat tem o benefício de apresentar mais que apenas estatísticas de utilização da memória. Aqui está o output de vmstat 1 10:
procs memory swap io system cpu
r b w swpd free buff cache si so bi bo in cs us sy id
2 0 0 111304 9728 7036 107204 0 0 6 10 120 24 10 2 89
2 0 0 111304 9728 7036 107204 0 0 0 0 526 1653 96 4 0
1 0 0 111304 9616 7036 107204 0 0 0 0 552 2219 94 5 1
1 0 0 111304 9616 7036 107204 0 0 0 0 624 699 98 2 0
2 0 0 111304 9616 7052 107204 0 0 0 48 603 1466 95 5 0
3 0 0 111304 9620 7052 107204 0 0 0 0 768 932 90 4 6
3 0 0 111304 9440 7076 107360 92 0 244 0 820 1230 85 9 6
2 0 0 111304 9276 7076 107368 0 0 0 0 832 1060 87 6 7
3 0 0 111304 9624 7092 107372 0 0 16 0 813 1655 93 5 2
2 0 2 111304 9624 7108 107372 0 0 0 972 1189 1165 68 9 23
|
Durante essa amostra de 10 segundos, a quantidade de memória livre (o campo free) varia ligeiramente, e há um pouco de I/O relacionada a swap (os campos si e so), mas, no geral, esse sistema está funcionando bem. No entanto, é duvidoso o quanto de trabalho adicional pode suportar, dada a utilização de memória corrente.
Quando pesquisamos questões relativas à memória, frequentemente é necessário determinar como o sub-sistema de memória virtual do Red Hat Enterprise Linux está usando a memória do sistema. Ao usar o sar, é possível examinar o aspecto do desempenho do sistema em mais detalhes.
Ao rever o relatório do sar -r, podemos examinar a utilização da memória e de swap mais de perto:
Linux 2.4.20-1.1931.2.231.2.10.ent (pigdog.example.com) 07/22/2003
12:00:01 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached
12:10:00 AM 240468 1048252 81.34 0 133724 485772
12:20:00 AM 240508 1048212 81.34 0 134172 485600
…
08:40:00 PM 934132 354588 27.51 0 26080 185364
Average: 324346 964374 74.83 0 96072 467559
|
Os campos kbmemfree e kbmemused exibem as estatísticas típicas de memória usada e memória livre, com a porcentagem de memória utilizada exibida no campo %memused. Os campos kbbuffers e kbcached mostram quantos kilobytes de memória estão alocadas para buffers e para o cache de dados do sistema todo.
O campo kbmemshrd é sempre zero para sistemas usando o kernel 2.4 do Linux (como o Red Hat Enterprise Linux).
As linhas deste relatório foram quebradas para caber na página. Aqui está o restante de cada linha, com o timestamp adicionado à esquerda para facilitar a leitura:
12:00:01 AM kbswpfree kbswpused %swpused
12:10:00 AM 522104 0 0.00
12:20:00 AM 522104 0 0.00
…
08:40:00 PM 522104 0 0.00
Average: 522104 0 0.00
|
Para a utilização da memória swap, os campos kbswpfree e kbswpused exibem as quantidades de swap livre e de espaço swap usado, em kilobytes, com o campo %swpused exibindo o espaço swap utilizado em porcentagem.
Para aprender mais sobre a atividade de swapping ocorrendo, use o relatório sar -W. Aqui está um exemplo:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM pswpin/s pswpout/s
12:10:01 AM 0.15 2.56
12:20:00 AM 0.00 0.00
…
03:30:01 PM 0.42 2.56
Average: 0.11 0.37
|
Percebemos aqui que, em média, houve três vezes menos páginas trazidas de swap (pswpin/s) que páginas indo para swap (pswpout/s).
Para entender melhor como as páginas estão sendo usadas, consulte o relatório sar -B:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM pgpgin/s pgpgout/s activepg inadtypg inaclnpg inatarpg
12:10:00 AM 0.03 8.61 195393 20654 30352 49279
12:20:00 AM 0.01 7.51 195385 20655 30336 49275
…
08:40:00 PM 0.00 7.79 71236 1371 6760 15873
Average: 201.54 201.54 169367 18999 35146 44702
|
Aqui podemos determinar quantos blocos por segundo são paginados do (paged in) disco (pgpgin/s) e paginados para o (paged out) disco (pgpgout/s). Estas estatísticas servem como um barômetro da atividade geral da memória virtual.
Entretanto, pode-se obter mais conhecimento ao examinar os outros campos deste relatório. O kernel do Red Hat Enterprise Linux marca todas as páginas como ativas ou inativas. Como o nome implica, as páginas ativas estão em uso corrente de alguma forma (como processos ou páginas de buffer, por exemplo), enquanto as páginas inativas não estão. Este relatório-exemplo mostra que a lista de páginas ativas (o campo activepg) tem, em média, aproximadamente 660MB[1].
Os campos restantes deste relatório concentram-se na lista inativa — páginas que, por alguma razão, não foram utilizadas recentemente. O campo inadtypg mostra quantas páginas inativas estão sujas (alteradas) e talvez precisem ser gravadas no disco. O campo inaclnpg, por outro lado, mostra quantas páginas inativas estão limpas (inalteradas) e não precisam ser gravadas no disco.
O campo inatarpg representa o tamanho desejado da lista inativa. Esse valor é calculado pelo kernel do Linux e é dimensionado de tal forma que a lista inativa continua grande o suficiente para atuar como um pool de substituição de páginas.
Para mais dicas sobre o status de páginas (especificamente, a frequência de alteração de status), use o relatório sar -R. Aqui está uma amostra:
Linux 2.4.20-1.1931.2.231.2.10.entsmp (raptor.example.com) 07/22/2003
12:00:01 AM frmpg/s shmpg/s bufpg/s campg/s
12:10:00 AM -0.10 0.00 0.12 -0.07
12:20:00 AM 0.02 0.00 0.19 -0.07
…
08:50:01 PM -3.19 0.00 0.46 0.81
Average: 0.01 0.00 -0.00 -0.00
|
As estatísticas deste relatório sar específico são únicas, pois podem ser positivas, negativas ou zero. Quando positivas, o valor indica a frequência com a qual as páginas desse tipo estão aumentando. Quando negativas, o valor indica a frequência com a qual as páginas desse tipo estão diminuindo. O valor zero indica que páginas desse tipo não estão aumentando nem diminuindo.
Nesse exemplo, a última amostra exibe um pouco mais de três páginas por segundo sendo alocadas da lista de páginas livres (o campo frmpg/s) e aproximadamente uma página por segundo sendo adicionada ao cache de páginas (o campo campg/s). A lista de páginas usadas como buffers (o campo bufpg/s) ganhou aproximadamente uma página a cada dois segundos, enquanto a lista de páginas da memória compartilhada (o campo shmpg/s) não ganhou nem perdeu páginas.
| [1] | O tamanho de página sob o Red Hat Enterprise Linux no sistema x86 usado neste exemplo é 4096 bytes. Sistemas baseados em outras arquiteturas podem ter tamanhos de página diferentes. |