Команда 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
Вывод сокращен, но из него вполне понятно, что таким образом можно узнать диапазоны адресов каждого из блоков.