Select Page

Linux Terminal: проверить при помощи smem, кто использует всю память

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

About The Author

Leave a reply

Ваш адрес email не будет опубликован.