Usuários novatos em linux muitas vezes acham memória virtual misterioso, mas com um aperto dos conceitos fundamentais, é fácil de entender. Com este conhecimento, você pode monitorar a utilização do seu sistema de memória usando vmstat e detectar problemas que podem afetar negativamente o desempenho do sistema.


Como funciona a memória virtual


A memória RAM instalada é um recurso finito em qualquer sistema. O manipulador de memória Linux gerencia a alocação desse recurso limitado, liberando porções de memória física quando possível, dependendo da demanda do usuário que estará utilizando o sistema operacional. Todos os processos de uso de memória, é claro, mas cada processo não precisa de toda a memória alocada o tempo todo, dependendo da política de substituição de processos adotado por cada gerenciamento de processos, fará a troca de processos conforme necessário, aproveitando este fato, o kernel libera memória física até escrevendo algumas ou todas da memória de um processo para o disco até que seja necessário novamente.

O kernel usa paginação e swapping para realizar esse gerenciamento de memória.Paginação refere-se a porções de escrita, denominado páginas, da memória de um processo para o disco. Troca, a rigor, refere-se a escrever todo o processo, não apenas parte para o disco. No Linux verdadeira troca é extremamente rara, mas a paginação termos e trocando muitas vezes são usados indistintamente. Quando as páginas são gravadas no disco, o evento é chamado de uma página fora, e quando as páginas são devolvidos à memória física, o evento é chamado de página-in.Uma falha de página ocorre quando o kernel precisa de uma página, encontra ela não existe na memória física, porque foi paginada-out, e re-lê-lo do disco.

Page-ins são comuns, normais e não são motivo de preocupação. Por exemplo, quando uma primeira aplicação se inicia, a sua imagem executável e os dados são paginada-in, esse é um comportamento normal. Page-outs no entanto, pode ser um sinal de problemas. Quando o kernel detecta que a memória está fraca, ele tenta liberar memória por paginação para fora. Embora isso possa acontecer brevemente, de tempos em tempos, se a página-outs são abundantes e constantes, o kernel pode chegar a um ponto onde é realmente gastando mais tempo gerenciando a atividade de paginação do que correr as aplicações, e o desempenho do sistema sofre este estado lamentável é referido como goleada.

Usando o espaço swap não é inerentemente mau. Pelo contrário, é intensa a atividade de paginação que é problemático. Por exemplo, se sua aplicação mais memória intensiva está ocioso, ele é bom para partes dele para ser posta de lado quando um outro trabalho grande está ativo. Páginas de memória pertencentes a uma aplicação ociosa são melhores reservado para o kernel pode usar a memória física para o buffer de disco.


Usando vmstat


O vmstat, como seu nome sugere são relatórios de estatísticas de memória virtual. Isso mostra o quanto de memória virtual não existe, quanto é livre e atividade de paginação. Mais importante, você pode observar-ins página e página-outs como eles acontecem e isto é considerado extremamente útil. Para monitorar a atividade de memória virtual em seu sistema, é melhor usar o vmstat com um atraso. Um atraso é o número de segundos entre as atualizações. Se você não fornecer um atraso, vmstat relatórios das médias desde a última inicialização e saia, cinco segundos é o intervalo de atraso recomendado.

Para executar vmstat com um atraso de cinco segundos, digite:
vmstat 5

Você também pode especificar uma contagem, o que indica quantas atualizações você quiser ver antes vmstat é encerrado. Se você não especificar uma contagem, os padrões de contagem ao infinito, mas você pode parar de saída com Ctrl-C.

Para executar vmstat com dez atualizações, cinco segundos de diferença, tipo:
vmstat 5 10

Aqui está um exemplo de um sistema livre de atividade de paginação:
   memória swap procs io sistema de cpu
 rbw swpd livre buff cache para si bi bo no cs nos sy id
 0 0 0 29232 116972 4524 244900 0 0 0 0 0 0 0 0 0
 0 0 0 29232 116972 4524 244900 0 0 0 0 2560 6 0 1 99
 0 0 0 29232 116972 4524 244900 0 0 0 0 2574 10 0 2 98


Todos os campos são explicados na página man vmstat, mas as colunas mais importantes para este artigo são si, livre e assim. A coluna livre mostra a quantidade de memória livre, si página mostra-ins e assim por página mostra-outs. Neste exemplo, a coluna de modo consistente é zero, indicando que não há saídas página.
As abreviaturas assim e si são usadas em vez do po mais precisos e pi por razões históricas.
Aqui está um exemplo de um sistema com a atividade de paginação:
   memória swap procs io sistema de cpu
 rbw swpd livre buff cache para si bi bo no cs nos sy id
 .  .  .
 1 0 0 13344 1444 1308 19692 0 168 129 42 1505 713 20 11 69
 1 0 0 13856 1640 1308 18524 64 516 379 129 4341 646 24 34 42
 3 0 0 13856 1084 1308 18316 56 64 14 0 320 1022 84 9 8


Observe os valores diferentes de zero, indicando assim que não há memória física suficiente eo kernel está fora de paginação. Você pode usar top e ps para identificar os processos que estão utilizando mais memória.
Você também pode usar top para mostrar memória e estatísticas swap. Aqui está um exemplo da parte superior de um relatório típico top:
 14:23:19 até 348 dias, 03:02, 1 usuário, load average: 0,00, 0,00, 0,00
 55 processos: 54 para dormir, um correr, 0 zumbi, 0 parou
 CPU estados: 0,0% de utilizador, sistema de 2,4%, 0,0% bom, 97,6% idle
 Mem: 481076K total, 367508K usado, 113568K livre, buffers 4712K
 Swap: total 1004052K, 29852K usado, 974200K livre, cache 244396K