Memória Virtual - Linux Swap PDF Imprimir E-mail
Escrito por Marcelo Vieira   
Qua, 09 de Março de 2011 01:42

Com o passar do tempo e a banalização da informação, pouca gente sabe realmente do que se trata a partição Linux-Swap (ou apenas Swap), existindo diversos mitos sobre o seu uso e a quantidade de espaço que deve ser disponibilizada para ela.

Neste texto procuraremos definir conceitos de Memória Virtual, Swap e Paginação, para que sirva de consulta ou, no mínimo, um início para alguma pesquisa ou estudo do assunto, além de procurar esclarecer questões sobre o espaço a ser disponibilizado para a partição Linux-Swap bem como recomendar o tamanho deste espaço de acordo com a quantidade de memória RAM que um computador possua, tendo como base uma pesquisa feita na Comunidade Linux Brasil. Caso este seja seu único interesse, passe para a parte final do texto.


Índice:

1. A Memória RAM
2. Memória Virtual
3. Swapping ou Paging (Paginação)?
4. No GNU/Linux
    a. Porque eu preciso do SWAP?
    b. Qual deve ser o tamanho da partição Linux-Swap?
5. Observações adicionais  
 

1. A Memória RAM

Para que um computador funcione é necessário que os dados que serão processados estejam carregados na memória. Esses dados então são transferidos desta memória (a Memória RAM), para o processador, onde, após processados, serão movidos de volta para a Memória RAM.

Todo esse processo ocorre numa velocidade além da percepção do usuário, mas nem sempre a Memória RAM é capaz de armazenar tudo o que está sendo executado, fazendo-se necessário o uso da Memória Virtual.

 

2. Memória Virtual

A Memória Virtual é uma extensão da memória RAM. Quando a Memória RAM está cheia, não sendo mais possível armazenar dados nela ou existem dados que não estão sendo utilizados por muito tempo (ociosos) ocupando desnecessariamente a RAM, é utilizada a Memória Virtual utilizando a Memória Secundária, desonerando a Memória RAM para que outros dados possam ser carregados nela. Esses dados carregados na Memória Virtual podem ser carregados na Memória RAM novamente conforme a necessidade de processamento dos mesmos. Então ocorre o processo de "troca" em que os dados ficam alternando entre a Memória RAM e a Virtual. Esse processo de troca é o chamado processo de SWAP e ocorre de modo imperceptível para o usuário. Entretando, o processo de SWAP não substitui o uso da Memória RAM, pois a leitura/escrita do Disco Rígido (HD) é mais lenta (centenas de vezes mais lenta) que a da Memória RAM.
 

3. Swapping ou Paging (Paginação)?

É comum a confusão entre estes dois termos.
O Swapping consiste em, quando necessário, mover o processo inteiro para a memória virtual, o que causa uma perda de performance pois o processo quando está "em espera", é totalmente alocado na Memória Virtual e quando estiver para ser executado será totalmente carregado na Memória RAM.
Já o Paging (Paginação) foi introduzido como uma otimização para o swapping onde apenas partes ("pages", páginas) menos utilizadas ou ociosas do processo são movidas para a Memória Virtual, assim quando um processo é executado, apenas partes desse processo são movidas da Memória Virtual para a Memória RAM e vice versa, diminuindo o volume da troca de dados entre a elas.
Os sistemas operacionais atuais não utilizam o processo de Swapping, apenas o Paging, mas é comum que se utilize apenas o termo Swapping (ou Swap) para a definição deste processo, sem a diferenciação entre os termos Paging e Swapping, tratando-os pelo mesmo nome, exceto em estudos desses processos de maneira independente.
 

4. No GNU/Linux

O sistema operacional GNU/Linux pode trabalhar de duas formas:

1- Dedicando um ou mais arquivos de SWAP; 
2- Dedicando uma ou mais partições inteiras à Memória Virtual, a partição SWAP (ou Linux-Swap). 

Cada um desses métodos tem uma vantagem: usar uma partição torna o processo de swap mais rápido; utilizar um arquivo torna mais fácil a alteração do tamanho do espaço disponibilizado (é mais fácil alterar o tamanho de um arquivo do que alterar o tamanho de uma partição, por isso é recomendável deixar um tamanho suficiente para a partição swap, garantindo que não faltará memória no computador). Lembrando que é possível usar mais de um arquivo e mais de uma partição, ou a combinação deles (arquivo e partição ao mesmo tempo).

No passado a recomendação para a utilização do swap fazia uso de uma regra prática que estipulava que "a partição swap deve ter o dobro da capacidade da Memória RAM", regra essa condizente com a realidade da época, porém atualmente essa regra não mais pode ser aplicada. A justificativa para a não aplicação dessa regra é o fato de que atualmente os computadores possuem Memória RAM com capacidade imensamente superior aos computadores antigos. Ex.: É aceitável a utilização de 256 MB de SWAP em um sistema que possui 128 MB de RAM, porém é considerado um imenso desperdício a utilização de 12 GB de SWAP em um sistema com 6 GB de RAM.

Dessa forma é correto afirmar que o SWAP deve ser dimensionado de acordo com a previsão da futura utilização de memória do sistema. Porém como nem sempre é possível determinar antecipadamente, o mais adequado é utilizar do bom senso e experimentar, testar e procurar informações com outros usuários mais experientes.


4.a Porque eu preciso do SWAP?

Existem algumas funcionalidades e situações que são importantes motivos para utilizar o SWAP no sistema operacional GNU/Linux:

Utilização de programas com alto consumo de memória: Eventualmente programas "grandes" fazem com que o sistema demande mais memória. Esses programas normalmente carregam na memória dados que são utilizados apenas em sua inicialização. Esses dados poderão ser movidos pelo sistema operacional para a SWAP para liberar a memória para a utilização de outros programas.

Hibernação (suspend-to-disk): A função Hibernar move o conteúdo da Memória RAM para a partição SWAP antes de desligar o computador. Para isso sua partição SWAP deve ser, no mínimo, do tamanho da sua Memória RAM.

Imprevistos: Situações imprevistas acontecem (como algum programa bugado começar a ocupar toda a memória). Nesses casos o SWAP pode prover tempo hábil para descobrir o que está acontecendo ou terminar o que você estava fazendo.

Otimização do uso de memória: A alocação de dados ociosos dos programas para a SWAP permite que a Memória RAM mantenha-se livre para a utilização por outros programas ou para a sua utilização como cache de memória.


4.b Qual deve ser o tamanho da partição Linux-Swap?


Conforme mencionado anteriormente, não é justificada a utilização de quantidades imensas de espaço em disco para o SWAP. É possível também observar a tendências de duas variáveis que interferem nessa definição: 1) Os computadores atuais possuem grande capacidade de memória RAM; 2) Os computadores atuais possuem grande capacidade de armazenamento em disco (memória secundária).

Levando essas variáveis em consideração é possível considerar bastante razoável a recomendação da Red Hat em relação ao espaço destinado ao swap[1]:


Quantidade de RAM do sistema
Quantidade de SWAP recomendada
4GB de RAM ou menos
no mínimo 2GB de SWAP
4GB a 16GB de RAMno mínimo 4GB de SWAP
16GB a 64GB de RAMno mínimo 8GB de SWAP
64GB a 256GB de RAMno mínimo 16GB de SWAP
256GB a 512GB de RAMno mínimo 32GB de SWAP

Do mesmo modo vale salientar que cabe ao usuário avaliar a capacidade da Memória RAM e a capacidade do seu disco rígido de modo a disponibilizar um valor razoável de espaço para o SWAP.



5. Observações adicionais

Observação1: Existem relatos de que em casos de servidores (com máquinas boas, dignas de serem servidores) e/ou máquinas que são utilizadas basicamente para gerenciamento de banco de dados, pode existir uma perda de desempenho ao utilizar, desnecessariamente, um espaço para SWAP.

"Por Marcelo Vieira

A eliminação do Swap para melhoria de performance em banco de dados é uma marretada. Acontece que o sistema operacional utiliza parte da memória virtual para cache de file system. Como o data base pode ficar em file system, parte dos dados acabam ficando em cache, que tem algorítimos de otimização. Mas o próprio banco de dados também faz cache dos dados. Então acaba que voce tem o sistema fazendo cache duas vezes. E para piorar, os algorítimos de otimização de cache do sistema operacional não são específicos para banco de dados.
Então, em vez de retirar o Swap, é mais interessante voce eliminar o cache nos file systems que contém os data files do banco de dados. Isso é chamado de direct I/O.


Obs: Não sei se é possível fazer isso no Linux. Mas agora deixo pra voces pesquisarem isso.

Att,
Marcelo Vieira."

Última atualização em Qua, 09 de Março de 2011 01:45
 

Adicionar comentário


Código de segurança
Atualizar