Что использует оперативную память linux

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

В этой статье мы рассмотрим, как получить информацию об оперативной памяти (RAM) в Linux.

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

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

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

Команда free

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

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

  • -m — в мегабайтах
  • -g — в гигабайтах
  • -h — автоматически определить формат

Команда vmstat

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

Команда top

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

Запуск утилиты top :

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

Команда htop

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

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

Запуск утилиты htop :

Файл /proc/meminfo

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

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

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

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

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

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

Заключение

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

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

Источник

Разбираемся, как Linux использует оперативную память

Ошибочное мнение

Многим кажется что Linux жёстко “течёт” по памяти во время своей работы. Но это не так, дело в неправильной визуализации.

Как видно, used память не изменяется, а cached получили максимальный прирост. И остаётся достаточно мало Free памяти. Но если она начнёт расходоваться реальными приложениями – Linux начнёт освобождать Cached-память.

Зачем вообще нужна Cached-память? Чтобы не обращаться лишний раз к медленному дисковому I/O, например.

Реально разбираться в проблеме стоит если растёт именно used-память.

Как читать вывод Free

Для того чтобы понимать что происходит необходимо уметь читать вывод команды free :

  • Mem-total – общий объём имеющейся оперативной памяти без учёта swap
  • Mem cached – как правило кэшированное дисковое I/O. Очищать кэш – затратное дело (одно только принятие решения о каждой области памяти чего стоит) и просто так этим заниматься, когда свободной памяти достаточно – странное решение.
  • Mem used – память использованная приложениями, буферами, кэшами
  • Mem free – вообще никак не используемая в текущий момент память
  • Swap-total – общий объём swap

Когда нужно беспокоиться, а когда нет

  • buffers/cache /Mem-total 1/2 – вообще, ситуация так себе, система должна начать сильно тормозить
  • Swap used > 2Gb (при объёмах памяти до 16Gb) и эта цифра РАСТЁТ НА ГЛАЗАХ – тоже ситуация не очень.
Читайте также:  Сборка windows 10 1607 обновление

Чистить swap дело тоже довольно затратное, так что если не растёт, -/+ buffers cache free довольно велика – то и фиг с ним.

Источник

Как анализировать вывод /proc/meminfo в Linux

Файловая система /proc — это виртуальная файловая система. Она не хранится на диске, а создается в памяти и используется для предоставления информации о системе (первоначально о процессах, отсюда и название).

Из /proc/meminfo можно получить информацию о свободной памяти, об используемой (и физической, и swap), а также о разделяемой (shared memory) и буферах.

Подробно файловая система /proc описана в man.

Сначала посмотрим показатели, на которые следует обращать внимание в первую очередь.

Основные показатели

MemTotal : доступный объем оперативной памяти (физическая память за вычетом нескольких зарезервированных битов и бинарного кода ядра).

MemFree : Сумма LowFree и HighFree.

MemShared : 0; приведен здесь из соображений совместимости и всегда равен нулю.

Buffers : память в буферном кеше. В настоящее время бесполезен в качестве метрики. Это временное хранилище для страниц, ожидающих записи на диск. Не должно быть слишком большим (обычно около 20 МБ).

Cached : память в кэше страниц за вычетом SwapCache.

SwapCache: память, которая когда-то была выгружена в своп, но потом загружена обратно и все еще находится в файле подкачки. Если будет необходимость в выделении памяти, то эту память не нужно будет выгружать повторно, так как она уже находится в свопе. Это экономит операции ввода-вывода.

Прочие показатели

Cтраницы кэша делятся на «активные» и «неактивные». Идея заключается в том, что если вам нужна память и ее можно взять из кэша, то она будет забрана из неактивных страниц, поскольку ожидается, что она больше не будет использоваться. Подсистема виртуальной памяти постоянно отслеживает, какая память используется, и отмечает это в таблице страниц (pagetable) специальным битом.

Страницы также могут перемещаться обратно в активные. Активные страницы упорядочены в порядке «не использовалась дольше всех» (хотя это очень грубо и в реальности все немного сложнее). Давно не использованные страницы можно переместить в неактивные. В приведенном выше примере неактивная память разделена на две части. Иногда она разбивается на три.

Active : память, которая использовалась совсем недавно. Обычно не освобождается без крайней необходимости.

Inact_dirty : «грязная» означает, что «необходима запись на диск или в своп». Для ее освобождения требуется больше работы. Здесь могут быть файлы, которые еще не записаны на диск. Операции записи на диск происходят не сразу, чтобы не снижать производительность ввода-вывода. Например, если вы пишете логи, то, возможно, лучше подождать, пока у вас будет готова полная запись лога, прежде чем отправлять ее на диск.

Inact_clean: память, которую можно легко освободить. Ядро пытается сохранить немного чистых страниц, чтобы было проще «дышать».

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

Статистика памяти

HighTotal : размер области верхней памяти. Область верхней памяти (highmem) — это вся память, выше (приблизительно) 860 МБ физической ОЗУ. Доступ к этой памяти осуществляется через косвенные механизмы доступа. Здесь может находиться кэш данных.

LowTotal: общий объем памяти без highmem-памяти.

LowFree : объем свободной памяти в нижней области памяти. Это память, к которой ядро может обращаться напрямую. Все структуры данных ядра должны находиться этой области.

SwapTotal : общий физический размер свопинга.

SwapFree : количество свободной памяти в свопинге. Swap — память, которая была выгружена из ОЗУ и временно находится на диске.

Dirty : память, ожидающая записи на диск.

Writeback: память, которая в настоящий момент записывается на диск.

Читайте также:  Zabbix lsi megaraid windows

Mapped : отображаемые в память файлы с помощью mmaped, например, библиотеки.

Slab : кеш внутренних структур ядра.

Committed_AS: оценка объема оперативной памяти, необходимой для 99,99% гарантии того, что для текущей нагрузки системы не будет OOM (out of memory, нехватки памяти). Обычно ядро позволяет выделять больше памяти, чем доступно в системе (overcommit). Например, при выделении 1 ГБ памяти через malloc, на самом деле ничего не происходит. Только когда вы начнете ИСПОЛЬЗОВАТЬ эту память, вам выделят столько памяти, сколько вы будете использовать. То есть вы берете ипотеку и надеетесь, что банк не разорится. Также могут быть случаи, когда вы используете mmap файл, который используется только при записи в него, и вы получаете приватную копию этих данных. Хотя обычно они разделяются между процессами. Committed_AS — это приблизительная оценка того, сколько памяти / свопинга вам понадобится в худшем случае.

PageTables : объем памяти, выделенный для таблиц страниц.

ReverseMaps : количество выполненных обратных отображений.

VmallocTotal : общий размер области памяти vmalloc.

VmallocUsed : используемая память vmalloc.

VmallocChunk : самый большой свободный непрерывный блок в области vmalloc.

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

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

Обычно системной информации о памяти можно доверять, но даже она может быть легко истолкована неверно. Например, посмотрим на top.

Что может сбить с толку, так это буфер и кэш:

Можно увидеть, что используется 16124948K, но почти все эти 15 ГБ используются под кэш и буфер, и в случае, если память потребуется другому процессу, то она будет немедленно освобождена.

Система использует 2448184 КБ (= 2 ГБ) для приложений / процессов, при этом потенциально свободно 13 ГБ, используемой для буферизации и кэширования. Для оценки потребления памяти процессом, вы должны использовать команду free до, во время и после запуска процесса, проделывая это несколько раз, чтобы получить среднее значение оцениваемого показателя.

Для получения информации о потреблении памяти конкретного процесса можно использовать следующие команды:

Всех, кто хочет с нуля научиться управлять серверами и развиваться как системный / инфраструктурный инженер или DevOps-инженер приглашаем на страницу курса для более подробного ознакомления с программой и процессом обучения.

Источник

Управление памятью в Linux. Физическая и Виртуальная память

Обновл. 23 Июн 2021 |

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

Что такое физическая память?

Физическая память (или «ОЗУ», «RAM», «оперативка») — это энергозависимая память, установленная в компьютере. Для её работы требуется непрерывный поток электричества. Перебои с электропитанием или внезапное выключение компьютера могут привести к стиранию хранящихся в ней данных. Кроме того, эта память является линейно адресуемой. Другими словами, значения адресов памяти увеличиваются линейным образом.

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

Читайте также:  Система конфигурации не прошла инициализацию windows 10 что делать

Что такое виртуальная память?

Виртуальная память (или «логическая память») — это метод управления памятью, осуществляемый операционной системой, который позволяет программам задействовать значительно больше памяти, чем фактически установлено в компьютере. Например, если объем физической памяти компьютера составляет 4 ГБ, а виртуальной 16 ГБ, то программе может быть доступен объем виртуальной памяти вплоть до 16 ГБ.

Физическая память vs. Виртуальная память

Основное различие между физической и виртуальной памятью заключается в том, что физическая память относится к оперативной памяти компьютера, подключенной непосредственно к его материнской плате. Именно в ней находятся выполняемые в данный момент программы. А виртуальная память — это метод управления, расширяющий при помощи жесткого диска объем физической памяти, благодаря чему у пользователей появляется возможность запускать программы, требование к памяти которых превышает объем установленной в компьютере физической памяти.

Физическая память Виртуальная память
Непосредственно установленная в компьютере оперативная память. Метод управления памятью, с помощью которого для программ создается иллюзия наличия в системе (физической) памяти, гораздо больше реально установленной.
Работает быстрее. Работает медленнее.
Ограничена размером чипа ОЗУ. Ограничена размером жесткого диска.
Может напрямую обращаться к процессору. Не может напрямую обращаться к процессору.
Использует swapping. Использует paging.

Рассмотрим данные пункты:

#1: Тип памяти:

Физическая память является фактической памятью.

Виртуальная память является логической памятью.

#2: Скорость:

Физическая память быстрее виртуальной памяти.

#3: Размер:

Физическая память ограничена размером чипа ОЗУ.

Виртуальная память ограничена размером жесткого диска.

#4: Процессор:

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

#5: Методы, лежащие в основе:

Физическая (оперативная) память использует swapping. Swapping — это концепция управления памятью, при которой всякий раз, когда системе для хранения данных некоторого процесса не хватает оперативной (физической) памяти, она берет её из вторичного хранилища (например, жесткого диска), сбрасывая на него временно неиспользуемые данные. В Linux есть специальная программа управления памятью, которая управляет этим процессом. Всякий раз, когда ОЗУ не хватает памяти, программа управления памятью ищет все те неактивные блоки данных (страницы), присутствующие в ОЗУ, которые не использовались в течение длительного времени. Когда она успешно находит подобные блоки, то перемещает их в память подкачки (например, на жесткий диск). Таким образом, освобождается пространство оперативной памяти, и, следовательно, его можно использовать для некоторых других программ, которые нуждаются в срочной обработке.

Виртуальная память использует paging. Paging — это метод выделения памяти, при котором разным несмежным блокам памяти назначается фиксированный размер. Размер обычно составляет 4 КБ. Paging всегда выполняется между активными страницами (pages).

Команды для управления памятью в Linux

Давайте рассмотрим некоторые команды для управления памятью в Linux.

Файл /proc/meminfo

Файл /proc/meminfo содержит всю информацию, связанную с памятью. Для просмотра данного файла используйте команду cat:

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

$ grep MemTotal /proc/meminfo

Чтобы получить информацию о виртуальной памяти из файла /proc/meminfo, используйте:

$ grep VmallocTotal /proc/meminfo

Команда top

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

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

Команда free

Команда free отображает объем свободной и используемой памяти в системе.

Значения для каждого поля указаны в кибибайтах (КиБ).

Чтобы получить вывод в более удобочитаемом формате, используйте:

Команда vmstat

Команда vmstat — это инструмент мониторинга производительности в Linux, который предоставляет полезную информацию о процессах, памяти, операциях ввода-вывода, подкачке, диске и планировании процессора, а также приводит статистику виртуальной памяти вашей системы.

Поделиться в социальных сетях:

Источник

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