|
Atualizado em: 28 de Dezembro 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. Porque eu preciso do SWAP? b. Qual deve ser o tamanho da partição Linux-Swap? 5. Observações adicionais
1. A Memória RAMPara 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 VirtualA 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/LinuxO 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 RAM | no mínimo 4GB de SWAP
| | 16GB a 64GB de RAM | no mínimo 8GB de SWAP
| | 64GB a 256GB de RAM | no mínimo 16GB de SWAP
| | 256GB a 512GB de RAM | no 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 adicionaisObservaçã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."
|