Як перевірити, який процес використовує найбільше пам'яті


33

Коли я заходжу freeв один з серверів Prod, він показує, що використовується 70% пам'яті:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

Але я не знайшов, який процес використовує пам'ять, я спробував topкоманду, і вона показує процес, що використовує пам'ять лише 1,1 і 5,4%

Як я можу знайти, який процес використовує пам'ять?

Нижче наведені головні результати команд:

15085 couchbas  25   0 2784m 2.4g  40m S 183.7  1.5 299597:00 beam.smp
28248 tibco     18   0  124m 100m 3440 S 20.9  0.1   2721:45 tibemsd
15334 couchbas  15   0 9114m 8.6g 3288 S  9.0  5.4  12996:28 memcached
15335 couchbas  18   0  6024  600  468 S  2.0  0.0   1704:54 sigar_port
15319 couchbas  15   0  775m 2516  944 S  0.7  0.0 269:13.41 i386-linux-godu
12167 tibco     16   0 11284 1464  784 R  0.3  0.0   0:00.04 top
12701 root      15   0  451m 427m 2140 S  0.3  0.3  18:25.02 controller
13163 root      11  -5     0    0    0 S  0.3  0.0 289:58.58 vxglm_thread


Дякую за швидку відповідь. Чи є спосіб перевірити, що всі відкриті файли та який файл їсть пам'ять.

1
Спробуйте сортувати верхній результат - під час запуску натисніть Shift + m
Eenoku

Відповіді:


50

Це покаже вам 10 найкращих процесів, які використовують найбільшу кількість пам'яті:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

використання верху: коли ви відкрили верхнє натискання, mце короткий процес на основі використання пам'яті.

Але це не вирішить вашу проблему, в Linux все є або файлом, або процесом. тож файли, які ви відкрили, також будуть їсти пам'ять. тому це не допоможе.

lsof дасть вам усі відкриті файли з розміром файлу або зміщенням файлів у байтах.


5
Ви можете використовувати headзамість цього сценарію awk - він дає такий же вихід, і ви заощадите себе на написанні багатьох дивних символів.
стиропор летить

9

Ваш баран фактично не використовується. Linux просто кешує матеріали на вашому диску за замовчуванням, і поміщає те, що він зберігає, у розділ "використаний" оперативної пам'яті.

Якщо ви завантажите додатки, які фактично використовують цю оперативну пам’ять, це буде їх використання.

Дивіться http://www.linuxatemyram.com/


Хто щось сказав про Linux?
Тимофі Пуліам

в ОП працює процес "i386-linux-godu"
Жан-Міхаель Селері

6

Ви можете передавати ps та сортувати, щоб отримати процес, використовуючи найбільшу пам'ять. Це також дозволить вам вказати інші деталі процесу, які ви хочете побачити з ним:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PS: Вищенаведене передбачає, що ваш стовпчик пам'яті спочатку " сортувати -k 1 -n -r "


3

Ви можете скористатися командною плитною панеллю, щоб переглянути, які об’єкти плити використовуються ядром.
Також ви можете перевірити вихід / proc / meminfo

Шукайте ці 2 рядки у висновку

Slab:              68136 kB
SReclaimable:      21208 kB 

Вищенаведений приклад показує, що 68 МБ кеш-пам'яті використовується ядром, а 21 МБ може бути відтворено. Для повернення можна скористатися описаною тут технікою https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/#s-memory-tunables

echo 2 > /proc/sys/vm/drop_caches  

1

Для інтерактивного аналізу можна використовувати htop, а потім натискати функціональну клавішу, F6щоб вибрати порядок сортування, наприклад PERCENT_CPU(використання пам'яті у відсотках), M_RESIDENT(розмір пам'яті реального часу, реальна пам'ять, яка використовується), M_SIZE(розмір віртуальної пам'яті) або M_SHARE(розмір спільна пам'ять). Перші два - відповідні числа .

Зелені лінії - це нитки. Натисніть (верхній регістр) Kі Hприхойте їх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.