[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Disabilitare tutti i filesystem in ram



On 28/12/16 18:40, Davide Prina wrote:
On 28/12/2016 12:03, Nicola Manca wrote:

Ho un problema di consumo di ram sul portatile,
e da cosa lo capisci?

diciamo che il comportamento del SO per me è un problema, poi magari è normale ma da quanto ho letto su internet prima di chiedere in lista non è così. Spero che quanto sotto possa chiarire le mie perplessità, poi magari va tutto bene ma da quanto ho letto/capito non mi sembra e questo colpisce pesantemente le prestazioni della macchina quando sotto stress.

riesco in nessun modo ad azzerare la voce buff/cache che ha sempre
600/900MB occupati.

non ho capito!
Ma se disabiliti la buff/cache avrai prestazioni pessime del tuo
sistema. O forse non ho capito io cosa intendi?

Da quanto ho letto buff/cache dovrebbe essere occupato in modo flessibile, rimpicciolendosi se un programma richiede memoria. Questo non avviene e se lancio programmi un po' esosi (tipo analisi dati in python) non posso allocare in totale più di 2.8 GB su 4 GB di RAM perchè buff/cache non si svuota. Il risultato è che la swap si riempie e tutto diventa lentissimo per poche centiaia di MB utilizzati (quando dovrei avere ancora girca 1 GB di margine).

$ free
    total        used        free      shared  buff/cache   available
mem:
swap:

mi stai dicendo che vuoi portare a zero la cella della riga "mem:" e
colonna "buff/cache"?

$ man free
[...]
 buffers  Memory used by kernel buffers (Buffers in /proc/meminfo)

 cache    Memory used by the page cache and slabs (Cached and
          SReclaimable in /proc/meminfo)
[...]

se è questo che intendi, allora è meglio che ti documenti un po', qui
alcuni link cercati in questo momento:
https://pdos.csail.mit.edu/archive/exo/exo-internals/node11.html
https://en.wikipedia.org/wiki/Slab_allocation
http://www.secretmango.com/jimb/Whitepapers/slabs/slab.html

o andare direttamente sulla fonte della documentazione di Linux:
https://www.kernel.org/doc/Documentation/

Ho provato con "echo 3 > /proc/sys/vm/drop_caches"
ma nulla

ma sai a cosa serve quel comando?

"Use of this file can cause performance problems. Since it discards
cached objects, it may cost a significant amount of I/O and CPU to
recreate the dropped objects, especially if they were under heavy use.
Because of this, use outside of a testing or debugging environment is
not recommended."

leggi qui:
https://www.kernel.org/doc/Documentation/sysctl/vm.txt

"testing" era esattamente la mia intenzione, quel comando dovrebbe azzerare buff/cache ma non lo fa, credo che il motivo sia lo stesso che non permette al SO di liberarla in caso di picchi di richiesta di RAM e che fa swappare.

durante il normale utilizzo piuttosto mi si riempie la swap,

se non vuoi che venga usato lo swap puoi:
1) disabilitarlo
2) usare swappiness per regolarne l'uso

Io vorrei che prima di usare la swap si svuotasse buff/cache, cosa che dovrebbe accadere a quanto ho letto in rete (ad sempio come mostrato da http://www.linuxatemyram.com/play.html)

però non devi intervenire sulla gestione di cache/buffer, altrimenti fai
calare drasticamente le prestazioni di tutto il sistema.

infatti era solo per test, non lo farei durante il normale utilizzo

ma Linux non libera la RAM.

non sei contento della gestione della RAM che fa Linux?
Il fatto che la RAM sia occupata non è negativo, anzi è un fattore
positivo: perché rilasciare RAM quando magari hai bisogno fra qualche
millisecondo di quello che ora ti sembra inutile?

In generale sono contento, ma mi sembra strano che con 4GB di RAM, avendo plasma aperto, non posso avere più di 2.8 GB di RAM allocata per via di buff/cache che non si svuota, quando parte la swap il sistema diventa lentissimo e di solito sono solo picchi di utilizzo di qualche minuto quindi peravo in più flessibilità.

Credo che il motivo sia che ho dei file
systems in RAM, ma con systemd non so come verificarlo o disabilitarlo.
Sapete aiutarmi?

questo è l'output di cat /proc/mounts:
[...]

perché guardare tutto ciò?
Lascia stare la gestione interna di quanto è fatto dal sistema.
Secondo me è meglio limitarsi a (cosa ritornano?):

$ cat /etc/fstab
$ df -h
$ dpkg -l | grep swap

Se disabiliti tutti i filesystem in RAM, allora non ti funziona più
nulla, non so se puoi non averli più in RAM... ma anche in questo caso
avresti un degrado eccessivo delle prestazioni di tutto il sistema.

ma servono tutti? e possono giustificare 600MB - 1.2GB di memoria allocata? Mi sembra strano e pensavo ci fosse qualcosa di sbagliato, magari un programma che è noto dare problemi (tracker?!?) o altro che posso fare per verificare cosa richieda tutte queste risorse.

Ciao
Davide


ciao e grazie!


Reply to: