O que está usando meu swap (Ubuntu)?

28

Eu tenho um servidor Ubuntu 8.04 que está executando um banco de dados e um monte de servidores de aplicativos Java. Sua configuração e uso de memória é:

             total       used       free     shared    buffers     cached
Mem:      16456176   15930028     526148          0      81372    9674196
-/+ buffers/cache:    6174460   10281716
Swap:      1951888     366100    1585788

Eu notei que a troca acontece todas as tardes e é liberada algum tempo durante a noite. A demanda não é a mesma em todos os dias e começa em momentos diferentes. Então, é bastante aleatório, exceto pelo confuso limite "tarde-noite".

A carga nesta máquina varia durante o dia. É muito baixo entre a meia-noite e as 6h e as 7h da manhã, muito mais alto (mas estável) até às 6-8 da noite, depois caindo gradualmente.

Agora tenho as seguintes perguntas:

  1. Como posso ver quais processos estão usando swap?
  2. Por que prefere trocar em vez de tirar alguma memória do cache?
por Konrad Garus 02.11.2010 / 22:18

4 respostas

25

Os padrões de uso de swap que você descreve não parecem surpreendentes. Eles são consistentes com alguns processos de execução permanente que possuem páginas raramente usadas. Durante o dia, devido à alta atividade, as páginas raramente usadas estão quase sempre no swap. À noite, há mais espaço para eles na RAM.

Você pode ter um vislumbre da quantidade de memória de vários tipos que cada processo está usando em top ou htop . Nem mostrar o uso de swap por padrão, mas ambos podem ser configurados para (top: pressione f e ative a coluna SWAP ; htop: pressione F2 , adicione a coluna NSWAP ). Você pode obter mais informações sobre um processo específico com cat /proc/12345/vmstat , em que 12345 é o ID do processo. Note que “quanto swap um programa está usando” não está completamente bem definido, já que algumas páginas são compartilhadas por vários processos.

Existem dois tipos principais de concorrentes para RAM: memória de processo (que pode ser trocada) e caches de disco (que podem ser relidos a partir de um arquivo). Não há razão para sempre priorizar a memória de processo sobre caches de disco: é melhor trocar uma parte raramente usada da memória de processo do que continuar lendo um arquivo na memória novamente. As figuras que você dá, com cerca de metade (digamos, 30% -70%) da memória dedicada aos caches de disco, são típicas de sistemas que têm uma quantidade razoável de RAM para as tarefas que deveriam fazer.

    
por 03.11.2010 / 00:02
0

No StackOverflow, já existe uma excelente resposta em sua primeira pergunta ("Qual processo está realmente usando swap?").

link

Em poucas palavras, ferramentas como top ou htop não fornecem informações precisas sobre o uso de swap. Você deve mergulhar na pasta /proc (no pseudo arquivo /proc/$PID/smaps ) para obter informações mais precisas.

A postagem mencionada acima contém um breve script de shell para que essas informações sejam reproduzidas de uma maneira interessante.

    
por 17.12.2013 / 12:15
0

Com htop v1.01 , pressionei "S" para adicionar a coluna NSWAP em vez de "F2" (como sugerido por Gilles), então Columns > Available Columns > e F5 para adicioná-lo.

    
por 02.11.2017 / 10:29
0

Sem pesquisar e analisar os resultados de ferramentas como vmstat , free e top , o melhor lugar para procurar pode ser crontabs do usuário raiz ou de outros usuários no sistema. Se a carga geral no sistema aumentar de forma confiável em um determinado momento, é provável que haja um processo no cron que crie a necessidade de recursos. Caso contrário, você sempre pode criar um utilitário de logging descartável do gueto com o utilitário script , que registra apenas tudo o que vai para o STDOUT.

Então, se eu precisasse fazer um script descartável para capturar a saída para inspeção posterior, em um terminal eu digitaria:

script /tmp/free.txt

e depois

while (true); do date; free; sleep 30; done

e em outro terminal

script /tmp/top.txt

e depois

while (true); do date; top -n 1; sleep 30; done

e, na manhã seguinte, mate as invocações de script e corresponda à saída de top e free

mais uma vez, essa é uma abordagem de gueto, mas parece que você só precisa de uma única

você também pode gostar de ler o guia de troca do ubuntu

    
por 02.11.2010 / 23:10