Você está na página 1de 10

26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.

br

mariano.eng.br
Projetos Contato Sobre Posts

P O S TS

Gerenciamento de
memória swap no sistema
operacional Linux
B y F e r n ando Maria n o

Octob e r 1 6 , 2 0 1 4 - 8 mi n u t e s r e a d - 1 639 w o r d s

A memória swap ou memória virtual é de uso secundário e provê recursos


extras para armazenamento de cache para a memória principal/física (RAM).
Seu uso em excesso não é recomendável, pois com certeza seu serviço ou
aplicação irá demonstrar lentidão para o usuário final.

Para um definição mais completa e como funciona a memória swap leia esta
referência na Wikipédia.

Neste artigo irei abordar algumas dicas rápidas de como gerenciar a


memória swap e acompanhar o seu uso:

#1 Como adicionar memória swap em


servidores em nuvem em arquivo

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 1/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

Alguns servidores virtuais em nuvem, mais conhecidos como VPS (Virtual


Private Network) com baixos recursos de hardware oferecem um número
muito limitado de memória RAM e swap. Dependendo do seu uso você não
precisa de uma instância maior e gostaria apenas de adicionar mais
memória swap.

Uma forma paliativa é adicionar memória swap por meio de um arquivo do


sistema operacional. Na prática você gera um arquivo na partição ext3 ou
ext4, por exemplo, com o comando dd, configura as permissões necessárias
para garantir acesso restrito ao usuário root e depois formata o arquivo com
o sistema de arquivos “swap” e ativa-o no boot do sistema operacional.

Ao reiniciar o servidor a memória swap já estará disponível para uso.

# gera o arquivo com tamanho de 1 GB (1 MB \* 1024)

dd if=/dev/zero of=/swapfile bs=1M count=1024

# configura o dono do arquivo para o usuário root

chown root /swapfile

# garante permissão somente para o owner da memória swap

chmod 600 /swapfile

# formata o arquivo como uma partição swap

mkswap /swapfile

# ativa a memória swap


swapon /swapfile

# adicionar no fstab a partição swap para que seja montada no boot do sistema operaci

cat >> /etc/fstab

/swapfile swap swap defaults 0 0


# reiniciar o servidor para validar as configurações

shutdown -r now

Por exemplo, as instâncias menores da Amazon EC2 e Digital Ocean não


possuem memória swap configurada por padrão. Veja abaixo:

Digital Ocean

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 2/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

root@test:~# free -m
total used free shared buffers cached

Mem: 490 220 269 0 23 158

-/+ buffers/cache: 38 451

Swap: 0 0 0

Amazon EC2

ubuntu@ip-172-30-0-84:~$ free -m

total used free shared buffers cached

Mem: 992 245 746 0 8 185

-/+ buffers/cache: 51 940

Swap: 0 0 0

#2 Verificar uso de memória swap de um


sistema operacional Linux
Os comandos abaixo tem utilidades além das demonstradas abaixo, pois o
foco do artigo é demonstrar algumas dicas de gerenciamento de memória
swap no Linux.

Visualização da swap em tempo real

Comando vmstat

É utilizado para visualização de dados sobre o uso de memória virtual com


informações sobre atividade de CPU, discos, IO de disco, paginação e etc.

O parâmetro 1 significa que a cada um segundo será impresso no console


novas informações das estatísticas obtidas pelo comando vmstat. O
importante é observar a coluna swap, que mostra os valores de si (total de

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 3/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

memória trocados a partir do disco) e so (total de memória trocados para o


disco) por segundo.

A primeira linha da saída do comando vmstat exibe uma média das


estatísticas obtidas desde o boot do sistema operacional, por isso
deve apresentar variações em relações as demais linhas.

Exemplo de um sistema operacional Ubuntu sem uso de memória swap:

mariano@piracaia:~$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

1 0 0 5777144 447092 1780860 0 0 39 39 92 527 6 2 90 2 0

0 0 0 5776888 447092 1780852 0 0 4 0 340 1774 2 1 98 0 0

0 0 0 5775336 447100 1780848 0 0 0 188 354 1910 2 1 96 0 0

0 0 0 5775336 447100 1780856 0 0 0 0 296 1804 1 1 98 0 0

 Comando free

mariano@piracaia:~$ free -m

total used free shared buffers cached

Mem: 11964 5901 6062 81 432 1696

-/+ buffers/cache: 3772 8191


Swap: 0 0 0

O comando free -m também mostra o total de memória swap.  A última linha


exibe o total de memória swap, a quantidade usada e a quantidade livre.
Apara acompanhar o uso de memória durante o troubleshooting de um
determinado problema você pode combinar o comando free com o
comando watch. O watch fará com que a saída do comando free seja
repetida em um determinado intervalo de tempo, fazendo com que a
impressão seja de monitoração em tempo real do uso de memória RAM e
swap.
https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 4/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

Experimente o comando watch -n 1 free -m ao ligar um máquina virtual para


acompanhar o uso de memória RAM em tempo real na máquina física.

Comando top e htop

O comando top e htop é mais útil para descobrir qual o processo que está
consumindo mais memória no sistema operacional. A melhor forma para
descobrir é ordenar a coluna de uso de memória por ordem decrescente,
assim fica fácil a identificação do processo.

No top o comando para alterar a coluna de ordenação é a combinação das


teclas ctrl + > ou ctrl + <, e a alteração entre ordem crescente ou
decrescente é a letra R (maiúsculo).

No htop os comandos são parecidos, para escolher a coluna de ordenação


digite ctrl + > ou ctrl + < e um menu à esquerda irá surgir para selecionar
por qual valor será realizada a ordenação. A ordenação crescente ou
decrescente no htop é realizada pela letra I (i maiúsculo).

Verificação do histórico da swap no Linux

Nem só na linha de comando é possível acompanhar o uso de memória


RAM e swap no Linux. Existem diversos aplicativos para visualização de
acompanhamento de performance gráficos de uso de recursos de hardware.

Applet Ubuntu indicator-multiload - para visualização no painel superior


do Ubuntu na interface gráfica do Unity. A instalação é feita pelo comando:

aptitude install indicator-multiload

E para realizar a configuração do aplicativo e mantê-lo na visualização do


desktop ao lado do relógio da interface Unity, vá na busca do Dash e procure
pelo System Load Indicator. Na figura abaixo é apresentada o uso de CPU,
memória RAM, swap e load avarage do meu desktop Ubuntu.

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 5/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

Monitoração gráfica de uso de hardware no Linux / Ubuntu

Monitor de hardware nativo do Ubuntu - este aplicativo já vem instalado


por padrão nas distribuições Ubuntu. Para visualizar o uso de recursos em
gráficos procure pelo System Monitor na busca do Dash.

Monitoração gráfica de uso de hardware no Linux / Ubuntu

Voltando para a linha de comando é possível verificar o histórico de uso de


memória swap através do comando sysstat.

O comando sar aceita o parâmetro S para visualização do uso de memória


swap, porém o sar/sysstat é muito mais completo e mais opções de uso
podem ser conferidas neste artigo sobre monitoração de performance via
linha de comando com o sysstat e sar. O sysstat não costuma vir instalado
nas distribuições do Ubuntu/Debian, por isso talvez seja necessária sua

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 6/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

instalação. No artigo mencionado anteriormente há os passos necessários


para a instalação e ativação.

Um exemplo da visualização da memória swap do dia corrente desde que o


computador foi ligado e com marcações quando é reiniciado:

mariano@piracaia:~$ sar -S

Linux 3.13.0-32-generic (piracaia) 27-09-2014 _x86_64_ (8 CPU)

00:00:01 kbswpfree kbswpused %swpused kbswpcad %swpcad

00:05:01 0 0 0,00 0 0,00

00:15:01 0 0 0,00 0 0,00

Average: 0 0 0,00 0 0,00

13:25:56 LINUX RESTART

13:35:01 kbswpfree kbswpused %swpused kbswpcad %swpcad

13:45:01 0 0 0,00 0 0,00

13:55:01 0 0 0,00 0 0,00


14:05:01 0 0 0,00 0 0,00

14:15:01 0 0 0,00 0 0,00

14:25:01 0 0 0,00 0 0,00


14:35:01 0 0 0,00 0 0,00

14:45:01 0 0 0,00 0 0,00


14:55:01 0 0 0,00 0 0,00

Average: 0 0 0,00 0 0,00

Outro exemplo da visualização do uso de memória swap no Linux em um dia


determinado é especificado através do parâmetro -f do comando sar:

mariano@piracaia:~$ sar -S -f /var/log/sysstat/sa25

Linux 3.13.0-32-generic (piracaia) 25-09-2014 _x86_64_ (8 CPU)

21:05:25 LINUX RESTART

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 7/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

21:15:01 kbswpfree kbswpused %swpused kbswpcad %swpcad


21:25:01 0 0 0,00 0 0,00

21:35:01 0 0 0,00 0 0,00

21:45:01 0 0 0,00 0 0,00

21:55:01 0 0 0,00 0 0,00

22:05:01 0 0 0,00 0 0,00

22:15:01 0 0 0,00 0 0,00

22:25:01 0 0 0,00 0 0,00

22:35:01 0 0 0,00 0 0,00

22:45:01 0 0 0,00 0 0,00


22:55:01 0 0 0,00 0 0,00

23:05:01 0 0 0,00 0 0,00

23:15:01 0 0 0,00 0 0,00

23:25:01 0 0 0,00 0 0,00

Average: 0 0 0,00 0 0,00

#3 Limpar memória swap do servidor


Você já deve ter notado depois que o servidor ou estação de trabalho iniciou
o uso da memória swap, até mesmo após reiniciar o serviço ou matar o
processo/aplicação que fazia um uso excessivo de memória, o uso de swap
ainda continua e mesmo após minutos ou horas a memória virtual nunca é
zerada.

Existe um workaround ou medida paliativa que irá forçar a retirada do


conteúdo da memória swap (em disco) para a memória física (RAM) sem
que seja necessário reiniciar o servidor. Os comando swapon e swapoff
fazem esta tarefa.

Veja um exemplo onde o processo do apache2 está consumindo recursos


excessivos de memória RAM e mesmo após pará-lo ainda o uso de swap
continuava.

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 8/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

/etc/init.d/apache2 restart && swapoff -a && swapon -a

O uso do “&&” garante que os comandos só serão executados se o anterior


for executado com sucesso. É importante verificar se a memória RAM possui
espaço suficiente para abrigar o conteúdo da memória virtual. E lembre-se,
este procedimento é apenas um solução de contorno, pois o ideal é que
você analise o motivo do uso excessivo de memória e caso sua aplicação
esteja funcionando normalmente, ou seja, não existe nada de errado ou bug,
pense na compra de mais memória RAM ou aumento dos recursos de
memória física da máquina virtual.

atop

comando

htop

os-linux

monitoracao

top

virtualizacao

Relacionado

Como monitorar o sistema operacional Linux pela linha de comando - 2

Análise e monitoração de performance em um sistema operacional Linux


Como monitorar o sistema operacional Linux pela linha de comando - 1
Como resolver: No such file or directory - Arquivo ou diretório não encontrado
VPS Digital Ocean: primeiros passos com hospedagem Linux

Corrija o erro Cannot set LC_ALL to default locale no Ubuntu

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 9/10
26/05/2023, 12:58 Gerenciamento de memória swap no sistema operacional Linux | mariano.eng.br

https://mariano.eng.br/gerenciamento-memoria-swap-no-linux/ 10/10

Você também pode gostar