Gerenciamento e otimização da memória no Linux

Atualmente, a maioria dos servidores de produção é executada em Linux - seja Debian, Ubuntu ou Centos - graças à versatilidade do sistema operacional e ao fato de ser de uso gratuito. O Linux tem uma ampla gama de ferramentas para oferecer suporte, gerenciar, monitorar e implementar aplicações de software.

Os serviços e recursos adicionados à aplicação do produto podem consumir uma quantidade considerável de memória. A otimização da memória para servidores Linux não só faz com que as aplicações sejam executadas de forma mais suave e rápida, mas também reduz o risco de perda de dados e falhas no servidor. Neste artigo, abordaremos algumas maneiras de otimizar a memória no Linux.

Para otimizar a memória para máquinas Linux, primeiro precisamos entender como a memória funciona no Linux. Começaremos com alguns termos de memória, discutiremos como o Linux lida com a memória e, em seguida, aprenderemos a solucionar problemas e evitar problemas de memória.

Quantidade de memória

A quantidade total de memória que uma máquina pode conter é baseada na arquitetura do sistema operacional. Por exemplo, um sistema operacional com arquitetura de 32 bits pode suportar apenas 4 GB de memória, enquanto um sistema de 64 bits pode suportar cerca de 128 GB (teoricamente, poderia suportar até 16 GB se os recursos de hardware fossem aprimorados).

Memória virtual

Toda a memória no Linux é chamada de memória virtual - ela inclui a memória física (geralmente chamada de RAM) e o espaço de troca. A memória física de um sistema não pode ser aumentada a menos que adicionemos mais RAM. Entretanto, a memória virtual pode ser aumentada usando o espaço de troca do disco rígido.

Memória física

A RAM determina se seu computador pode lidar com processos que consomem muita memória. Por exemplo, precisaremos de pelo menos 1 GB de RAM para 1.000 ativos usando o MongoDB em um servidor de produção. Para garantir o desempenho satisfatório do servidor, a memória física deve exceder o que o banco de dados precisa - caso contrário, o MongoDB começará a usar a memória swap, reduzindo o desempenho do sistema. A razão por trás disso é que a memória física pode ser acessada em nanossegundos, mas a memória swap somente em milissegundos.

Memória swap

Normalmente, a memória física se encarrega de armazenar dados para todos os processos do computador. Mas o que acontece quando a memória física está cheia? É nesse momento que a memória swap entra em ação.

Quando o sistema estiver cheio, as páginas inativas na memória serão movidas para a memória swap, que consiste em uma partição de troca, um arquivo de troca ou ambos. Uma partição swap é uma partição de disco, enquanto um arquivo de troca é um sistema de arquivos. O uso de uma ou de outra se resume à preferência, pois ambas são opções válidas.

Memória de disco

A memória de disco, ou memória do disco rígido, geralmente é maior do que a memória física. Durante a computação, os dados das tarefas em execução no momento são armazenados na RAM; se o computador ficar sem energia, esses dados desaparecem. É por isso que é importante salvar seu trabalho com frequência - a memória de disco salva os dados persistentes.

O fluxo de utilização da memória no Linux

Abaixo está um diagrama de fluxo que demonstra como os dados são processados no Linux.

Os dados do usuário, dos processos do computador e do HDD são enviados para a RAM. Se necessário, a RAM os armazenará e os enviará de volta ao usuário ou ao HDD. Se os dados precisarem ser persistentes, a RAM os enviará para a CPU.

Comandos para gerenciar a memória do Linux

Para detectar problemas de memória e otimizar a memória no Linux, precisaremos de uma das várias ferramentas.

Detectar hardware na máquina

Os problemas de hardware podem afetar diretamente a otimização da memória. Digamos, por exemplo, que seu site esteja sendo executado com lentidão e que um programa local tenha ficado lento. Para verificar se isso se deve a um problema de RAM, você precisará remover os módulos de RAM e testá-los para determinar qual deles é o culpado.

dmidecode pode ajudar a recuperar informações de hardware do sistema durante a verificação de problemas de hardware. A ferramenta dmidecode ajuda a exibir o BIOS de gerenciamento do sistema no conteúdo da tabela.

Por exemplo, execute

dmidecode

Isso mostrará as informações abaixo sobre a memória.

Verificar o espaço livre disponível

A falta de espaço livre suficiente para executar tarefas é um dos motivos mais comuns para a lentidão do computador. Para verificar o espaço livre disponível em sua máquina, você pode usar o comando free.

free -g

Isso mostrará o espaço livre da memória em GB.

Fig. 3: Informações sobre espaço de memória livre na máquina Fig. 3: Informações sobre espaço de memória livre na máquina
Fig. 2: dmidecode exibe informações sobre o hardware do sistema Fig. 2: dmidecode exibe informações sobre o hardware do sistema

Verifique o uso da CPU e da memória

Há várias ferramentas de linha de comando para verificar o uso da CPU e da memória, incluindo htop, vmstat, e ps.

O htop exibe informações em tempo real sobre os processos da CPU.

Fig. 4: htop mostrando informações em tempo real sobre os processos em execução atuais Fig. 4: htop mostrando informações em tempo real sobre os processos em execução atuais

O vmstat mostra informações sobre a CPU, a memória, os processos do sistema, a paginação, as interrupções e o agendamento da CPU.

Por exemplo, execute

vmstat -a -S M

Isso mostrará informações sobre a memória em MB.

Fig. 5: Informações de memória em MB Fig. 5: Informações de memória em MB

O ps nos fornece informações sobre os processos em execução no Linux.

Por exemplo, ps -aux mostra todos os processos em execução.

Fig. 5: Informações de memória em MB Fig. 5: Informações de memória em MB

Práticas recomendadas e etapas futuras

A otimização da memória no Linux é uma tarefa complexa, e consertar uma memória sobrecarregada exige um esforço significativo. Aqui estão algumas práticas recomendadas que podem ajudar a evitar a ocorrência de problemas de memória.

Criar uma partição swap

Crie uma partição de swap em seu servidor; ela pode ser usada como memória virtual para seu servidor. Na pior das hipóteses, quando a memória física estiver cheia, a memória pertencente aos processos inativos será movida para o espaço de troca, permitindo que os processos ativos vitais que precisam de memória continuem.

Criar um ramdisk

Um ramdisk é usado para armazenamento em cache de aplicações ou áreas de trabalho. É um espaço de armazenamento volátil definido dentro da RAM. O uso do ramdisk aumenta o desempenho do processamento de arquivos: Em comparação com as unidades de estado sólido (SSD), o ramdisk é mais de 50 vezes mais rápido. A criação de um ramdisk é benéfica quando você tem um servidor de aplicações que requer quantidades significativas de recursos de hardware para ser executado.

Proteger portas abertas

Para minimizar o risco de invasão, abra apenas as portas necessárias em um determinado momento. Além disso, limite as portas de acesso por meio de uma rede privada virtual.

Se você se deparar com um ataque de malware, como uma tentativa de mineração de criptomoedas, verifique novamente as portas de entrada e de saída e, mais uma vez, abra somente as portas necessárias. Em seguida, você precisa remover o crontab de suas instâncias, pois o malware criou o crontab para acionar os trabalhos de mineração.

Desligar ou interromper serviços que não estejam em uso

Para economizar memória, interrompa os serviços ou contêineres que não estiverem em uso. Por exemplo, ao implantar aplicações em um ambiente de controle de qualidade ou de desenvolvimento usando o Docker, é possível criar uma imagem do Docker, um volume e executar um contêiner do Docker para fins de teste. Eles podem ser limpos após a conclusão do teste.

Conclusão

A otimização da memória para seu dispositivo Linux economizará memória valiosa do armazenamento de dados em processos desnecessários ou do armazenamento em cache de dados não utilizados. Suas aplicações serão executadas de forma mais suave, reduzindo o risco de perda de dados ou de travamento do servidor. Isso, por sua vez, pode poupar a toda a equipe uma frustração considerável, além de tempo e dinheiro.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us