Dúvida cruel, mas não é do Iberê.

Hoje escrevo sobre algo que me encomoda um pouco. O gerenciamento de memória do sistema operacional.
Não conheço a fundo isso não, então por favor não espere qualquer explicação a respeito disso nesse post.

É mais um desabafo junto com algumas dúvidas.

Imagine alguém que tem fome e um sanduiche delicioso em suas mãos. E que sempre termina passando fome pois vem os gulosos e abocanham seu sanduba.
É assim que me sinto quando abro o google-chrome, sublime, discord, e demais aplicativos de uso diário.
E a memória RAM é o meu sanduiche-iche.

Vejo que o consumo de memória em meu computador pessoal está meio alto, então fecho absolutamente todas as janelas, e meço:

vostrolab ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3942       1012       2929        276          4        345
-/+ buffers/cache:        663       3279
Swap:            0          0          0

Nada satisfeito, faço reboot do computador, e ao voltar, ainda sem nada aberto, meço a memória novamente:

vostrolab ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3942        808       3134        185          5        382
-/+ buffers/cache:        420       3522
Swap:            0          0          0

Ficam duas perguntas:

A Primeira: Por quê o sistema operacional ‘come’ tanta memória? Convenhamos que 808 mb não é brincadeira não.. mesmo sem ‘nada’ aberto. Dizemos ‘nada’ entre aspas simples pois é sabido que há uma vasta quantidade de sofwares sendo executados, dentre eles o servidor de exibição /usr/bin/X, também o gerenciador de login /usr/sbin/*dm bem como o gerenciador de janelas que escolhi usar, e a própria janela do terminal onde executei o ‘free -m‘.

A Segunda: Por quê dessa diferença de 1012 para 808? Sendo que, em ambos os casos, estou sem ‘nada’ aberto. Estamos falando de 204 mb. Lembra quando seu computador tinha apenas 256 mb de RAM? Isso não faz muito tempo, pouco mais de 10 anos. Então será que existe algum garbage collector que possa limpar essa memória que parece ser morta? Ou ao menos exibir quem está usando quanto e porque.

Enquanto isso, tenho tentado entender esse comportamento, usando e abusando de ferramentas tais como:

NAME
smem – Report memory usage with shared memory divided proportionally.

NAME
gmemusage – graphically display memory used by running processes.

Note também que, por motivos de disco lento, optei por não usar SWAP aqui nessa máquina.
Confesso também que tenho feito uso de comandos para limpeza de memória, cache, e buffer de sistema de arquivos, tais como:

Clear PageCache only. # sync; echo 1 > /proc/sys/vm/drop_caches
Clear dentries and inodes. # sync; echo 2 > /proc/sys/vm/drop_caches
Clear PageCache, dentries and inodes. # sync; echo 3 > /proc/sys/vm/drop_caches
Flush the file system buffer. # sync

Mesmo assim, tudo é muito obscuro e vago.
Sigo tentando compreender.

Se alguém tiver mais informações sobre como se pode entender mais a respeito disso, por favor me ensine.
É preciso ter mais controle sobre o que está sendo armazenado dentro dos pentes de memória.

Xeu pegar outro sanduíche.

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *