Il y a une très bonne explication détaillée ici: https://blogs.kde.org/2005/09/15/measuring-memory-usage
Mais essentiellement: vous devez vraiment creuser et comprendre comment l'application est configurée.
Ainsi, par exemple, en regardant 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 mémoire totale utilisée est d'environ 25 Mo (prenez le RES de 27 Mo et soustrayez le partagé (SHR))
J'ai validé cela en vérifiant l'utilisation totale de la mémoire (free -m, + / buffers / cache) avant et après l'émission d'un "killall mysqld". Après avoir tué tous les processus mysqld, l'utilisation de la mémoire a chuté de 25 Mo selon "free -m".
Si vous voyez que chaque processus a des colonnes VIRT, RES et SHR identiques, il s'agit probablement de threads du même processus. (Les anciennes bibliothèques Linux géraient le filetage en générant plusieurs processus réels qui occupaient essentiellement la même mémoire)
S'ils sont différents, vous pourrez peut-être l'estimer en faisant une SOMME de (RES - SHR). Mais cela ne fonctionne que si les processus sont en fait des processus séparés et pas seulement des threads du même processus. La recherche du PPID (Parent Process ID) aide également. S'ils ont tous le même parent, ce ne sont probablement que des fils (bien que pas nécessairement).
Malheureusement, il n'y a pas vraiment de bon moyen de répondre à cela sous Linux. Le seul moyen simple consiste à cocher «gratuit» immédiatement avant de terminer le processus et à le vérifier à nouveau immédiatement après. regardez la ligne "- / + buffers / cache:" et voyez combien l'utilisation de la mémoire a diminué et cela vous dira combien elle utilisait.