Объем физической памяти 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 — /proc/meminfo

] $ cat / proc / meminfo

Пройдемся сверху вниз с некоторыми комментариями по части из этих значений.

] # grep Memory: /var/log/dmesg

Buffers — область ОЗУ, занятая хранением данных, ожидающих записи на диск. Буфер позволяет приложениям продолжать выполнение своей задачи не дожидаясь момента когда данные будут физически записаны на диск. Обычно размер около 20Мб.

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

SwapCached — Объем памяти, который однажды был помещен в область подкачки, но потом перенесен обратно в ОЗУ. Однако данные все еще присутствуют в swap, и при необходимости этот объем памяти может быть вновь освобожден без необходимости тратить ресурсы на «дорогие» операции ввода/вывода.

Active — Объем памяти, занятый в ОЗУ наиболее часто используемыми страницами памяти. Иными словами, эти страницы памяти активно используются процессами и будут освобождаться только в случае крайней необходимости.

Читайте также:  Аватарка для профиля windows

Inactive — Объем памяти, занятый в ОЗУ не используемыми в настоящий момент страницами. Эти страницы считаются наиболее подходящими для выгрузки в swap и освобождения в случае необходимости.

High, Low — MemTotal=HighTotal+LowTotal. Вывод команды cat /proc/meminfo получен на 32-разрядной операционной системе. Модель использования памяти в 32-разрядном и 64-разрядном ядрах отличается. Ниже я привел рисунок, показывающий эти отличия:

Dirty — Измененные («грязные») страницы, находящиеся в ОЗУ, но еще не сброшенные на диск. За процедуру записи на диск отвечает группа потоков ядра pdflush. В системе должно работать минимум два и максимум восемь потоков pdflush. Посмотреть текущее число потоков можно:

Дополнительные потоки создаются в зависимости от текущей нагрузки ввода/вывода. Команда sync и «магическая» комбинация Alt-SysRq-S сбрасывает все «грязные» страницы и буферы. Число, хранящееся в vm.dirty_background_ratio (по умолчанию 10%), задает какой процент от ОЗУ потоки pdflush должны сбрасывать на диск. Чем больше процент, тем реже происходит обращение к диску. Второй из важных параметров, влияющих на pdflush, это процент от объема ОЗУ, при котором стартует сам процесс сброса на диск — vm.dirty_ratio.

Writeback — Страницы памяти, которые в настоящий момент сбрасываются на диск.

AnonPages — Анонимные страницы — это, как правило, данные, используемые программами и не ассоциированные с каким-либо файлом. Наряду со страницами, объем которых указан в Inactive, это первые кандидаты на попадание в область подкачки. Анонимные страницы нередко используются несколькими процессами. Самый распространенный пример — fork() при создании нового процесса. Число анонимных страниц для конкретного процесса можно вычислить как разницу между размером резидентной части (resident) и разделяемыми страницами (share) в выводе /proc/PID/statm (информация о состоянии памяти в страницах). Например:

Получается что число анонимных страниц для sshd = 258 — 161 = 97 или 388Кб. Подробнее — man proc.

Mapped — Общий объем памяти, привнесенный в виртуальное адресное пространство процессов при помощи mmap (например, библиотеки).

Slab — объем памяти, занятый под различные структуры ядра небольшого объема, для которых не оптимально выделять по целой странице памяти. По умолчанию в 32-р системах размер страницы — 4Кб, и этот объем является квантом памяти при ее выделении. Подробнее информацию о slab-кэше можно посмотреть при помощи утилиты vmstat с ключем -m, утилиты slabtop или через /proc/slabinfo.

PageTables — Объем памяти, зарезервированный под Таблицу Страниц.

NFS_Unstable — Данный параметр относится к клиенту NFS v3+, реализованному в ядре Linux, и показывает, какой объем данных, отправленных клиентом серверу, еще не был записан на диск. Клиент должен кэшировать эти данные до поступления подтверждения от сервера.

CommitLimit — Объем памяти, который может быть выделен системой. Вычисляется на основе vm.overcommit_ratio (по умолчанию — 50%) и размера области подкачки. Формула имеет следующий вид CommitLimit = ( vm.overcommit_ratio * объем_ОЗУ) + область_подкачки. Этот лимит соблюдается только при «строгой» политике выделения памяти (vm.overcommit_memory=2). По умолчанию используется «эвристическая» политика (vm.overcommit_memory=0).

Committed_AS — Сколько памяти выделено всем процессам, даже если они эту память не используют в полном объеме. Иными словами, данный параметр показывает, сколько при текущей загрузке системы требуется ОЗУ, если процессы реально захотят использовать выделенную память для того, чтобы избежать core dump по причине отсутствия памяти (OOM). Дело в том что, когда процесс требует — ядро подтверждает выделение требуемого объема памяти (только если не используется «строгая» политика. В этом случае проверяем, не исчерпан ли CommitLimit) без выделения ОЗУ. Реально память выделяется постранично только лишь когда процесс пытается что-то записать в выделенную до этого память. Этот механизм называется overcommitment. Более подробно см. /usr/share/doc/kernel-doc-*/Documentation/vm/overcommit-accounting.

VmallocTotal — общее число виртуального пространства, доступного для vmalloc.

VmallocUsed — объем использованного пространства vmalloc.

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

Источник

Как я могу узнать общую физическую память (ОЗУ) моего linux box, подходящую для анализа скриптом оболочки?

Я набираю сценарий оболочки, чтобы узнать общую физическую память в некоторых коробках RHEL linux.

Читайте также:  Жесткий диск ssd для mac os

прежде всего я хочу подчеркнуть, что меня интересует физической распознается ядром, а не только память. Поэтому, пожалуйста, избегайте ответов, предлагающих читать / proc / meminfo или свободный, top или sar команды — во всех этих случаях «общий память!—6—>» значения «память» те.

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

но в некоторых Linux-боксах из-за использования программного обеспечения PowerPath EMC2 и его флуд загрузочные сообщения при запуске ядра, что полезное сообщение ядра загрузки недоступно, даже в /var/log / dmesg.

второй вариант dmidecode (Я предупрежден о возможном несоответствии ядра признанной ОЗУ и реальной ОЗУ из-за ограничений некоторых старых ядер и архитектур). Вариант — упрощает скрипт, но я понял, что старые версии этой команды нет —.

мой последний шанс был getconf. Он сообщает размер страницы памяти, но не общее количество физических страниц —_PHYS_PAGES системная переменная будьте доступными физическими страницами, а не общими физическими страницами.

мой вопрос: есть ли другой способ получить общий объем физической памяти, подходящий для анализа скриптом оболочки?

10 ответов

Если вас интересует физическая ОЗУ, используйте команду dmidecode . Это дает вам много больше информации, чем просто это, но в зависимости от вашего случая использования, вы также можете узнать, если 8G в системе приходят от 2x4gb палочки или 4x2gb палочки.

ты пробовал cat /proc/meminfo ? Затем вы можете grep, что вы хотите,используется параметр memtotal например

обновленный пример (кстати. спасибо, Маста):

cat /proc/meminfo | grep MemTotal или бесплатно дает вам точное количество ОЗУ вашего сервера. Это не «память».

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

добавить последние 2 записи /proc/meminfo , они дадут вам точную память на хосте.

10240 + 4184064 = 4194304 КБ = 4096 МБ.

еще одна полезная команда:
vmstat -s | grep memory
пример вывода на моей машине:

еще одна полезная команда для получения информации памяти:
free
пример вывода:

одно наблюдение здесь заключается в том, что команда free дает информацию о пространстве подкачки тоже.
Следующая ссылка может быть полезна для вас:
http://www.linuxnix.com/find-ram-details-in-linuxunix/

это предоставит вам общую память в вашей системе в удобочитаемом формате и автоматически масштабируется до соответствующего блока (например, байты, КБ, Мб или ГБ).

добавление всех вышеуказанных значений, отображаемых после » Size:», даст точный общий физический размер всех RAM-палочек на сервере.

Источник

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

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

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

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

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

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

Читайте также:  Linux com порт terminal

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

Виртуальная память (или «логическая память») — это метод управления памятью, осуществляемый операционной системой, который позволяет программам задействовать значительно больше памяти, чем фактически установлено в компьютере. Например, если объем физической памяти компьютера составляет 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, который предоставляет полезную информацию о процессах, памяти, операциях ввода-вывода, подкачке, диске и планировании процессора, а также приводит статистику виртуальной памяти вашей системы.

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

Источник

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