A memória virtual é uma daquelas coisas que sustentam os sistemas operacionais modernos, mas geralmente você não pensa sobre isso, a menos que tenha um problema. As distribuições do Linux solicitam que você configure seu espaço de memória virtual (partições de troca) durante a instalação, mas a maioria dos iniciantes não sabe como isso é útil.

Aqui está tudo o que você precisa saber sobre memória virtual no Linux.

O que é memória virtual?

A memória virtual é uma maneira de representar sua memória que é abstraída da memória física em sua máquina. Ele usa sua RAM e seu espaço de armazenamento, seja em um disco rígido tradicional ou em um SSD.

No Linux, isso é feito nos níveis de kernel e hardware. A CPU possui um hardware chamado Unidade de Gerenciamento de Memória (MMU) que converte endereços de memória física em endereços virtuais. Esses endereços são independentes de onde residem fisicamente na máquina. Esses espaços de endereço são conhecidos como "páginas" e podem estar na RAM ou no disco rígido ou SSD. O sistema operacional vê esses endereços como um grande conjunto de memória, conhecido como "espaço de endereço".

A memória virtual aproveita o fato de que nem toda a memória que está sendo usada em teoria está sendo usada o tempo todo. Os programas na memória são divididos em páginas e as partes que o kernel considera desnecessárias são "trocadas" ou movidas para o disco rígido. Quando são necessários, eles podem ser "trocados" ou trazidos de volta para a RAM.

O espaço usado para memória virtual em uma unidade é conhecido como "armazenamento de backup" ou "espaço de troca". No mundo Windows, é geralmente implementado como um arquivo, conhecido como "arquivo de troca". Também é possível fazer isso no Linux, mas é muito mais comum para use uma partição de disco dedicada.

Arquivos de troca no Linux geralmente são reservados para sistemas mínimos ou incorporados, e é comum que os últimos sejam executados completamente sem memória virtual porque os sistemas operacionais incorporados precisam ser pequenos.

O resultado da memória virtual é que é possível executar programas grandes usando mais memória do que a RAM física em sua máquina, semelhante a como um cartão de crédito permite fazer grandes compras por mais dinheiro do que você tem em seu banco conta. Assim como um cartão de crédito, a memória virtual é útil quando você precisa, mas não quer estender demais seu uso.

A memória virtual também permite que os desenvolvedores criem aplicativos sem precisar saber como a memória de um computador está organizada.

A principal desvantagem historicamente com a memória virtual é que os discos rígidos são mais lentos que a RAM. Se uma máquina não tiver memória RAM suficiente, o sistema pode continuar trocando páginas interminavelmente, um processo conhecido como "thrashing". Isto é menos um problema em PCs modernos com mais RAM e SSDs mais rápidos substituindo discos rígidos mecânicos, mas ainda é algo a ser observado do.

Trocar partições Linux

Como mencionado anteriormente, o método usual para configurar a memória virtual no Linux é usar uma partição de disco dedicada. O utilitário de instalação examinará seu hardware e proporá um esquema de particionamento que inclua uma partição swap.

Você também pode adicionar partições de troca após a instalação. Se você quiser adicionar uma nova partição a uma unidade existente, você terá que use uma ferramenta de particionamento não destrutivo como GParted. Certifique-se de ter selecionado "Linux swap" como o sistema de arquivos para sua partição.

Faça backup de dados importantes antes de reparticionar sua unidade.

Depois de criar sua partição, use o comando mkswap para formatar sua partição.

sudo mkswap /dev/sdX

Agora você terá que editar seu /etc/fstab como root para adicionar sua partição swap. Esta linha, adicionada ao arquivo, irá configurar uma partição swap para ser montada na inicialização:

/dev/sdX nenhum padrão de troca 0 0

Agora use o trocar comando para ativar seu novo espaço de troca, onde sdX é o nome da sua partição de troca:

sudo swapon /dev/sdX

Usando arquivos de troca no Linux

É fácil configurar um arquivo de troca no Linux usando a linha de comando. Você pode querer fazer isso se não quiser se preocupar em reparticionar sua unidade ou editar /etc/fstab. Um método é usar fallocate:

Por exemplo, para criar um arquivo de troca de 2 GB:

sudo fallocate -l 2G /path/to/swapfile

Como alternativa, você pode usar o comando dd para criar o arquivo de troca.

sudo dd E se=/dev/zero do=/path/para/trocar arquivo bs=1024 contagem =2048

Certifique-se de estar usando o comando dd corretamente, pois obter o arquivo de entrada e o arquivo de saída errado pode causar perda de dados. fallocate é o método preferido por esse motivo.

o /dev/zero device é um dispositivo especial que gera "0". O que esse comando dd faz é criar um arquivo de bloco de dois gigabytes em branco usando blocos de 1024 kilobytes adequados para uso como espaço de troca.

Você pode então usar o mkswap e trocar comandos com um arquivo de troca como faria com uma partição de troca:

sudo mkswap /path/to/swapfile
sudo swapon /path/to/swapfile

Você pode se perguntar quando deve usar um arquivo de troca ou uma partição dedicada para seu espaço de troca. A escolha é fácil: na maioria das circunstâncias, você deve usar uma partição. Esta é a melhor escolha para um desktop Linux ou um servidor. O esquema de partição sugerido pelo instalador geralmente é adequado em um desktop Linux de usuário único.

Você pode querer usar um arquivo de troca se estiver executando o Linux em uma máquina virtual, em um pequeno sistema incorporado ou simplesmente não quiser reparticionar seu sistema Linux existente.

Quanto espaço de troca?

Por muitos anos, o conselho padrão para quanto espaço de troca é necessário é o dobro da RAM física. Com as grandes unidades e quantidades de memória que até mesmo os PCs mais baratos vêm, essa regra pode ser questionada.

Em muitos sistemas, se você verificar top ou htop, poderá até notar que seu espaço de troca não está sendo usado se você configurar seu sistema dessa maneira.

Ainda assim, o dobro da memória física é um bom ponto de partida e uma apólice de seguro se você exigir mais da memória. Você pode fazer alterações em seu sistema conforme necessário. Se o seu sistema estiver usando toda a sua RAM, o computador poderá ter problemas de desempenho ao usar a memória virtual.

O computador pode continuar entrando e saindo, um processo conhecido como thrashing, fazendo com que pareça não responder. Se você ainda tiver um disco rígido mecânico, muitas vezes poderá ouvi-lo acessando constantemente.

Hoje em dia, isso é um problema muito menor, pois a quantidade de RAM nos PCs mais baratos é mais do que adequada, além da velocidade dos SSDs ser muito mais rápida do que os discos rígidos antigos. Ainda é algo que você deve estar ciente.

A maneira mais fácil de corrigir isso é apenas adicionar mais RAM à sua máquina. Se isso não for possível, você pode tentar ajustar a "troca" do kernel do Linux.

O número de swappiness determina quanto o kernel mergulha na memória virtual. Varia de 0 a 100. Defini-lo como 0 significa que o Linux não fará a troca, enquanto que em 100, ele fará a troca em todas as oportunidades. O padrão na maioria dos sistemas é 60.

Para alterar o swappiness temporariamente, use o comando sysctl:

sudo sysctl vm.swappiness=20

O "20" nesse comando será o número de swappiness até você reiniciar. Para alterá-lo permanentemente, edite o /etc/sysctl.conf file como root e coloque a linha "vm.swappiness=[swappiness number]", onde "[swappiness number]" é o número de swappiness que você deseja. Este será um paliativo até que você possa instalar mais RAM.

A memória virtual mantém seu sistema Linux funcionando sem problemas

A memória virtual é um componente de sistemas operacionais modernos, incluindo Linux, que mantém seu computador funcionando sem problemas. Você pode usar um arquivo de troca, mas o método usual é uma partição dedicada. Você não precisa pensar muito nisso, mas as partições de swap e os arquivos de swap do Linux são fáceis de configurar e solucionar problemas.

Muitos desses conselhos também se aplicam a outros sistemas, incluindo o Windows, mesmo que os métodos de configuração da memória virtual sejam diferentes.