Come posso determinare la memory utilizzata da un process forgiato (Linux)?

A seguito di questa domanda . Debian, se questo è importnte.

Capisco che qualche memory sia condivisa tra i processi forgiati. Come posso quindi determinare la quantità di memory utilizzata da un process / insieme di processi forgiati?

  • Perché rsync si blocca? E perché un tale process forgiato è quasi inattivo (come visto in iotop)?
  • Tuning NFS per latenza minima
  • perdita di memory? RHEL 5.5. RSS sembra ok, quasi nessuna memory libera sinistra, swap usato fortemente
  • La console Linux è inutilizzabile quando il server LDAP è in discesa
  • Strumenti Amazon EC2 per Debian?
  • obbligando il traffico di networking a percorrere tramite un'interface specifica, non predefinita
  • Utilizzando lo strumento smem e suggerito in questa domanda simile , ottengo valori come:

    Command Swap USS PSS RSS /usr/sbin/spamd --create-pr 0 16820 24974 41628 spamd chil 0 19388 27581 44176 spamd chil 0 32328 40038 55708 

    Capisco la colonna di swap e la colonna RSS è ciò che normalmente viene segnalato (ad es. In ps). Dalla lettura della documentazione smem, suona come USS è la memory specifica per quel figlio e PSS è una porzione della memory condivisa in tutti i processi. Tuttavia, l'aggiunta di USS a PSS offre valori più alti di RSS, e ho pensato che la condivisione significherebbe less (quindi suppongo di aver interpretato in modo non corretto).

    Non sono legato allo strumento smem. Vorrei solo un modo per get un numero di "memory" che rifletta in qualche modo la quantità di memory reale che il process sta usando.

  • 1TB Seagate Barracuda ST31000528AS - Inaspettato "settori non corretta offline"
  • screenshot CLI di linux senza X
  • Il modo più efficace per cambiare il prompt dei comandi di Linux per tutti gli utenti?
  • manutenzione / installazione di gemme ruby / ruby su binari su Linux in generale e Gentoo
  • Linux rdesktop ERROR recv Connessione resettata da peer
  • Forzare il server DHCP per rinnovare l'indirizzo IP di una macchina client, senza fare nulla nella macchina client
  • 2 Solutions collect form web for “Come posso determinare la memory utilizzata da un process forgiato (Linux)?”

    La dimensione proporzionale è probabilmente la migliore figura di utilizzo della memory per process disponibile. È il formato impostato univoco + (le pagine condivise / # dei processi condivise).

    Quindi un process ha utilizzato 44176 pagine, di cui 19388 sono uniche per quel process. Ciò significa che 24788 sono condivisi con gli altri.

    Guardando PSS come USS + (peso condiviso). Il peso in questo caso è 8193, ovvero la percentuale di pagine di memory condivisa (24788) attribuibili a questo process. Più casi di un'applicazione che hai pagine di condivisione, minore è il peso di ciascun process.

    È ansible sum PSS in più processi e non si contano le pagine condivise più di una volta. Tuttavia, non è ansible sum USS e PSS e si aspettano RSS perché PSS include già USS.

    Come lo capisco (ma qualcuno mi faccia correggere se sono sbagliato), solo il segmento di programma viene condiviso quando un process è forzato – i segmenti di dati divengono separati.

    Così, l'eseguibile (binario) e tutte le librerie condivise caricate saranno condivise tra i processi.

    Ogni process otterrà la propria copia (*) di qualsiasi memory allocata prima della fork, ma each memory assegnata successivamente sarà univoco a tale process.

    (*) un O / S effettivamente intelligente potrebbe evitare di effettivamente allocare segmenti di dati per la copia del bambino utilizzando una copia sull'algorithm di scrittura , in modo tale che la memory viene assegnata solo se entrambi i tentativi di modificarlo. Vedi qui.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.