No 100% de uso de memória

1

Tenho 4 GiB RAM e o System Monitor mostra 3.8 GiB. Eu acho que 200 MiB é para GPU. Mas eu nunca vi o uso da memória mais de 3,0 GiB. Se o uso da memória estiver próximo a 3 GiB, ele usará Swap e quando chegar a 3 GiB o computador congela (estou usando o Idea IDE).

Desativei o vm.swappiness (com swapoff -a). Não ajudou. Então tentei swappiness = 0, swappiness = 1, swappiness = 20.

Quando adicionei 4 GiB extras, vi o uso de memória de 5 GiB. Agora eu tenho apenas 4 GiB RAM.

Estou usando o Ubuntu 14.04. Por que o System Monitor não exibe o uso da memória 3.7 ou 3.8 GiB?

    
por Ikrom 21.10.2014 / 08:52

3 respostas

3

Se você desativar o swap, sua memória RAM ficará mais cheia. Se você aumentar o swap, os dados na RAM serão paginados para a partição swap quando o seu ram atingir um certo nível. Ram vai ficar cheio, mas nem sempre é um problema. Se você realmente quiser fazer algo a respeito, pode executar o seguinte comando para limpar seu dinheiro:

(aviso: se você instalou o daemon de sincronização de perfil, feche o firefox e execute o comando sudo service psd stop antes de executar o seguinte comando!)

echo "3" | sudo tee /proc/sys/vm/drop_caches

Isso limpará seu dinheiro, mesmo que na maioria das vezes não seja necessário, especialmente se o swap estiver habilitado. As pessoas geralmente ficam alarmadas quando vêem alto uso de RAM em um desktop linux, mas os desenvolvedores insistem que o sistema irá realmente rodar mais rápido, porque o que está no RAM são dados armazenados em cache que podem ser facilmente e rapidamente recuperados pelo sistema. Quando o sistema está em uso pesado, esses arquivos em cache são transferidos para swap.

O motivo pelo qual você não vê tanta RAM em uso quanto antes é porque o Linux foi projetado para usar e aproveitar os recursos do sistema disponíveis com mais eficiência. Portanto, se você tivesse 12 GB de RAM, talvez você visse 8 ou até 9 GB de RAM em vez disso. Um monte de RAM em uso é usado para armazenamento em cache e geralmente não é necessário para executar o imediato área de trabalho.

Quanto ao sistema mostrando 3GB de RAM em uso, execute o seguinte comando e você deverá obter um número mais preciso:

free

O system-monitor diz que estou usando 1,4 GB de RAM e a RAM real em uso, incluindo buffers / cache, é de 2,7 GB, quase o dobro do valor reportado. Esse número costuma ser muito maior, pois o cache às vezes aumenta para mais de 50% do total. Além disso, o monitor do sistema informa minha RAM total em 4,7 quando o número real está mais próximo de 4,9 GB.

Para ajudar a diagnosticar seu problema, você pode instalar o htop e o iotop para ter uma ideia melhor do que está acontecendo quando você tem problemas. Para instalar:

sudo apt-get install iotop htop

Para executar:

sudo iotop

ou

sudo htop

De minha própria experiência, sempre obtive melhor desempenho do sistema usando swap e tive problemas (congelamento do sistema) quando o swap está desabilitado. Na verdade, é mais provável que o seu computador congele. Sem swap, o sistema não tem como continuar usando RAM depois de ficar cheio. Desligar o swappiness muito baixo também pode causar paginação excessiva e debater o disco rígido se houver muita RAM em uso. Às vezes, esse problema aparecerá como atividade excessiva do kworker usando iotop .

    
por mchid 21.10.2014 / 10:08
1

Esta ferramenta não está incluindo o cache de disco no que está relatando como "livre". Seu sistema está trocando para manter um cache de disco de tamanho razoável.

Por favor, veja minha resposta para esta questão para mais informações. Aqui está um trecho:

  

Cada aplicativo pode usar parte de sua memória. O Linux usa toda a memória desocupada (exceto nos últimos Mb) como "cache". Isso inclui o cache de páginas, caches de inode, etc. Isso é bom - ajuda a agilizar as coisas. Tanto a gravação em disco quanto a leitura em disco podem ser aceleradas imensamente pelo cache.

     

O ideal é que você tenha memória suficiente para todos os seus aplicativos e ainda tenha várias centenas de Mb restantes para o cache. Nessa situação, contanto que seus aplicativos não aumentem o uso de memória e o sistema não esteja colocando muita pressão no cache, não há necessidade de qualquer troca.

     

Uma vez que os aplicativos reivindicam mais RAM, ele simplesmente entra em algum espaço usado pelo cache, encolhendo o cache. A alocação de cache é barata e fácil o bastante para ser feita em tempo real - tudo o que fica no cache é apenas uma segunda cópia de algo que já está no disco, então pode ser desalocada instantaneamente, ou é algo que gostaríamos teve que liberar para o disco nos próximos segundos de qualquer maneira, portanto, não há nenhum impacto no desempenho ao realocar o cache para os aplicativos.

     

Assim, quando alguém se refere a RAM "livre", isso pode ou não incluir cache, já que o cache ocupará apenas RAM "livre". Essa não é uma situação específica do Linux - todos os sistemas operacionais modernos funcionam dessa maneira. Os diferentes sistemas operacionais podem relatar a RAM livre de forma diferente: alguns incluem o cache como parte do que consideram "livre" e outros não.

     

Quando você fala sobre RAM livre, é muito mais significativo incluir o cache, porque ele é praticamente gratuito - ele está disponível caso qualquer aplicativo o solicite. No Linux, o comando free relata os dois caminhos - a primeira linha inclui o cache na coluna RAM usada e o segundo,

...

  

Uma vez que você tenha usado memória suficiente para que não haja espaço suficiente para um cache de execução suave, o Linux poderá realocar alguma memória de aplicativo não utilizada da RAM para trocar para recuperar alguma memória para o cache.

     

Não faz isso de acordo com um corte definido. Não é como se você alcançasse uma certa porcentagem de alocação, então o Linux começa a trocar. Tem um algoritmo bastante "fuzzy". São necessárias muitas coisas, que podem ser melhor descritas por "quanta pressão existe para alocação de memória". Se houver muita "pressão" para alocar nova memória, aumentará as chances de que alguns sejam trocados para ganhar mais espaço. Se houver menos "pressão", diminuirá essas chances.

Nota: o que eu disse acima se aplica não apenas ao Linux, mas a praticamente todos os sistemas operacionais modernos, incluindo Windows, Mac OS, etc.

    
por thomasrutter 21.11.2014 / 04:07
0

Você pode alterar ou modificar o valor do parâmetro vm.min_free_kbyte em /etc/sysctl.conf

Isso controla a quantidade de memória que é mantida livre para uso por reservas especiais, incluindo alocações "atômicas" (aquelas que não podem esperar pela recuperação).

Você pode definir um valor pequeno e ver como funciona.

Você pode ver mais informações em this postar.

    
por Daniel Felipe Ochoa 26.08.2016 / 16:51