Как получить десять процессов, использующих память (агрегация дочерних/инстансов) с процентами от общей ОЗУ

TR=`free|grep Mem:|awk '{print $2}'`;ps axo rss,comm,pid|awk -v tr=$TR '{proc_list[$2]+=$1;} END {for (proc in proc_list) {proc_pct=(proc_list[proc]/tr)*100; printf("%d\t%-16s\t%0.2f%\n",proc_list[proc],proc,proc_pct);}}'|sort -n |tail -n 10


Данная команда выполняет следующие действия:

1. Определяет общий объем доступной оперативной памяти (RAM) с помощью команды free.

2. Получает список всех процессов в системе с их использованием памяти в RSS (Resident Set Size) с помощью команды ps.

3. Агрегирует использование памяти по процессам с помощью awk, суммируя значение RSS для каждого процесса.

4. Вычисляет процентное соотношение использования памяти каждого процесса относительно общего объема доступной оперативной памяти.

5. Сортирует полученный список процессов по возрастанию использования памяти.

6. Выводит 10 процессов с наибольшим использованием памяти вместе с их размером в RSS и процентным соотношением.

Альтернативными командами для анализа использования памяти в Linux могут быть top, htop, smem, pmap и vmstat. Передаваемый аргумент TR — это общий объем доступной оперативной памяти в системе, используемый для вычисления процентного соотношения.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *