Linux Terminal: проверить при помощи smem, кто использует всю память
Будучи системным администратором или даже простым пользователем, который использует Linux на своем рабочем столе, однажды вы заметите, что что-то ест всю память системы.
Первое, что вы обязаны знать, так это как как измерить использования памяти в Linux. Но не волнуйтесь, если Linux Kernel использует вашу память для кэширования файлов.
Давайте взглянем на хорошую небольшую программу, которая может помочь нам найти который процесс/пользователи используют память в наших системах.
smem – это тулза, которая может предоставить неоднократный отчет о памяти на системах Linux. В отличие от существующих средств, smem может сообщить proportional set size (PSS), который более ясно показывает количество памяти, используемой библиотеками и приложениями в системе виртуальной памяти.
Так как большая часть физической памяти, как правило, общая для нескольких применений, стандартное измерение памяти, известная как proportional set size (RSS), значительно переоценивает память. Параметр PSS вымеряет для каждого приложения «справедливую долю» в каждой общей области, вместо того, чтобы показывать реальные измерения.
smem имеет множество функций:
- список обзора системы
- список процессов, преобразований или пользователей
- фильтрация по процессу, преобразованиях или пользователях
- конфигурация колонок из нескольких источников данных
- конфигурирация системы единиц и процентов
- настройка колонтитулов и итогов
- чтение данных в реальном времени from/proc
- чтение данных из каталога зеркала или сжатых архивов
- lightweight capture tool для встраиваемых систем
- встроенная графика генерации
Содержание
Установка
Если вы используете Debian, Ubuntu или Mint, вы можете установить smem непосредственно из официального репозитория с помощью команды:
$ sudo apt-get install smem
Пользователи Arch Linux могут установить пакет из AUR repository.
Пользователи Red Hat/Fedora/CentOS/SuSE могут использовать предварительно скомпилированных двоичные, которые можно скачать непосредственно с официального сайта, для вашего удобства вы можете скопировать и вставить эти команды, который поставят команду smem в ваш /usr/local/bin каталог:
cd /tmp/ wget http://www.selenic.com/smem/download/smem-1.3.tar.gz tar xvf smem-1.3.tar.gz sudo cp /tmp/smem-1.3/smem /usr/local/bin/ sudo chmod +x /usr/local/bin/smem
Базовое использование
smem отчитывается об использовании физической памяти, принимая во внимание общие страницы памяти. Неразделенная оперативная память в процентах, как USS (Unique Set Size). Общая память делится поровну между процессами обмена этой памяти. Разделенная память (USS) плюс доля процесса разделяемой памяти будут в отчете как PSS (Proportional Set Size). USS и PSS включают только физическую память. Они не включают в себя память, которая была выгружена на диск.
Базовый способ использования покажет запущенные процессы с объемом использованной памяти. Чтобы, это увидеть, нужно запустить команду smem без опций, эта команда выдаст результат, похожий на этот:
# smem PID User Command Swap USS PSS RSS .... 4223 linuxaria /usr/lib/chromium-browser/c 0 9144 11696 29132 14280 root python ./smem 0 11580 11839 13680 2180 linuxaria /usr/bin/python /usr/share/ 0 12956 14691 24392 2144 linuxaria python /usr/lib/linuxmint/m 0 20252 22337 35648 2121 linuxaria Thunar --daemon 0 13316 23122 44404 2123 linuxaria xfdesktop 0 24004 24924 36032 13095 linuxaria /usr/lib/chromium-browser/c 0 27536 30996 53328 2577 linuxaria /usr/bin/python /usr/lib/ub 0 34192 35112 41300 2127 linuxaria /home/riccio/copy/x86_64/Co 0 40268 41081 52248 10720 linuxaria /usr/lib/chromium-browser/c 0 38684 42107 63928 10561 linuxaria /usr/lib/chromium-browser/c 0 43956 48137 71644 10579 linuxaria /usr/lib/chromium-browser/c 0 46276 50290 73484 5605 linuxaria transmission-gtk /tmp/[kick 0 48616 51508 65148 8938 linuxaria /usr/lib/firefox/plugin-con 0 48960 55428 71132 2186 linuxaria /home/linuxaria/.dropbox-dist/ 0 55524 56061 64820 1722 root /usr/bin/X :0 -audit 0 -aut 0 52360 73110 96008 10623 linuxaria /usr/lib/chromium-browser/c 0 114224 121888 149236 4171 linuxaria chromium-browser --disable- 0 131044 140415 165780 7050 linuxaria /usr/lib/thunderbird/thunde 0 253428 256803 273152 2644 linuxaria /usr/lib/firefox/firefox 0 528420 537423 558992
Мы видим на этом примере (мой рабочий стол), что процесс, который ест больше оперативной памяти – это Firefox, а на втором месте – Thunderbird.
Полезная опция -u: она показывает сумму памяти, которую использует один юзер:
#smem -u User Count Swap USS PSS RSS daemon 1 0 196 197 368 rtkit 1 0 300 312 1396 nobody 1 0 428 442 1600 mdm 2 0 600 695 1808 avahi 2 0 568 806 2420 syslog 1 0 1032 1043 1884 messagebus 1 0 1124 1207 2048 root 40 0 96568 123002 203372 linuxaria 83 0 1539864 1640378 2222556
Можно добавить -p к этой команде (а также ко всем остальным), чтобы показать процент значений:
#smem -u -p User Count Swap USS PSS RSS daemon 1 0.00% 0.00% 0.00% 0.00% rtkit 1 0.00% 0.00% 0.00% 0.02% nobody 1 0.00% 0.01% 0.01% 0.02% mdm 2 0.00% 0.01% 0.01% 0.02% avahi 2 0.00% 0.01% 0.01% 0.03% syslog 1 0.00% 0.01% 0.01% 0.02% messagebus 1 0.00% 0.01% 0.01% 0.03% root 40 0.00% 1.18% 1.47% 2.41% linuxaria 83 0.00% 19.29% 20.48% 27.58%
Или, если вы предпочитаете расширенный системный вид использования памяти, вы можете использовать -w
#smem -w -p Area Used Cache Noncache firmware/hardware 0.00% 0.00% 0.00% kernel image 0.00% 0.00% 0.00% kernel dynamic memory 64.55% 62.42% 2.13% userspace memory 22.12% 3.00% 19.12% free memory 13.33% 13.33% 0.00%
С -w я предлагаю использовать также опцию -R REALMEM, это значение объема физической памяти. Оно позволяет smem определить количество памяти, используемой прошивкой/аппаратными средствами в общесистемном (-w) производстве. Его также можно использовать в качестве общего размера памяти для базы в процентах.
#smem -R 8G -w -p Area Used Cache Noncache firmware/hardware 2.83% 0.00% 2.83% kernel image 0.00% 0.00% 0.00% kernel dynamic memory 63.02% 60.95% 2.07% userspace memory 21.60% 2.91% 18.68% free memory 12.56% 12.56% 0.00%
Создание графики памяти Linux с smem
С smem (и теми, кто имеет библиотеки matplotlib) дает возможность генерировать полосные и круговые диаграммы с помощью всего нескольких вариантов:
Показать гистограммы со столбцами “pss и uss”:
#smem --bar pid -c "pss uss"
Создает круговые диаграммы процессов, которые начинаются с ‘к’ в работающей системе:
#smem -P '^k' --pie=name
Свежие комментарии