C'è una spiegazione dettagliata molto buona qui: https://blogs.kde.org/2005/09/15/measuring-memory-usage
Ma essenzialmente: devi davvero scavare e capire come è configurata l'applicazione.
Quindi, ad esempio, guardando mysql:
PID PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6004 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:40.33 mysqld
16115 16085 composit 20 0 37900 27m 2908 S 0 0.2 0:00.37 mysqld
16116 16115 composit 20 0 37900 27m 2908 S 0 0.2 2:07.34 mysqld
16117 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld
16118 16116 composit 20 0 37900 27m 2908 S 0 0.2 3:19.79 mysqld
16119 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.01 mysqld
16120 16116 composit 20 0 37900 27m 2908 S 0 0.2 5:31.09 mysqld
16121 16116 composit 20 0 37900 27m 2908 S 0 0.2 14:19.53 mysqld
16122 16116 composit 20 0 37900 27m 2908 S 0 0.2 36:13.67 mysqld
16123 16116 composit 20 0 37900 27m 2908 S 0 0.2 30:30.64 mysqld
16124 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.15 mysqld
16493 16116 composit 20 0 37900 27m 2908 S 0 0.2 0:00.00 mysqld
La memoria totale utilizzata è di circa 25 MB (prendere i 27 MB di RES e sottrarre il condiviso (SHR))
L'ho convalidato controllando l'utilizzo totale della memoria (free -m, + / buffers / cache) prima e dopo aver emesso un "killall mysqld". Dopo aver ucciso tutti i processi mysqld, l'utilizzo della memoria è diminuito di 25 MB secondo "free -m".
Se vedi che ogni processo ha colonne VIRT, RES e SHR identiche, probabilmente sono solo thread dello stesso processo. (Le librerie Linux precedenti gestivano il thread generando più processi reali che essenzialmente occupavano la stessa memoria)
Se sono diversi, potresti essere in grado di stimarlo facendo una SOMMA di (RES - SHR). Ma questo funziona solo se i processi sono in realtà processi separati e non solo thread dello stesso processo. Anche l'esame del PPID (Parent Process ID) aiuta. Se hanno tutti lo stesso genitore, probabilmente sono solo dei thread (sebbene non necessariamente).
Sfortunatamente non esiste un buon modo semplice per rispondere a ciò in Linux. L'unico modo semplice è controllare "gratis" immediatamente prima di terminare il processo e ricontrollarlo immediatamente dopo. guarda la riga "- / + buffers / cache:" e vedi quanto uso della memoria è diminuito e che ti dirà quanto stava usando.