Команда lsmem

Команда lsmem позволяет вызывать одноименную утилиту, осуществляющую вывод информации о физической оперативной памяти, установленной в ПК. В отличие от популярной утилиты free, утилита lsmem выводит информацию обо всей оперативной памяти, в том числе, зарезервированной для нужд ядра ОС. Исходя из вышесказанного, полный объем оперативной памяти, выводимый утилитой free, будет всегда меньше полного объема оперативной памяти, выводимого утилитой lsmem. Кроме того, утилита lsmem выводит информацию о блоках оперативной памяти, которые используются на уровне ядра ОС и не выводит информации о файлах и разделах подкачки. Данная утилита может использоваться в рамках сценариев, предназначенных для сбора информации об аппаратном обеспечении. Вся выводимая с помощью утилиты информация доступна из файла /sys/devices/system/memory.

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

$ lsmem [параметры]

Наиболее важными параметрами являются параметр -a, позволяющий выводить информацию обо всех блоках оперативной памяти, параметр -P, позволяющий выводить информацию в формате ключ-значение, параметр -j, позволяющий выводить информацию в формате json, параметр -n, позволяющий не выводить заголовки столбцов, а также параметр -b, позволяющий выводить значения в байтах.

Вывод утилиты представлен в форме таблицы. В столбце «RANGE» выводится диапазон адресов блоков оперативной памяти, в столбце «SIZE» - размер блоков, в столбце «STATE» - информация о состоянии блоков (online — подключен, offline — отключен), в столбце «REMOVABLE» - информация о возможности отключения блоков и в столбце «BLOCK» - номера блоков. Также утилита выводит информацию об общем объеме оперативной памяти: «Memory block size» - размер блока памяти, «Total online memory» - общий объем подключенной оперативной памяти, «Total offline memory» - общий объем отключенной оперативной памяти.

Примеры использования

Получение информации о доступной оперативной памяти

Команда lsmem может использоваться для получения информации о доступной оперативной памяти. По умолчанию все значения выводятся в человекочитаемом виде:

$ lsmem
RANGE                                  SIZE  STATE REMOVABLE BLOCK
0x0000000000000000-0x00000000cfffffff  3,3G online        да  0-25
0x0000000100000000-0x000000012fffffff  768M online        да 32-37

Memory block size: 128M
Total online memory: 4G
Total offline memory: 0B

Из вывода ясно, что в компьютере установлено 4 ГБ оперативной памяти, причем ядро разделяет ее на 32 блока (768 МБ нижней памяти в 6 блоках (32 - 37) по 128 МБ и 3.3 ГБ верхней памяти в 26 блоках (0 - 25) также по 128 МБ).

Если вас интересует информация по каждому из блоков, вы можете воспользоваться параметром -a:

$ lsmem -a
RANGE                                  SIZE  STATE REMOVABLE BLOCK
0x0000000000000000-0x0000000007ffffff  128M online        да     0
0x0000000008000000-0x000000000fffffff  128M online        да     1

0x0000000120000000-0x0000000127ffffff  128M online        да    36
0x0000000128000000-0x000000012fffffff  128M online        да    37

Memory block size: 128M
Total online memory: 4G
Total offline memory: 0B

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