Come posso pulire o disabilitare la cache di memoria?


49

Dopo l'avvio del sistema, in pochi minuti la mia cache di memoria si riempie e inizia a utilizzare lo swap. Ecco uno screenshot di / proc / meminfo.

memoria

Tuttavia, se riesco a disabilitare questo processo / a pulire la cache una volta dopo, penso che il mio sistema accelererà in una certa misura. Correggimi se sbaglio qui.

Ho anche provato a pulire la memoria di Bleachbit, ma non sembra pulire correttamente la cache di memoria. Inoltre, la funzione è ancora in una fase sperimentale.

memoria bleachbit

Una domanda simile era già stata pubblicata qui: come posso disabilitare la cache di prefetch? , ma riguardava Ubuntu Server e anche le risposte riguardavano le impostazioni manuali ecc.

Quindi, voglio sapere se c'è qualche software per disabilitare / abilitare Memory Cache per Ubuntu 12.04.


Sei sicuro che questo risolverà il tuo problema? La memoria non si riempie senza un motivo. Ho anche avuto il problema che la mia memoria si stava riempiendo e la ho rintracciata tracker-miner. Dopo aver disinstallato tutti i pacchetti tracker, il mio problema è scomparso. Ho anche 4 GB di memoria e 2 GB sono usati dalle chaches, ma non ho problemi.
Daniel Kullmann,

1
@danielkullmann: si riferisce alla memoria cache, non alla memoria utilizzata dalle app ...
ish

@izx Sì, lo so. Potrebbe essere solo che cerchi la soluzione del problema sbagliato. Il kernel è abbastanza intelligente da non riempire la memoria con cache quando è necessario per i programmi. Ecco perché penso che i suoi problemi di memoria provengano da un programma che utilizza troppa memoria.
Daniel Kullmann,

@danielkullmann: Sono curioso di sapere come hai fatto risalire a un processo che sta divorando tutta quella memoria ... C'è qualche strumento / comando per quello?
Bharadwaj Srigiriraju,

Ho appena usato il comando htop e ordinato in base all'utilizzo della memoria.
Daniel Kullmann,

Risposte:


58

Nota: Linux NON "mangia" la tua RAM! Dai un'occhiata all'ottima risposta di Geirha di seguito per capire perché ...

Dopo la nota sopra, se ti senti ancora "ripulire" la cache potrebbe aiutarti, puoi sicuramente provare: è un one-liner dal terminale:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Non c'è modo semplice per disabilitare la cache, ma si può ottenere lo stesso effetto con la pulizia tutte le volte che ogni minuto , se si vuole:

  • Trasformalo in un cron-job
  • Premi Alt-F2, digita gksudo gedit /etc/crontabe aggiungi questa riga nella parte inferiore:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Questo pulisce ogni 15 minuti. Se lo si desidera, è possibile impostare 1 o 5 minuti modificando il primo parametro in *o */5anziché*/15

Un liner per conoscere REAL RAM libera, ad eccezione della cache

La risposta di Geirha spiega i dettagli, ma in breve, ottieni il numero di megabyte gratuiti con:

free -m | sed -n -e '3p' | grep -Po "\d+$"

che sul mio server della riga di comando da 2 GB restituisce un valore estremamente elevato 1835.


3
Ergh! Chiudere la cache è abbastanza male, ma fare un cronjob per questo? Voglio dire, questo "risolve" la domanda, per così dire, ma ciò non la rende meno dolorosa.
Reid,


@izx: hmm ... quindi è così che si crea un cronjob. Se sto per rilasciare periodicamente la cache, non significa che sto effettivamente rallentando il sistema? Se così fosse, penso che la tua risposta sembri più una risposta teorica che la risposta di Geirha. : p Buona risposta A proposito ...
Bharadwaj Srigiriraju,

1
@ForbiddenOverseer: L'ho inserito solo perché volevi "disabilitare" la cache e lasciarla cadere periodicamente è l'unico modo per farlo. La mia nota in alto (e il link di geirha) afferma chiaramente che la cache accelera il tuo sistema per la maggior parte del tempo, anche se sembra che stia "mangiando la tua RAM" --- quindi sì, IMO rallenterai il tuo sistema , ma volevi provarlo, quindi ho appena risposto alla tua domanda invece di assillarti e dirti che è una cattiva idea e quindi non dovresti farlo! Ti ho appena dato il potere di sperimentare ...: D
ish

1
Sto usando Ubuntu Server 12.04 LTS come VDS. Sto provando l'approccio fornito in questa risposta, ma ottengo costantemente tee: /proc/sys/vm/drop_caches: Permission denied. Qualche consiglio?
Eimantas,

44

Aiuto! Linux ha mangiato la mia RAM!

www.linuxatemyram.com lo spiega magnificamente in forma FAQ, con l'essenziale:

Cosa sta succedendo?

Linux sta prendendo in prestito memoria inutilizzata per la memorizzazione nella cache del disco. Questo sembra che tu abbia poca memoria, ma non lo sei! Va tutto bene!

Perché lo sta facendo?

La memorizzazione nella cache del disco rende il sistema molto più veloce! Non ci sono aspetti negativi, tranne che per i neofiti che confondono. Non toglie la memoria dalle applicazioni in alcun modo, mai!

Cosa succede se desidero eseguire più applicazioni?

Se le tue applicazioni vogliono più memoria, recuperano solo un pezzo che la cache del disco ha preso in prestito. La cache del disco può sempre essere restituita immediatamente alle applicazioni! Non sei a corto di ram!

Come faccio a vedere quanto RAM libero ho davvero?

Per vedere quanto ram le tue applicazioni potrebbero usare senza scambiare, esegui free -m e guarda la colonna "disponibile":

$ gratuito -m
              disponibile buff / cache condivisi gratuiti totali disponibili
Mem: 1504 1491 13 0 855       792
Scambio: 2047 6 2041
Questa è la tua risposta in mebibytes.


Fonte: come detto, l'eccellente www.linuxatemyram.com - per maggiori informazioni visitare.


1
@geirha: Grazie per il link ... È stato molto istruttivo e mi sono piaciuti gli esperimenti dati alla fine !!
Bharadwaj Srigiriraju,

@izx: tbh, ho difficoltà a decidere la risposta accettata. Per non parlare, questo link era in realtà informativo in ogni altro modo ...;)
Bharadwaj Srigiriraju,

@ForbiddenOverseer: vedi il mio commento nella mia risposta per una risposta dettagliata - ti ho dato la versione breve del motivo per cui non dovresti farlo, ma poi ho risposto alla tua domanda, dandoti il ​​potere di sperimentare e provarlo tu stesso. Se non pensi che la pulizia / eliminazione della cache ti aiuti, non farlo più :)
ish,

@izx, ho trovato un po 'difficile farlo in questo caso. Tuttavia, hai scritto un testo utile sull'argomento, quindi forse potresti semplicemente aggiungere l'URL alla tua risposta e cancelliamo la mia risposta?
geirha,

Non c'è bisogno, il tuo link in una risorsa eccellente; Ho appena incorporato alcune parti nella risposta (con attribuzione) in modo che ora sia un'alternativa perfettamente valida (in effetti la risposta migliore vista dal pubblico!) Ottimo lavoro, votato - benvenuto in 5k!
Ish,

4

Per verificare l'utilizzo corrente della memoria

 watch -n 1 free -m

o

 watch -n 1 cat /proc/meminfo

Per liberare spazio

 sudo sysctl -w vm.drop_caches=3

NOTA: questa azione non renderà il tuo sistema più veloce né influenzerà la sua stabilità e prestazioni, pulirà semplicemente la memoria utilizzata dal kernel Linux nelle cache.

o

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

NOTA: è possibile utilizzare cron job per pianificare l'esecuzione dei comandi sopra a intervalli di tempo specifici.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.