GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:determinare correttamente l'utilizzo della memoria in Linux?

Sono un po' confuso su alcuni dei risultati che vedo da ps e gratuito .

Sul mio server, questo è il risultato di free -m

[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2048       2033         14          0         73       1398
-/+ buffers/cache:        561       1486
Swap:         2047         11       2036

La mia comprensione di come Linux gestisce la memoria è che memorizzerà l'utilizzo del disco nella RAM, in modo che ogni accesso successivo sia più rapido. Credo che questo sia indicato dalle colonne "in cache". Inoltre, nella RAM sono memorizzati vari buffer, indicati nella colonna "buffer".

Quindi, se ho capito bene, l'utilizzo "reale" dovrebbe essere il valore "usato" di "-/+ buffer/cache" o 561 in questo caso.

Quindi supponendo che tutto ciò sia corretto, la parte che mi lancia sono i risultati di ps aux .

La mia comprensione di ps risultati, è che la 6a colonna (RSS), rappresenta la dimensione in kilobyte utilizzata dal processo per la memoria.

Quindi, quando eseguo questo comando:

[[email protected] ~]# ps aux | awk '{sum+=$6} END {print sum / 1024}'
1475.52

Il risultato non dovrebbe essere la colonna "usata" di "-/+ buffer/cache" da free -m ?

Quindi, come posso determinare correttamente l'utilizzo della memoria di un processo in Linux? A quanto pare la mia logica è sbagliata.

Risposta accettata:

Copia/incolla spudoratamente la mia risposta da serverfault proprio l'altro giorno 🙂

Il sistema di memoria virtuale Linux non è così semplice. Non puoi semplicemente sommare tutti i campi RSS e ottenere il valore riportato used di free . Ci sono molte ragioni per questo, ma ne prenderò un paio di quelle più grandi.

  • Quando un processo si biforca, sia il genitore che il figlio verranno mostrati con lo stesso RSS. Tuttavia Linux utilizza copy-on-write in modo che entrambi i processi utilizzino davvero la stessa memoria. Solo quando uno dei processi modifica la memoria, questa verrà effettivamente duplicata.
    Ciò causerà il free numero deve essere inferiore al top Somma RSS.

  • Il valore RSS non include la memoria condivisa. Poiché la memoria condivisa non è di proprietà di nessun processo, top non lo include in RSS.
    Ciò causerà il free numero deve essere maggiore del top Somma RSS.


Linux
  1. Il comando gratuito in Linux spiegato con esempi

  2. Determinazione dell'utilizzo del disco in Linux utilizzando il comando "du".

  3. Come calcolare l'utilizzo della memoria in Linux usando sar, ps e free

  4. limitare l'utilizzo della memoria in R sotto Linux

  5. Come trovare l'utilizzo della memoria dell'utente in Linux

Comando gratuito Linux (controlla l'utilizzo della memoria)

Comando gratuito in Linux

Come interpretare l'utilizzo della memoria top/htop?

Esempi di comandi gratuiti in Linux

Trova la dimensione della RAM in Linux

Determinazione corretta dell'utilizzo della memoria in Linux