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.