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

ARTICLES 05.02.22 05.02.22 223
Бесплатные курсына главную сниппетов

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



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

7.2. KSysGuard


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

$ ksysguard



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

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


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

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

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

 

 

на главную сниппетов
Курсы