Logo Hardware.com.br
Marcos FRM
Marcos FRM Highlander Registrado
10.3K Mensagens 712 Curtidas

Swap file, algo que já deveria ser amplamente usado

#1 Por Marcos FRM 01/10/2010 - 20:02
Estava eu refletindo sobre a real utilidade das partições swap hoje em dia, com tudo que é PCzinho de supermercado com 2GB ou mais de RAM.

Todos sabem que swap bom é swap não feito. Em PCs com bastante memória, depois de um uptime longo, mesmo com bastante memória livre, vemos parte da partição swap usada, mas geralmente pouca coisa. O kernel coloca alguma coisinha lá, mas não acredito que tenha impacto relevante (para melhor) no desempenho o fato de estar lá, afinal é um HD...

Nos casos onde a swap é requerida para valer, quando a memória RAM esgota-se, o desempenho vai para o vinagre e o usuário não tem outra coisa a fazer a não ser comprar mais RAM ou diminuir o uso dela.

Então, gente, swap é em boa parte inútil nos desktops. E o que acho pior é ter que existir uma partição para isso. Que possui problemas: não é facilmente redimensionável e adiciona complexidade desnecessária aos instaladores. Você tinha 2GB, ficou com 512MB, precisa de mais swap? Redimensione partições. É péssimo, não acham? Particionamento é algo que tem que se mexer o mínimo possível. Particionou uma vez, não mexe mais.

Aí que entram os arquivos de swap, que são muito mais flexíveis, pois você pode aumentar, diminuir a vontade. Perda de desempenho por estar sobre de uma sistema de arquivos com journaling? Deve existir. Mas quem se importa? Swap é usado para quase nada mesmo. Ele fica lá como um reserva, esquentando banco. Entra em cena só quando o kernel não tiver mais o que fazer, quando a memória acabar de fato.

O melhor é que os componentes do Linux hoje suportam o uso de arquivos de swap: kernel, util-linux-ng (mkswap, swapon, swapoff, mount).

É possível trocar a partição de swap por um arquivo de swap manualmente: [all variants] HOWTO: Use swapfile instead of partition and hibernate - Ubuntu Forums

Achei esse Blueprint do Ubuntu (ainda do Karmic), propondo a mudança, de autoria de Scott James Remnant, empregado da Canonical, desenvolvedor do Upstart:
Use Swap Files Instead of Swap Partitions


Em resumo, está tudo disponível. É só colocar a funcionar. Porém está bloqueado por esse bug, atribuído ao kernel: Bug #386554 in linux (Ubuntu): “System behaved as if OOM when it had plenty to spare”. Aparentemente o kernel não é tão esperto assim e começa, quando sem swap, a dar piti cedo demais. Suponho que o bug esteja bloqueando a implementação porque com o uso do arquivo de swap seria possível desativa-lo, ficando o sistema sem swap nenhum (o que é o recomendando para os netbooks com SSDs de quinta categoria). Daí nesse caso o sistema tornaria-se um 486 muito antes de acabar a memória. Outro bug talvez relacionado: Bug #131094 in linux (Ubuntu): “Heavy Disk I/O harms desktop responsiveness”

super.gif
Responder
mangueJOE
mangueJOE Veterano Registrado
1.2K Mensagens 1 Curtida
#61 Por mangueJOE
27/11/2010 - 01:12
Marcos FRM disse:
Para dormir melhor, criei um arquivo de swap de 512MiB. Permanente, via fstab.

E o kernel já pôs os trapos dele ali depois de um dia de uptime...

Imagem

Desisti de ficar sem swap nenhuma. Fica o arquivinho... anjinho.gif


O que vc fez pra ficar os dois núcleos em 100%?
Phenom II x4 965 | 4GB RAM | Sapphire HD5770 | 500GB HD | MOBO Asus M4A785-M
Sony Vaio VPCEE23EB
VonNaturAustreVe
VonNaturAust... Super Participante Registrado
517 Mensagens 46 Curtidas
#63 Por VonNaturAust...
27/11/2010 - 16:31
Havia 2 anos e meio que não utilizava nenhuma partição/arquivo swap, nunca havia tido problemas por falta de memória, até quando comecei a fazer muitos testes/experimentos com máquinas virtuais, ai a memória pediu arrego, apelei para um swap e o problema foi resolvido.

O uso da swap depende de seus propósitos, quando os instaladores oferecem a opção de escolha da swap em partição ou arquivo considero isso bastante interessante, entretanto a maioria das distribuições por padrão criam uma partição swap que não e ruim te-la,

Usuários avançados costumam configurar eles mesmo suas swap da melhor forma que lhes convém, muitas vezes nem criando swaps durante suas instalações, muitos costumam só cria-las quando surgem a real necessidade destas.

Uma opção que considero interessante de ser desenvolvida seria criar e ativar a swap apenas quando for realmente necessário.

[]'s
Att,
Herberson S. Miranda
Website: https://blog.0fx66.com/
rafaelsoaresbr
rafaelsoares... Membro Senior Registrado
325 Mensagens 8 Curtidas
#65 Por rafaelsoares...
29/11/2010 - 11:25
Marcos FRM disse:
A questão da hibernação é um dos problemas que precisam ser adaptados com uso do arquivo de swap. Pois o kernel precisa saber exatamente onde está o arquivo para conseguir restaurar a sessão do usuário. E isso é feito passando para o kernel durante o boot o setor exato onde começa o arquivo de swap. Existem dois problemas: se você recriar o arquivo de swap, ele provavelmente mude de posição e a opção de boot para o kernel precisará ser atualizada; se o sistema de arquivos usado tiver uma ferramenta de desfragmentação que mova o arquivo de swap (não sei se daria para fazer algo como no Windows, onde o arquivo de swap fica bloqueado), novamente, a opção de boot precisará ser atualizada.


Como eu disse anteriormente eu já usei a hibernação tendo menos SWAP do que RAM, não me lembro qual a versão do Ubuntu exatamente (acho que a 9.10), talvez isso já tenha sido implementado. Mas eu não usava muito por ser uma funcionalidade ainda problemática na época, acho que ainda hoje é.
Intel DH55TC LGA 1156 - Intel Core i5 760 2.8Ghz 8Mb - Cooler Master Hyper TX3 - 2X2Gb Kingston DDR3 1333Mhz - Gigabyte GTX750 1Gb DDR5 128bits - Corsair CX430 - SSD Kingston V300 Series 60Gb Sata/HD Western Digital Caviar Blue 320Gb Sata/HD Seagate Barracuda 500Gb Sata
m45t3r
m45t3r Veterano Registrado
986 Mensagens 57 Curtidas
#66 Por m45t3r
29/11/2010 - 16:27
rafaelsoaresbr disse:
Como eu disse anteriormente eu já usei a hibernação tendo menos SWAP do que RAM, não me lembro qual a versão do Ubuntu exatamente (acho que a 9.10), talvez isso já tenha sido implementado. Mas eu não usava muito por ser uma funcionalidade ainda problemática na época, acho que ainda hoje é.

Na verdade durante a hibernação, caso detecte que não há espaço suficiente no swap para armazenar o conteúdo da memória, compacta seu conteúdo antes de gravá-lo no swap. Inclusive tem um arquivo de configuração que você pode alterar esse comportamento.
angeloshimabuko
angeloshimab... Veterano Registrado
933 Mensagens 67 Curtidas
#68 Por angeloshimab...
04/12/2010 - 00:36
carlos007anjo disse:
Acho que não entendi , pode re-explicar ?


Desculpe a demora em responder, mas passei vários dias sem acessar o fórum.

Caso você tenha uma placa de vídeo com centenas de MiB de RAM, e não usa 3D, essa memória não está sendo usada. Então você pode usá-la como espaço de paginação (swap). Há muito tempo atrás eu usei MTD para fazer um RAMdisk (naquela época, para um computador com 32 MiB de RAM, com uma placa de vídeo com 16 MiB -- usei 14 para "swap"). Mas hoje, segundo esse tutorial (1), é mais fácil.

O princípio, em qualquer caso, é o mesmo. Qualquer memória, no Linux, pode ser transformada em RAMdisk e depois ser usada como espaço de paginação.

(1) http://en.gentoo-wiki.com/wiki/Using_Graphics_Card_Memory_as_Swap
Marcos FRM
Marcos FRM Highlander Registrado
10.3K Mensagens 712 Curtidas
#69 Por Marcos FRM
16/12/2010 - 10:04
Vejo que não tem no tópico os passos para usar um arquivo de swap permanente. Então aqui vão eles, para quem não precisa usar hibernação. Se você usa hibernação, leia o tópico do fórum do Ubuntu, linkado no primeiro post: [all variants] HOWTO: Use swapfile instead of partition and hibernate - Ubuntu Forums

Desative toda swap listada no fstab:
sudo swapoff -a


Crie um arquivo vazio no diretório raiz. "count" define o tamanho; 512K = cria arquivo de 512MiB, 1M = cria arquivo de 1GiB e assim por diante...
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1M


Configure permissão:
sudo chmod 600 /swapfile


Cria swap no arquivo:
sudo mkswap /swapfile


Edite o arquivo /etc/fstab
gksu gedit /etc/fstab


Comente (ou remova) as linhas relativas à partição swap e adicione ao final do arquivo:
/swapfile    none    swap    sw    0    0

(caso já tenha instalado o sistema sem a partição de swap, simplemente adicione a linha acima)

Ative toda swap listada no fstab (nosso arquivo de swap já está lá):
sudo swapon -a


Pronto, arquivo de swap permanente. Adeus partição de swap!
...
Alexander DeLarge
Alexander De... Geek Registrado
1.7K Mensagens 134 Curtidas
#70 Por Alexander De...
16/12/2010 - 11:22
Muito bom.


E qual o comando para ver a quantidade do arquivo que está sendo usada ? Posso usar o "free" mesmo ?
Phenom II X6 1055T 2.8 ghz - 6 gb 1333 mhz - SATA II 500 gb 7200 RPM - ATI HD 5450 1 gb - LG LED 20" bom_trabalho.gif

Seja um cliente/consumidor consciente. Antes de reclamar de um serviço, leia o contrato e procure conhecer nos mínimos detalhes seus direitos e deveres. Evite aborrecimentos.


N0625
N0625 Super Zumbi Registrado
7.1K Mensagens 785 Curtidas
#72 Por N0625
16/12/2010 - 11:58
Uma curiosidade: consigo montar uma imagem de disco do Wubi, mas não consigo montar a "partição" swap criada por ele. Não tem como montar uma partição SWAP presente através de outra distro, pois com certeza ela seria zerada antes. Mas parece que tem uma forma de acessar os dados da partição SWAP, né? Digo isso porque li uma vez que é possível criptografá-la. E só se criptografa algum conteúdo quando não se quer revelá-lo. Como se acessa os dados de uma partição SWAP?

Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal