Чем занята оперативная память linux

Как определить, сколько памяти занимает процесс?

Linux – довольно гибкая система, выполнить задачи в которой можно разными способами. Сегодня мы рассмотрим, как узнать, сколько оперативной памяти (ОЗУ — оперативное запоминающее устройство или RAM — Random Access Memory) используется определенным процессом. Сама оперативная память представляет собой специальное устройство, которое используется для временного хранения данных и обеспечивает функционирование ПО.

ОЗУ не стоит путать с ПЗУ (постоянным запоминающим устройством): их отличие заключается в том, что оперативная память является энергозависимой (при выключении компьютера все данные исчезнут), в то время как память жесткого диска сохранит все данные даже после выключения машины. Поэтому и функции, которые они выполняют, также разнятся. Процессор использует оперативную память для быстрого доступа к данным — жесткий диск такую скорость обеспечить не может, поэтому при запуске программа загружается в оперативную память.

Мы отследим занимаемую память на примере процесса веб-сервера Apache.

Команда ps

Первым вариантом будет команда ps, с помощью которой можно получить список процессов, запущенных на сервере.

— идентификатор процесса, в нашем случае это число 897110.

# ps -p 897110 v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 897110 ? S 0:04 0 342 387153 35176 0.0 /usr/sbin/httpd.itk -k start

ОЗУ будет представлено в процентном соотношении к общему количеству доступной памяти. К сожалению, в данном примере этот процент крайне мал, и столбец %MEM показывает 0,0.

Команда ps имеет свои ключи, которые вы также можете использовать для удобства:

  • -A : все процессы;
  • -a : процессы, связанные с конкретным терминалом, кроме главных системных процессов сеанса;
  • -d : все процессы, кроме главных системных процессов сеанса;
  • T : все процессы на конкретном терминале;
  • a : процессы, связанные с текущим терминалом, а также процессы других пользователей;
  • r : информация только о работающих процессах;
  • x : процессы, отсоединённые от терминала.

Команда top

Второй вариант – использование команды top. Более продвинутые пользователи должны знать эту команду, так как она выводит информацию о нагрузке системы и обновляет ее в реальном времени.

# top -p 897110 top - 16:11:19 up 143 days, 13:09, 1 user, load average: 7.02, 6.89, 6.96 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 19.2%us, 4.8%sy, 0.1%ni, 75.3%id, 0.6%wa, 0.0%hi, 0.1%si, 0.0%st Mem: 65773676k total, 42553788k used, 23219888k free, 6596532k buffers Swap: 2097144k total, 0k used, 2097144k free, 27375052k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 897110 root 20 0 378m 34m 500 S 0.0 0.1 0:04.77 httpd.itk

Обратите внимание на столбцы VIRT и %MEM. Последний столбец показывает информацию, которая очень похожа на ту, что получили предыдущей командой. А вот столбец VIRT отображает занятую виртуальную память.

Читайте также:  Black cat linux это

Одним словом, виртуальная память – это некая комбинация ОЗУ и swap, которую использует запущенный процесс.

Обратите внимание, что команда top ограничена размерами окна, из-за чего игнорируется вся информация, которая не помещается на экран.

Получение занятой памяти из /proc

Последней командой для получения занятой процессором памяти будет обращение к псевдофайловой системе /proc.

# cat /proc/897110/status |grep -i VMSIZE VmSize: 387496 kB

Снова будет выведен результат, который схож с уже полученным ранее – виртуальная память, используемая процессом веб-сервера Apache.

Вот мы и разобрали на примере процесса Apache способы, которыми можно посмотреть занимаемую память.

Источник

Как в Linux узнать, какой процесс использует всю оперативную память (RAM)?

Если в операционной системе заканчивается свободная оперативная память, то это очень сильно влияет на её производительность. Система начинает работать заметно медленнее, уменьшается её «отзывчивость», происходит более долгое переключение между окнами, новые процессы не запускаются или запускаются очень медленно. По этой причине, если какой-то процесс расходует слишком много оперативной памяти или тем более всю свободную оперативную память, не оставляя ресурсов для остальной системы, то необходимо его выявить и принять меры для оптимизации.

Как узнать, сколько свободной памяти в Linux

Начнём с того, что убедимся, что дело действительно в нехватке оперативной памяти, а не в том что, например, центральный процессор слишком загружен. Для этого выполним очень простую команду:

Вы увидите примерно следующее:

  • Mem — физическая оперативная память
  • Swap — раздел подкачки (если недостаёт оперативной памяти, то система сбрасывает временно неиспользуемые данные на физический диск, а потом по мере необходимости вновь загружает их в оперативную память. С одной стороны, это позволяет продолжить работу в условиях нехватки оперативной памяти, но с другой — система начинает работать заметно медленнее, поскольку физический диск всегда медленнее ОЗУ, плюс нужно время для записи на диск и считывание с диска)
  • total — общее количество
  • used — используемая в данный момент память (вычисляется как total — free — buffers — cache)
  • free — неиспользуемая память
  • shared — память, используемая (преимущественно) в tmpfs
  • buff — память, используемая буферами ядра
  • cache — память, используемая страницами cache и slabs
  • buff/cache — сумма буферов и кэша
  • available — примерное количество оперативной памяти, доступное для запуска новых приложений без использования ими раздела подкачки. В отличие от поля free, это поле принимает в расчёт страницу cache и также то, что не вся рекуперируемая (пригодная для повторного использования) память будет возвращена для рекуперации из-за того, что элементы используются в данный момент
Читайте также:  Mono install linux ubuntu

Итак, если значение поля free, а в особенности поля available очень мало или равно нулю, значит нужно принимать меры, иначе рабочая станция или сервер будут работать крайне медленно либо могут полностью зависнуть.

Как просмотреть, какая программа потребляет больше всего оперативной памяти в top

Очень подробно о команде top, в том числе подсказки и интересные трюки описаны в статье «Как пользоваться командой top для наблюдения за процессами в Linux» — крайне рекомендуется ознакомиться.

По умолчанию программа top сортирует процессы по их нагрузке на центральный процессор. Чтобы посмотреть, по какому полю выполняется сортировка, нажмите клавишу x:

По умолчанию в top отображаются следующие виды памяти:

  • VIRT — общее количество используемой задачей виртуальной памяти, включает все коды, данные, совместные библиотеки, плюс страницы, которые были перенесены в раздел подкачки, и страницы, которые были размечены, но не используются
  • RES — используемая оперативная память, является подмножеством VIRT, представляет физическую память, не помещённую в раздел подкачки, которую в текущий момент использует задача. Также является суммой полей RSan, RSfd и Rssh.
  • SHR — размер совместной памяти, подмножество используемой памяти RES, которая может использоваться другими процессами
  • %MEM — доля задачи в использовании памяти (RES)

Для переключения между полями сортировки, используйте < и >. Обратите внимание, что это не курсорные клавиши, а разновидность скобок, для их использования переключитесь на английскую раскладку клавиатуры и нажимайте эти кнопки с зажатой клавишей Shift.

Пример сортировки по %MEM:

Сортировка по VIRT:

Как найти программы, которые используют больше всего памяти в ps

С помощью утилиты ps также можно составить список, отсортированный по количеству потребляемой памяти, для этого выполните:

ps -e -o pid,vsz,comm= | sort -n -k 2

Самые «прожорливые» процессы будут внизу:

Первый столбец — это PID процесса, затем идёт виртуальная память процесса в килобайтах, затем название программы.

Ещё одна элегантная команда с использованием ps:

Невозможно найти, через какой процесс утекает оперативная память — сумма памяти процессов меньше общей используемой памяти

В некоторых версиях ядер Linux присутствовала проблема утечки памяти на уровне ядра, поэтому нет никакой возможности обнаружить её инструментами пользовательского пространства. Пример такого ядра — 3.13.

Причём некоторые ядра допускают утечку памяти только в определённых условиях (пример: Linux Mint 17 при использовании btrfs).

Самым лучшим вариантом в этом случае является обновление ядра и системы в целом до новой версии.

Связанные статьи:

Источник

Информация об оперативной памяти в Linux. Свободная, занятая и тип памяти

ОЗУ RAM в Linux Свободная, занятая, тип памяти

Мы воспользуемся утилитами командной строки доступными для большинства Linux дистрибутивов.

Читайте также:  Linux find измененные файлы

Свободная и занятая оперативная память

Для получения информации о количестве свободной и занятой оперативной памяти в Linux можно использовать различные утилиты и команды. Рассмотрим несколько распространенных способов.

Команда free

Команда free очень простая, она выводит информацию о общем количестве оперативной памяти, о количестве занятой и свободной памяти, а также об использовании файла подкачки.

free всего занято свободно общая буф./врем. доступно Память: 4038844 1099804 1491184 39196 1447856 2611568 Подкачка: 1951740 0 1951740

По умолчанию объем памяти выводится в килобайтах. Используя опции, можно выводить объем памяти в других форматах. Некоторые опции:

Команда free Linux

Команда vmstat

Команда vmstat выводит различную статистику по использованию памяти. Используя ключ -s можно вывести подробную статистику в табличном виде.

vmstat -s 4038844 K total memory 1180932 K used memory 1694344 K active memory 542648 K inactive memory 1403152 K free memory 213312 K buffer memory 1241448 K swap cache . 

Команда vmstat Linux

Команда top

top — это утилита командной строки, которая используется для мониторинга процессов и используемых ресурсов компьютера.

В заголовке выводится информация об использованной оперативной памяти.

Утилита top Linux

Команда htop

Утилита htop, также как и top, используется для мониторинга ресурсов и процессов.

Для установки утилиты htop в Ubuntu Linux (Linux Mint и других Ubuntu/Debian-дистрибутивах) выполните команду:

Утилита htop Linux

Файл /proc/meminfo

Описанные выше команды, в качестве источника информации используют системные файлы из файлов, хранящихся в виртуальной файловой системе /proc . В файле /proc/meminfo содержится информация об использовании памяти. Выведем содержимое файла /proc/meminfo :

cat /proc/meminfo MemTotal: 4038844 kB MemFree: 1341788 kB MemAvailable: 2474596 kB Buffers: 214128 kB Cached: 1065564 kB SwapCached: 0 kB Active: 1743700 kB . 

Linux файл /proc/meminfo

Тип памяти и частота

Рассмотрим, как получить информацию об установленных в компьютер модулях оперативной памяти. Воспользуемся командной dmidecode

Используем следующую команду:

sudo dmidecode --type 17 sudo dmidecode --type 17 # dmidecode 3.1 Getting SMBIOS data from sysfs. SMBIOS 2.4 present. Handle 0x0026, DMI type 17, 27 bytes Memory Device Array Handle: 0x0025 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: None Locator: A0 Bank Locator: Bank0/1 Type: DDR2 Speed: 800 MT/s . 

В выводе команды будет информация о слотах оперативной памяти. Для каждого слота отображается установленный модуль оперативной памяти, его тип (поле Type ), размер (поле Size ), скорость/частота (поле Speed ) и другая информация.

В зависимости от системы и оборудования не всегда удается получить все данные, поэтому некоторые поля могут быть пустыми или иметь надписи Not provided/Unknown.

Заключение

Мы рассмотрели различные способы для просмотра информации о доступной и занятой оперативной памяти, а также показали, как вывести информацию об установленных модулях оперативной памяти.

Для отслеживания использования ресурсов компьютера существует множество графических программ. Найти их можно в нашем каталоге программ для Linux в разделе Система/Мониторинг.

Источник

Оцените статью
Adblock
detector