Linux lento após muitas suspensões

Uma ideia seria instalar o earlyoom, isso ao menos impediria o congelamento por falta de RAM e Swap cheia…

Reinicia as vezes man

Swap é útil, exceto quando é lenta. ZRAM é uma unidade de RAM que usa compactação. Crie swap-on-zram durante a inicialização. Não use mais swap por padrão.

O dispositivo zram, normalmente /dev/zram0, tem um tamanho definido no momento da criação durante a inicialização pelo zram-generator de acordo com seu arquivo de configuração. A memória usada não é pré-alocada. É alocada e desalocada dinamicamente, sob demanda. Devido à compactação, um /dev/zram0 completo usa a metade da memória de seu tamanho.

O /dev/zram0 se comporta (é listado) como qualquer outro block device (dispositivo de armazenamento/partição). Ele pode ser formatado com um sistema de arquivos, ou mkswap, que é a intenção com esta proposta de mudança.

Fonte: Changes/SwapOnZRAM - Fedora Project Wiki

1 curtida

@anon76266952 O Linux não esvazia a Swap sozinho você pode aumentar a Swap ou fazer a limpeza dela com o comando: swapoff -a e depois swapon -a para montar ela novamente.
Eu acho mais conveniente aumentar a Swap do que ficar esvaziando manualmente.

1 curtida

O kernel pode jogar coisa pra swap quando fica muito tempo na RAM sem acesso. Teoricamente o computador não deveria ficar mais lento por ter coisa lá, ao contrário, deveria ficar melhor de usar por ter mais RAM livre para novo uso…

1 curtida

Não, é muito simples.
A RAM é mais rápida que a swap então mais coisa na na RAM e menos na swap torna o acesso da CPU mais rápida.
@anon76266952 E você tem pouca RAM precisa de mais RAM se não pode instalar mais RAM aumenta a swap e aceita a lentidão.

Já sabemos que a SWAP é um “alívio” para a RAM, ou seja, quando não tem mais RAM, o kernel joga para Swap para poder dar uma alívio e poder continuar rodando.

Sendo que o que eu acho é que tem uma falha no que se diz respeito ao gerenciamento. Acredito, apenas pelo uso, que muita coisa útil para rodar é jogada na Swap e não trazida de volta quando a RAM volta a ficar disponível.

Quanto a reiniciar às vezes, eu não gosto. Pra mim isso é “coisa de Windows” hahaahaha.

Bom, acho que isso é uma má gerência mesmo. Agora mesmo, eu estou usando 32% da RAM e a Swap continua com mais de 50%.

Você pode rodar o comando cat /proc/sys/vm/swappiness e colar o resultado aqui? No meu sistema, eu deixo em 30, ou seja, quando 70% da memória estiver sendo utilizada, o kernel vai começar a paginar coisas da memória física para a memória virtual. Algumas pessoas preferem valores menores.

Uma opção adicional é escrever um script que avalie alguns parâmetros e colocá-lo para rodar periodicamente (usando o cron, por exemplo), de forma que o script poderia fazer o papel de desligar e ligar o swap (tática sugerida acima). Eu, porém, acho que é uma solução drástica e pouco elegante. Um swappiness bem ajustado costuma ser suficiente.

Mais quem disse que não pode voltar para a RAM?
Poder ate pode só que o que volta fica na RAM e continua também na Swap.
A swap não diminui ela só aumenta.
Se é o kernel que não reaproveita o que esta na swap ou sé é o programa, eu nunca vou saber.
Swap hoje em dia nem é tão usada, hoje é computador com 16GB de RAM antigamente era PC com 512MB cabia nem o OS na RAM.
E quanto mais voltar no tempo pior era.
Quer dizer logo logo você vai acabar trocando o PC porque o custo das maquinas é bem mais acessível.

Um faz um teste ai abre um programa para consumir a swap e dps fecha e olha se na hora que fechar a swap da uma reduzida.
Se reduzir então o kernel aceita que o software gerencie o que esta na RAM.

Comando:
$ warch free -h

A que eu acabei de testar para saber e olha as print:


A que estressando a RAM deu 3.9GB de swap.

Apos fechar os jogos olha só que surpresa:


Fico com 1.5GB quer dizer o kernel permite os programas gerenciar a Swap mais eles é que gerencia mal eles deveria requisitar ao kernel que esvaziasse da swap tudo que eles criaram o kernel não vai adivinhar o que precisa e o que não precisa mais.

Então, no curto prazo ela aumenta. Mas depois de um certo tempo o kernel faz a limpeza das localizações alocadas de memória, reagrupa os caches e marca a swap como livre de novo. É um processo interno e que eu não conheço como forçar (é diferente de fazer drop cache),

Eu sei disso porque antigamente eu rodava um programa que tinha vazamento de memória e conforme o tempo passava ele só aumentava de uso. Por vezes meu swap encheu até o ponto de o programa ser finalizado. Quando ele era finalizado, parte da swap era liberado porque era do próprio programa, mas ficava um restante lá. É semelhante ao caso que você postou fotos aí.

O kernel desaloca da swap o conteúdo que era usado pelo programa que você fechou, mas quando o kernel começou a jogar coisa pra lá, jogou também conteúdo de outros processos. Enquanto os processos estiverem ativos, a swap vai continuar marcada como usada. Mas faz o teste e espera algumas horas que diminui pra apenas uns poucos megas de uso. Vou forçar essa situação aqui também pra ver. Até coloquei provisoriamente minha swappiness em 100 kkk

A minha swapingness também esta a 100.
Então o negocio não é bem culpa do kernel ele funciona muito, bom só que quem tem pouca RAM não percebe porque o sistema esta sempre requisitando Swap por ter pouca memoria.

@knimer Rodei o comando e está em 60.

Eu já fiz o teste de estressar ao máximo e depois fechar tudo. A RAM voltou lá pra baixo, uns 25% e a Swap baixou logo em seguida até atingir 50% e não baixou mais, mesmo após longo período. O kernel deveria fazer uma limpeza, já que os processos foram todos fechados.

Irei fazer os testes novamente e posto aqui.

Então, quando tiver 40% da memória em uso, o sistema vai começar a colocar páginas de memória física na memória virtual. Mas você pode mudar o parâmetro e fazer alguns testes de estresse, pra testar o comportamento do sistema. Aqui tem algumas informações interessantes a respeito.

Você não tem RAM cara a sua swap só enche.
A minha esvazia a sua não.
E quem tem pouca RAM deve usar swapingness a 100 para a troca da memoria para a swap ser mais rápida.
Do contrario o kernel vai ficar lutando para não usar a swap sendo que é impossível não usar.
O que causa lag por causa da demora inevitável de swaping.

Isso regula a agressividade do swaping não existe uma formula de 40%.
Quanto menor o valor menos o kernel vai usar a swap porque ele esta configurado para evitar ao máximo de fazer e não porque existe uma formula de 100% da RAM e quando esta a 100 ele esta configurado para usar swap agressivamente a todo o instante em que uma coisa na RAM não tiver urgência de uso.

No codigo fonte do kernel o swapingness é 60.

Amigo, o que acontece com você, ocorre até no Windows. O problema é o seguinte. A memória RAM é volátil, quer dizer que quando desliga o computador, ela é limpa e precisa dessa limpeza. Quando você só suspende o sistema, a memória RAM fica carregada e quanto mais dias fica assim, mais lentidão tem. No meu notebook com Windows 10, eu reiniciou no máxima a cada 6 dias, se não fica muito lento. No seu caso que tem 4GB de memória, fica pior ainda porque ele é obrigado a usar o swap que é bem mais lento que a memória RAM.

Ele disse suspensão e na suspensão a RAM não é desligada só é na hibernação.

@anon76266952 Se você colocar a Swap em um SSD vai dar uma melhorada mais o SSD não vai fazer milagre.
Você precisa é de mais RAM.
A swap existe só para o computador não travar ate que mais RAM seja adicionada.

1 curtida

A questão não é ter RAM, @aguamole. Eu tenho outro computador que tem o dobo desse e outro que terá 4x esse. A questão não é quantidade e sim gerenciamento.

Eu fiz um teste que apresentarei abaixo. É longo, mas acho que elucidará o que acho estranho.

  1. Eu desliguei esse computador e iniciei novamente. Abaixo o uso de recursos( como estamos falando em diferenças, tanto faz esse Gnome Monitor ou o free -m)

  1. Começando a abrir algumas abas no Firefox

  1. Continuando a abrir abas no Firefox (Chegando ao limite de RAM)

  1. Limite atingido

  1. Estado após o fechamento de tudo

  1. Mínimo de RAM após o fechamento de tudo

  1. Um tempo ( acho que uns 5 min) de ter fechado tudo

  1. Firefox reaberto

É disso que eu falo. Eu esperaria que ele zerasse a swap. Se eu fizer novamente o que fiz anteriormente, a memória estoura rapidamente e mesmo se estourar, fica lento. É sobre isso que me refiro, não sobre SSD ou HDD, sobre muita ou pouca memória.

Oi, @Tux !

O que parece ter acontecido é que, ele mandou para swap não somente as páginas dos processos iniciados pelo browser, mas as páginas de outros processos elegíveis para paginação.

Quando você “fechou tudo”, essas páginas não foram requeridas pelos respectivos processos. Portanto, não foram retiradas da área de swap.

Retirar blocos da área de swap é uma tarefa muito dispendiosa. O sistema só a executará se for imperiosamente necessário.

Faz sentido. Se você olhar a quantidade de memória utilizada quando você começou (1.4 Gb mem + 0 swap) e quando você terminou (749.5 Mb mem + 641.4 Mb swap), os números totais são bem parecidos.

No final, você não perdeu nada. A área utilizada no swap, é compensada por área livre na memória.

1 curtida