Тут є дуже хороше детальне пояснення: https://blogs.kde.org/2005/09/15/measuring-memory-usage
Але по суті: Вам потрібно по-справжньому копатися і розуміти, як налаштовано додаток.
Так, наприклад, дивлячись на 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
Загальна використана пам'ять становить близько 25 Мб (візьміть RES 27 МБ і відніміть загальну (SHR))
Я підтвердив це, перевіривши загальне використання пам'яті (вільний -m, + / буфери / кеш) до та після видачі "mysqld для killall". Після знищення всіх процесів mysqld використання пам'яті знизилося на 25 Мб відповідно до "free -m".
Якщо ви бачите, що кожен процес має однакові стовпці VIRT, RES та SHR, вони, ймовірно, є лише нитками того самого процесу. (Старіші бібліотеки Linux обробляли потоки шляхом нерестування декількох реальних процесів, які по суті займали одну пам'ять)
Якщо вони різні, ви можете це оцінити, зробивши SUM (RES - SHR). Але це працює лише в тому випадку, якщо процеси насправді є окремими процесами, а не просто нитками того самого процесу. Перегляд PPID (батьківського процесу ідентифікатор) також допомагає. Якщо всі вони мають одного і того ж батька, вони, ймовірно, є лише нитками (хоча це не обов'язково).
На жаль, не існує справжнього хорошого простого способу відповісти на це в Linux. Єдиний простий спосіб - перевірити "безкоштовно" безпосередньо перед припиненням процесу та перевірити його ще раз одразу після. подивіться на рядок "- / + буфери / кеш:" і подивіться, наскільки зменшилось використання пам'яті, і це скаже вам, наскільки вона використовується.