PrincipalOrkutDownloadsRegras

Login






Esqueceu sua senha?
Sem conta? Crie uma
Principal arrow Artigos arrow Artigos arrow Memória Virtual - Linux Swap
Memória Virtual - Linux Swap PDF Imprimir E-mail
(5 votes)
Por Gabriel "Pnordico" Menezes   
28 de julho de 2007

Atualizado em: 06 de Janeiro de 2010

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. Qual deve ser o tamanho da partição Linux-Swap?
        1. Em desktops
        2. Em notebooks
5. Observações adicionais  
 

1. A Memória RAM

Para que um computador funcione é necessário que os dados que serão trabalhados pelo processador estejam carregados na memória. Esses dados então são passados desta memória (a Memória RAM), para o processador, onde, após processados, serão movidos de volta para a Memória RAM. Assim o usuário pode executar programas e, consequentemente, utilizar a máquina. (Esta informação está correta, porém é superficial; Para mais detalhes ou um aprofundamento melhor consulte bibiliografia espefíca para Introdução à [Ciência da] Computação)
Todo esse processo ocorre numa velocidade além da percepção do usuário, mas nem sempre a Memória RAM dá conta de carregar tudo o que está sendo executado em um computador, então se faz 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á ocupada, não sendo mais possível carregar dados nela, ou existem dados que não estão sendo utilizados por muito tempo, ocupando desnecessariamente a RAM, é utilizada a Memória Virtual, que pode ser um arquivo ou vários arquivos que armazenam dados dos processos carregados, ou seja, utilizando a Memória Secundária (de armazenamento), com uma partição dedicada ou utilizando a mesma partição do sistema, liberando a Memória RAM para que 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 a fim de serem processados, executados, ou seja, para que o "programa" funcione, falando grosseiramente. Esse processo de troca é o chamado processo de SWAP e ocorre de modo imperceptível para o usuário, porém não substitui o uso da Memória RAM, pois a leitura do Disco-Rígido é 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 do processo são movidas da Memória Virtual para a Memória RAM, diminuindo o volume da troca de dados entre a elas.
As primeiras versões do Unix System V (conhecidos também como SysV) funcionavam apenas com o swapping. Posteriormente (a partir do release 2.0, aparentemente) foi implementado o paging ao Unix System V.
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 quando se estuda esses processos de maneira específica.
 

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).

Alguns usuários confundem conceitos e tem o mau hábito de dizer que "a partição swap deve ter o dobro do espaço da Memória RAM", o que simplesmente não é verdade. É inviável e inútil que um usuário com 1 GB de RAM, por exemplo, disponibilize 2 GB para "nada", pois com 1 GB de RAM praticamente não se utiliza o swap. Esse usuário estaria jogando fora um espaço onde poderia até mesmo instalar uma outra distribuição. Bem como para uma máquina com 128 MB de RAM 256 MB de SWAP provavelmente será insuficiente.
O mais correto a se fazer é experimentar, procurar informações com outros usuários e não ouvir conselhos de qualquer um.

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

Este artigo não se aplica a servidores. Em caso de servidores o responsável pela implementação deve fazer um estudo e implementar a quantidade de swap necessária para a sua aplicação


Tendo como base uma pesquisa feita neste tópico da Comunidade Linux Brasil foi possível separar algumas situações de Quantidade de Memória RAM x Espaço para SWAP e fazer certas interpretações.
Algo que é importante observar é que o uso de memória pode variar entre as distribuições em função dos pacotes, serviços habilitados por padrão, entre outras coisas, e que esses serviços e pacotes podem ser desabilitados ou removidos após a instalação dela tornando-a mais "leve". A primeira recomendação é saber se você estará utilizando uma distribuição "leve", que não requer muita memória quando recém-instalada, ou "pesada", que requer muita memória quando recém-instalada.

    4.a.1 Em desktops
    4.a.2 Em notebooks

4.a.1 Em desktops

1) 128 MB a 256 MB de RAM

Em computadores com 128 MB é mais provável que ocorram problemas por falta de memória, como lentidão ou até mesmo a finalização da execução de aplicações por falta de memória. Para máquinas com 128 MB, por exemplo, a regra do "dobro da RAM" não se aplica, pois pode ser insuficiente e arriscado. Para máquinas com valores no intervalo aproximado de  128 a 256 MB de RAM é comum (e recomendável) o uso de pelo menos 512 MB para a partição swap (falando em números aproximados pois esse número varia de 500 a 600 MB, chegando até a 1 GB em casos mais extremos e de muita dúvida e precaução por parte do usuário, ou seja, raras exceções, chegando a ser um exagero desnecessário)


2) 512 MB a < 1 GB de RAM

Para computadores com valores no intervalo acima de 512 MB a abaixo de 1 GB de RAM o uso de 1 GB ou mais de swap é exagerado e desnecessário. Como já existe uma boa quantidade de RAM disponível, são poucos os casos em que se faz necessário o uso de um espaço muito grande pra swap, sendo comum o uso de 384 MB de swap, lembrando que este valor é aproximado e varia de 256 a 512 MB, dependendo do uso.


3) Mais de 1 GB de RAM

O que surpreendeu com os dados obtidos foi que a grande parte dos usuários que possui 1 GB ou mais de RAM também disponibilizam um espaço para o swap. É comum que disponibilizem 200 MB do HD para o swap.
Isso ocorre pelo fato de que os usuários não querem correr o risco de ter o desempenho comprometido por falta de memória (mesmo sendo pouco provável que ocorra), mas levando em consideração que, hoje em dia, 200 MB de um HD representa uma minúscula parte deste, o que torna viável a disponibilização de espaço para swap em máquinas com mais de 1 GB de RAM.

- Distribuição "leve" ou "pesada"
Com base em  informações fornecidas por usuários de diversas distribuições é fácil definir se estará usando uma distribuição considerada "leve" ou "pesada". Isso serve também para definir a quantidade de espaço a ser disponibilizada para o swap. Utilizando o esquema acima podemos definir que, caso a escolha seja uma distribuição "leve", podemos manter o mínimo de swap compatível com a Memória RAM da máquina. Caso a distribuição seja pesada, utilizamos a definição de espaço que está logo acima. Por exemplo: 
  • Minha máquina possui 512 de RAM, que se enquadra na opção 2 de swap (em torno de 384 MB), mas eu escolhi uma distribuição  considerada "pesada" pelos usuários, então eu devo passar a utilizar a opção 1 de swap (em torno de 500 MB);
  •  Minha máquina possui 256 de RAM, que se enquadra na opção 1 de swap, mas eu escolhi uma distribuição  considerada "pesada" pelos usuários, então eu devo considerar utilizar um espaço grande para o swap (em torno de 500 MB).
Observação: Estes valores foram definidos com base em uma pesquisa com diversos usuários. É possível que nunca seja requisitado de sua máquina um uso "tão grande" de swap, porém os usuários tendem a aplicar duas regras nesse assunto: 1) É melhor previnir; 2) Atualmente "todo esse espaço" no HD representa uma quantidade insignificante do total deste, então não existem motivos para não disponibilizar se for levado em consideração a regra 1.

4.a.1 Em notebooks

Em notebooks a situação torna-se um pouco diferente, pois existem recursos (como Hibernate/Hibernar) que, segundo consta em artigos, documentações e fóruns, utiliza os recursos do SWAP, inclusive podemos encontrar problemas de pessoas que não conseguem fazer o notebook hibernar justamente por falta de espaço no SWAP (ou ausência total do mesmo).

Para esses casos, de fato, o mais adequado seria voltar ao conceito antigo e escolher "o dobro" de RAM para o SWAP, pois caso você tente hibernar e sua RAM esteja completamente utilizada, isso poderia causar a impossibilidade da hibernação, pois não haveria espaço suficiente no SWAP.

O melhor a fazer nesses casos é utilizar o bom senso. Colocar uma partição de SWAP de 8 GB, no meu ponto de vista, é um desperdício de espaço muito grande (em um notebook com 4 GB de RAM), então o melhor a fazer seria observar o comportamento do consumo de RAM do seu sistema e colocar uma quantidade de SWAP suficiente para comportar o valor máximo do seu consumo, com uma margem de segurança. Já em notebooks com 1 GB de RAM, pode-se tranquilamente utilizar 2 GB de SWAP sem "dor na consciência".

Em um caso particular, em um notebook com 4 GB de RAM, utilizando 4,5 GB de swap, não houve problemas ao fazer o notebook hibernar, não existindo, portanto, a necessidade de utilizar "o dobro do espaço" só para o swap. O mais correto a se fazer é avaliar a situação e disponibilizar uma quantidade adequada de espaço para a partição linux-swap.



5. Observações adicionais

Observação1: Recentemente eu tive um problema com um dos meus pentes de memória, ficando com apenas 512 MB, como eu não disponibilizei nenhuma partição para SWAP, acabei tendo alguns problemas ao compilar programas e utilizar a máquina ao mesmo tempo, sendo necessária a criação de um arquivo de SWAP. Moral da história: Era melhor ter disponibilizado pelo menos uns 256 MB de SWAP, mesmo que mantivesse desativado, sem entrada no fstab.

Observação2: Mesmo que a máquina possua 1 GB de RAM ou mais, pode ser interessante disponibilizar um certo espaço para o SWAP já que essa "tecnologia" acaba, por muitas vezes, otimizando o uso da própria memória RAM, pois partes desnecessárias dos processos não ficam carregados e são movidos para o swap, assim a RAM fica com espaço disponível para outras funções. A Memória Virtual é uma ferramenta que quando utilizada adequadamente funciona na otimização do uso da memória RAM.

Observação3: 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."

 

[MITO] Observação4: Existe também um relato (de uma fonte não-tão-confiável) de que o sistema utiliza no máximo 256 MB de SWAP, mesmo que mais espaço esteja disponível para isso. Esta informação necessita confirmação. [MITO] Colaboração do José Márcio Fogaça (Zé Márcio)

 

Comentários
Pesquisar
Somente usuários registrados podem escrever comentários!
josefogaca  - Sobre observação 3   |143.54.1.xxx |2008-04-21 12:22:44
Deixo claro que o sistema jamais deixará de usar mais do que 256MB de swap se
assim for preciso. Uso o Gentoo como distribuição preferida já há alguns anos.
Meu micro tem 1GB de RAM e disponibilizo mesmo espaço de swap. Quando estou a
compilar pacotes grandes, como o OpenOffice ou alguns pacotes do KDE, por
exemplo, a swap passa a ser utilizada em larga escala, ultrapassando os 256MB
facilmente. Fica aqui refutada essa afirmativa.
pinguim   |SAdministrator |2008-04-21 22:33:29
Compreendo... Eu sabia que não podia confiar naquele material!

Observação 3
registrada como mito. Material atualizado. Obrigado pela colaboração.

3.21 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."





Reddit!Del.icio.us!Google!Yahoo!
 
Próximo >