Linux available shared memory

How to Check Linux Shared Memory using ipcs Command

Shared memory is the memory that may be accessed by multiple processes; i.e. a memory region that can be shared between different processes and a better way of passing data between two processes. Shared memory is the fastest form of Inter-Process Communication which is currently available.

Assume that the program will create a memory portion, which another process can access (if permitted). A shared segment can be attached multiple times by the same process. Whenever the memory is mapped into the address space of the process, i.e. sharing the common memory region, the kernel will not involve while passing data between the processes. Many applications, like Oracle SGA requires shared memory settings, use this feature.

Check shared memory in Linux

Let’s check some IPCS command through some examples.

Print active shared memory segments using -m option.

«dest» status means memory segment is marked to be destroyed
«nattach» field shows how many application pid’s are still attached to the shared memory

The following command print information about active shared memory segments:

Print information about active shared memory queues:

Print information about semaphores that is accessible semaphores. The ipcs -l shows limit of shared memory, semaphores and messages.

The below command shows the maximum size of the single memory segment that Linux process can allocate in its virtual address space. You can limit the maximum size of the single memory segment by executing following command.

You can set shmmax value by echoing to the concerned /proc file as below. The following command will set maximum size (in terms of bytes) single memory segment is set to 8388698:

In a similar fashion, you can set the maximum allowable size of any single message in a System V IPC message queue, in bytes.

You can check the current kernel parameter for semaphore with the following command.

Conclusion

In this tutorial, we learned Linux ipcs command to check shared memory information. I hope you enjoyed reading and please leave your suggestions in the below comment section.

If this resource helped you, let us know your care by a Thanks Tweet. Tweet a thanks

Источник

Команда Free (свободная оперативная память) в Linux

Free Command in Linux

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

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

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

Как использовать Free команду

Синтаксис free команды следующий:

При использовании без какой-либо опции, free команда отобразит информацию о памяти и поменяет местами в кибибайтах. 1 кибибайт (КиБ) составляет 1024 байта.

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

Читайте также:  Memory space in linux

В старых версиях Linux выходные данные могут немного отличаться.

  • total — это число представляет собой общий объем памяти, который может использоваться приложениями.
  • used — использованная память Он рассчитывается как: used = total — free — buffers — cache
  • free — Свободная / Неиспользуемая память.
  • shared — этот столбец можно игнорировать, так как он не имеет смысла. Это здесь только для обратной совместимости.
  • buff / cache — объединенная память, используемая буферами ядра, кешем страниц и слэбами. / эта память может быть восстановлена ​​в любое время, если это необходимо приложениям. Если вы хотите, чтобы буферы и кеш отображались в двух отдельных столбцах, используйте эту -w опцию.
  • available — оценка объема памяти, доступной для запуска новых приложений без замены.

Отображение использования памяти в удобочитаемом формате

Как мы видели в приведенном выше примере, по умолчанию free команда отображает информацию о памяти в кибибайтах. Чтобы просмотреть информацию в удобочитаемом формате (обычно мегабайты и гигабайты), используйте -h параметр:

Отображение использования памяти в других метриках

Команда free также позволяет указать единицу измерения памяти. Допустимые варианты:

  • -b , —bytes — Вывести вывод в байтах.
  • —kilo — Отображение вывода в килобайтах (1 КБ = 1000 байт).
  • —mega — Показать вывод в мегабайтах.
  • —giga — Отображение вывода в гигабайтах.
  • —tera — Отображение вывода в терабайтах.
  • -k , —kibi — Вывести вывод в кибибайтах. (1 КБ = 1024 байт). Это единица по умолчанию.
  • -m , —mebi — выход дисплея в Mebibytes.
  • -g , —gibi — выход дисплея в gibytes.
  • —tebi — Отображать вывод в тебибайтах.
  • —peti — Выводить вывод в пебибайтах.
  • —si — Вместо 1024 используйте полномочия 1000. Например —mebi —si , равно —mega .

Например, чтобы показать вывод в мегабайтах, вы должны набрать:

Отображение итогов в столбце

Чтобы отобразить строку, отображающую итоги столбца, используйте -t параметр. Это даст вам сумму памяти и поменяет местами общие, использованные и свободные столбцы.

Постоянно печатать вывод

Для того, чтобы непрерывно отображать информацию о памяти об использовании экрана с -s , —seconds варианты с последующим номером , который определяет задержку.

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

Команда free будет продолжать отображать результат, пока вы не нажмете CTRL+C . Это похоже на поведение watch команды .

Для отображения результата для определенного числа раз использовать -c , —count вариант. В приведенном ниже примере команда напечатает результат десять раз:

Вывод

К настоящему времени вы должны хорошо понимать, как использовать и интерпретировать free команду. Для просмотра всех доступных параметров free командной строки введите man free в своем терминале.

Источник

Как узнать общий объем физической памяти (RAM) в Linux

1. Краткое содержание

2. Команда free

free — самая простая в использовании команда из подборки. С её помощью выводятся данные по использованию физической и SWAP-памяти — по умолчанию в стандартном потоке вывода. Команда free — один из самых распространённых способов быстро проверить объём оперативной памяти, поскольку она доступна в большинстве дистрибутивов Linux . Достаточно ввести её в терминале без всяких флагов:

Как видите, объём физической памяти указан в байтах. Однако, эти же данные можно вывести в удобочитаемом формате, добавив флаг -h или –human :

Как видно из полученных результатов, общий объём оперативной памяти составляет 7,6 ГБ. Есть и другие опции, с помощью которых можно привести выводимые данные в нужный формат: –kilo, –mega, –Giga и так далее. Ещё есть интересная опция -s :

Флаг -s обозначает секунды, и в этом случае команда free выведет данные об использовании оперативной памяти за каждые пять секунд. Опция особенно полезна, если отслеживать использование памяти нужно с заданным интервалом . Останавливается процесс сочетанием горячих клавиш Ctrl +C.

3. Команда vmstat

Как и команда free , vmstat (статистика виртуальной памяти) также доступна в большинстве дистрибутивов Linux. По умолчанию при выполнении команды vmstat выводятся данные о свободной памяти, памяти используемой в качестве буферов и кэша, SWAP-памяти, использовании процессора, блочных устройств и системы в целом:

Флаг -w или –wide позволяет отобразить результат в развёрнутом, удобном для чтения формате. Поскольку нас интересует общий объём оперативной памяти, добавим флаг -s или –stats :

Первая запись в результатах — общий объём памяти RAM. Если нужны не все данные, можно использовать grep для получения только требуемой записи:

4. Команда top

top представляет собой диспетчер задач в виде командной строки с выводом в режиме реального времени . С её помощью можно просмотреть активные процессы в виде удобной таблицы. Также она выводит данные по использованию процессора, оперативной памяти и системы в целом. Чтобы запустить такой диспетчер задач, достаточно выполнить команду top :

Вверху, рядом с полем Mem , приводятся данные по физической памяти: общий объём RAM 7833 МБ.

5. Утилита dmidecode

Утилита dmidecode в удобочитаемом формате выводит сведения об аппаратных ресурсах: спецификации, серийные номера, версии BIOS. Данные по оборудованию извлекаются из таблицы DMI . С помощью утилиты можно получить ценные сведения о системе, например, максимальный объём поддерживаемой памяти.

5.1. Установка dmidecode

Утилита dmidecode не на всех дистрибутивах Linux установлена по умолчанию , так что начнём с её установки. Установить dmidecode можно непосредственно из репозитория дистрибутива с помощью менеджера пакетов.
В дистрибутивах, основанных на Ubuntu, возможна установка пакета с помощью инструмента apt :

Для RHEL, Fedora и CentOS можно использовать yum :

Если дистрибутив основан на Arch, с этой задачей справится pacman :

5.2. Использование dmidecode

Как только установка завершена, выполним команду dmidecode из терминала:

Чтобы выполнить dmidecode , нам потребуются корневые привилегии . После выполнения мы получим подробные сведения об аппаратных ресурсах. Будет много данных по оборудованию, но нас интересует только общий объём памяти.

К счастью, мы можем добавить к команде опцию –type и указать интересующие нас компоненты: BIOS, память, процессор, температуру и так далее. Опция –type требует введения номера типа записи DMI.

В нашем случае это запись DMI о памяти, и получить к ней доступ можно, введя следующие значения: 5, 6, 16, 17, 18, 19, 20, 21 и 22. Из этого перечня выбираем 19, поскольку именно так обозначаются устройства оперативной памяти, подключённые к материнской плате:

Из результатов следует, что у нас только один модуль RAM размером 8 ГБ, установленный в один из слотов для оперативной памяти.

6. Виртуальный файл /proc/meminfo

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

В директории /proc есть особый файл под названием meminfo , прочесть который можно командами cat и less . Среди прочих полезностей там содержатся и данные об объёме физической памяти . Давайте заглянем в файл /proc/meminfo с помощью cat :

В примере использована команда cat — удобная утилита для чтения из файла или стандартного потока ввода. При выполнении эта команда прочтёт файл /proc/meminfo и представит обширные сведения о физической памяти . Нас интересует только общий объём оперативной памяти, который указан в первых трёх строках результата.

Мы ограничили вывод интересующими нас строками с помощью команды head . В сочетании с аргументом -n команда head задаёт количество строк результата. Размер памяти приводится в килобайтах и даёт понимание общего объёма физической памяти, а также свободного и доступного объёма.

Предположим, что мы пишем скрипт для командной оболочки Bash, и в нём фигурирует объём физической памяти RAM. Чтобы его туда добавить, можем выполнить чтение файла /proc/meminfo , а затем с помощью grep извлечь общий объём памяти.

Теперь сохраним скрипт и сделаем его исполняемым:

7. Использование диспетчеров задач с графическим пользовательским интерфейсом

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

7.1. GNOME System Monitor

GNOME System Monitor входит в состав среды рабочего стола GNOME как диспетчер задач по умолчанию . А пользователи другой рабочей среды с лёгкостью могут найти пакет gnome-system-monitor в репозитории с дистрибутивом. После установки можно запустить диспетчер из командной строки:

Среди сведений на вкладке Resources найдётся и общий объём памяти.

7.2. KSysGuard

KSysGuard — диспетчер задач, разработанный сообществом KDE как дефолтный для свободной среды рабочего стола KDE . Аналогичным образом, если вы используете другую рабочую среду, его несложно установить в системе с помощью пакета ksysguard в соответствующем репозитории. Запустить его после установки можно командой ksysguard :

Открыв ksysguard , перейдём на вкладку System Load . Данные о памяти там представлены вместе с наглядным графиком.

8. Заключение

В этой статье мы рассмотрели различные команды и инструменты, с помощью которых можно выяснить объём физической памяти системы под управлением Linux.

Мы изучили базовую команду free и её альтернативу vmstat . Затем узнали, как с помощью команды top можно получить различные системные данные. Также взглянули на утилиту dmidecode и выяснили, как извлечь данные о физической памяти из таблицы DMI.

Ознакомились с директорией /proc и научились читать файл /proc/meminfo , чтобы выяснить общий объём памяти RAM и использовать его в скрипте для оболочки Bash. И наконец, перечислили пару графических диспетчеров задач, показав, как с их помощью просмотреть объём и статистику использования оперативной памяти.

НЛО прилетело и оставило здесь промокоды для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS .

Источник

Playing with shared memory in Linux and macOS

August 21, 2020 7 minute read

Reading the operating system internals is like going down the rabbit hole. It is so easy start at one topic, get lost and end up in a totally different topic. On one such journey sometime back, I ended up at shared memory, one of the frequently used inter process communication mechanisms. If we are to communicate between parent and child processes, we could do so through a memory region in the parent’s address space since that is accessible to the child process as well. Here is an example.

Running this program will show an output similar to the one below. Since the physical page backed by the address returned by mmap is set to be shared, changes made by the child process is visible in the parent process as well.

However, if we have to communicate between distinct process through memory, we can’t do so with the above method since the address space will be different. There comes the concept of Shared Memory. The two most common IPC standards

support shared memory, along with message queues and semaphores. The two standards offer the similar functionalities, with the latter being relatively new but more portable. The implementations of System V and POSIX in macOS and Linux tend to be quite different though. For e.g. default size of shmem segments in macOS is only 4MB, macOS supports POSIX shared memory but not message queues etc. There are some more differences I noticed while running the sample code of the two interfaces in Linux and macOS.

System V

The general flow in accessing shared memory segments using System V IPC goes like this:

The System V interfaces to manage shared memory are defined in . The above snippet is just to show the calls involved in accessing the System V shared memory. For a proper example with working code, see here.

The command interfaces to read or manage the segments vary significantly. Listing my observations in the below sections.

Источник

КомпСовет