Che cos'è "memorizzato nella cache" nel comando principale?


46

Quando corro top, ottengo:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

Vedi la parte: 2256128k memorizzata nella cache? Cosa significa esattamente?

Sto confrontando due VPS di due provider, questo ha sempre una grande quantità lì (70% della memoria utilizzata) e l'altro provider VPS mostra sempre 0.

Risposte:


15

Quel numero prima della cache è la quantità di memoria fisica utilizzata dai buffer di cache per i file system.

In realtà non è correlato a SWAP, nonostante si trovi sulla riga "Scambia:".

Per verificare la mia risposta con un piccolo esperimento, prova quanto segue:

Esegui top e nota il valore di "cache". Adesso corri

dd if=/dev/zero of=~/trick bs=1M count=128

se corri di nuovo in alto noterai che 'cache' è cresciuto di 128M

Ora rimuovi il file

rm ~/trick

Esegui di nuovo la parte superiore e vedrai che "cache" è sceso di 128M

Quindi per Mem:

total = used + free e

used = <all apps> + buffers + cached

(dove buffer è fondamentalmente metadati per la cache). Un po 'confuso di un'interfaccia utente.


e posso influenzarlo comunque, ad es. limitarlo o disabilitarlo completamente?
KKK,

2
Perché vuoi farlo ?! con cosa farai ?! si tratta di come la cache del file system nella memoria phyiscal.

Perché la maggior parte del filesystem è un DB, il DB ha la sua cache, quindi suppongo che sarebbe bene limitare questa parte in qualche modo.
KKK,

Puoi farlo con qualche ricerca ma non ti consiglio. Ciò limiterà le prestazioni del FS

117

il kernel Linux utilizzerà la memoria disponibile per la memorizzazione nella cache del disco, a meno che non sia richiesto da un programma in esecuzione.

Questo è considerato buono; supponiamo che tu abbia 4 GB di RAM e che i tuoi programmi utilizzino solo 1 GB. Gli altri 3 GB andranno sprecati. Nonostante l'impressione "piacevole" di sapere che stai usando solo il 25% della tua memoria, la controparte è che l'altro 75% non viene utilizzato. Quindi il kernel lo usa per la memorizzazione nella cache dei file che migliora significativamente le prestazioni. È automatico; a differenza dei sistemi operativi precedenti, non è necessario decidere quanto dedicare alla cache del disco o configurarlo manualmente.

"La cache del disco Linux è molto discreta. Utilizza memoria di riserva per aumentare notevolmente la velocità di accesso al disco e senza togliere memoria alle applicazioni. Un archivio completamente usato di ram su Linux è un uso efficiente dell'hardware, non un segnale di avvertimento."

Questa è una domanda così comune che c'è un intero sito web ad esso dedicato:

http://www.linuxatemyram.com

Il sito Web ha anche un modo per svuotare la cache del disco in modo da poter eseguire alcune applicazioni e vedere quanto sono più veloci con la cache abilitata :)


4
Adoro la risposta, ma a causa della mancanza di reputazione non posso aggiornarla (ancora). Scusate.
KKK,

4
Non ti preoccupare, sono solo felice di essere di aiuto. Spero che le informazioni siano utili!
Roadmr,

QUESTA dovrebbe essere la risposta accettata. Oh bene . . . :(
ankush981

sicuramente dovrebbe essere la risposta accettata. linuxatemyram è un'ottima informazione!
Rafaelbattesti,
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.