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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
image

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


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

2. Команда free


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

$ free

           	total    	used    	free  	shared  buff/cache   available
Mem:     	8021048 	1320432 	5689744  	335556 	1010872 	6121932
Swap:          	0       	0       	0

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

$ free -h

           	total    	used    	free  	shared  buff/cache   available
Mem:       	7.6Gi   	1.3Gi   	5.4Gi   	318Mi   	985Mi   	5.8Gi
Swap:         	0B      	0B      	0B

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

$ free -h -s 5

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

3. Команда vmstat


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

$ vmstat -w

--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
   r	b     	swpd     	free     	buff    	cache   si   so	bi	bo   in   cs  us  sy  id  wa  st
   1	0        	0  	5352900    	56816  	1053708	0	0   162	73  328 1087  18   4  78   0   0

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

$ vmstat -s

  	8021048 K total memory
  	1564516 K used memory
   	305336 K active memory
  	1962636 K inactive memory
  	5391588 K free memory
    	58224 K buffer memory
  	1006720 K swap cache
        	0 K total swap
        	0 K used swap
        	0 K free swap
    	76393 non-nice user cpu ticks
        	5 nice user cpu ticks
    	14122 system cpu ticks
   	337834 idle cpu ticks
     	1790 IO-wait cpu ticks
     	1463 IRQ cpu ticks
      	614 softirq cpu ticks
        	0 stolen cpu ticks
   	617253 pages paged in
   	310410 pages paged out
        	0 pages swapped in
        	0 pages swapped out
  	1426200 interrupts
  	4722588 CPU context switches
   1625563254 boot time
     	1949 forks

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

$ vmstat -s | grep -i 'total memory' | sed 's/ *//'

8021048 K total memory

4. Команда top


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

$ top

top - 15:18:13 up 57 min,  1 user,  load average: 3.40, 3.26, 2.04
Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.2 us,  3.6 sy,  0.0 ni, 77.5 id,  0.3 wa,  0.9 hi,  0.5 si,  0.0 st
MiB Mem :   7833.1 total,   4665.9 free,   1782.3 used,   1384.8 buff/cache
top - 15:18:49 up 57 min,  1 user,  load average: 2.61, 3.08, 2.03
Tasks: 138 total,   1 running, 137 sleeping,   0 stopped,   0 zombie
top - 15:18:58 up 58 min,  1 user,  load average: 2.45, 3.02, 2.02
MiB Swap:  	0.0 total,  	0.0 free,  	0.0 used.   5324.5 avail Mem

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

5. Утилита dmidecode


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

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


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

# apt install dmidecode

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

# yum install dmidecode

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

# pacman -Sy dmidecode

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


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

# dmidecode

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

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

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

# dmidecode --type 19

# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.0.0 present.

Handle 0x0049, DMI type 19, 31 bytes
Memory Array Mapped Address
	Starting Address: 0x00000000000
	Ending Address: 0x001FFFFFFFF
	Range Size: 8 GB
	Physical Array Handle: 0x0044
	Partition Width: 1

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

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


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

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

$ cat /proc/meminfo

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

$ cat /proc/meminfo | head -n 3

MemTotal:    	8021048 kB
MemFree:     	4542960 kB
MemAvailable:	5155668 kB

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

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

#!/bin/bash

total_ram () {
  local totalram=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')
  echo $totalram
}

ram_size=$(total_ram)
echo "Total RAM: $ram_size kB"

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

$ chmod +755 totalram.sh
$ ./totalram.sh
Total RAM: 8021048 kB

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


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

7.1. GNOME System Monitor


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

$ gnome-system-monitor

image

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

7.2. KSysGuard


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

$ ksysguard

image

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

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


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

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

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


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

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

— 20% на выделенные серверы AMD Ryzen и Intel Core — HABRFIRSTDEDIC.
Источник: https://habr.com/ru/company/first/blog/647921/


Интересные статьи

Интересные статьи

Представьте, что вы, например, bitly — то есть очень большой сервис сокращения ссылок. И вот, вы хотите скопировать свои 150 ТБ сжатых данных с одного физического класте...
Компания Cloudlinux выпустила первую стабильную версию дистрибутива Almalinux. Это форк коммерческого дистрибутива от Red Hat, который называется Red Hat Enterprise Linux (RHEL). Новый ...
Дистрибутив Trenta OS для публичного тестирования обещают выпустить в начале 2021 года На вкус и цвет товарищей нет, но некоторым нравится интерфейс macOS. При этом они не хотят погр...
В этой статье я расскажу об истории развития и текущем состоянии технологии ускорения раздачи контента в TLS соединениях путем переноса шифрования в ядро операционной системы, а так же о своём вк...
Менял недавно виртуальный сервер, и пришлось настраивать все заново. Я предпочитаю, чтобы сайт был доступен по https и сертификаты letsencrypt получались и продлевались автоматически. Этого можно...