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?

  • Impostazione del fuso orario su linux (ubuntu)
  • Diversi modi per get l'indirizzo IP da una casella Linux
  • CentOS partizione che segnalano lo spazio
  • Come esportre la chiave pubblica di SSH?
  • Strani processi su Server consumano la CPU
  • Quando APC assegna memory?
  • 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.

  • I lavori di Linux cron vengono eseguiti in sequenza o in parallelo?
  • È ansible ssh o rsync in un sistema il cui file-system è rimontato in sola lettura?
  • Il distriggersre l'accesso root aumenta la sicurezza?
  • il backup del repository SVN su Ubuntu linux in una condivisione di Windows
  • Come limitare gli utenti in LDAP per l'accesso a un sottogruppo specifico di macchine Linux
  • Puppet: come eseguire un esecuttore solo se il burattino ha apportto modifiche
  • 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.