Сегодня обсудим команды, которые можно использовать для проверки использования памяти в Linux.
1. Команда Free
Команда free – это самая простая и удобная утилита для проверки использования памяти в linux.
Пример вывода:
$ free -m
total used free shared buffers cached
Mem: 7976 6459 1517 0 865 2248
-/+ buffers/cache: 3344 4631
Swap: 1951 0 1951
Ключ -m отображает все данные в мегабайтах (Можно еще в байтах -b, в гигабайтах -g итд). В данном примере общий объем в OS 7976 МБ – это общий объем оперативной памяти установленной в системе, то есть 8 ГБ. Столбец used показывает объем RAM, который использует Linux, в данном случае около 6.4 ГБ. Вывод довольно понятен. Подвох здесь – столбец cached и buffers. Вторая строка говорит о том, что 4,6 ГБ свободно. Это свободная память в первой строке, добавленная с буферами (buffers) и кэшированным (cached) объемом памяти.
Последняя строка – это память подкачки (Swap), которая в этом случае полностью свободна.
У Linux есть привычка кешировать множество вещей для более быстрой производительности, так что память может быть освобождена и использована при необходимости.
2. /proc/meminfo
Следующий способ проверить использование памяти, это файл /proc/meminfo. Файловая система /proc не содержит реальных файлов. Это скорее виртуальные файлы, которые содержат динамическую информацию о ядре и системе.
$ cat /proc/meminfo
MemTotal: 8167848 kB
MemFree: 1409696 kB
Buffers: 961452 kB
Cached: 2347236 kB
SwapCached: 0 kB
Active: 3124752 kB
Inactive: 2781308 kB
Active(anon): 2603376 kB
Inactive(anon): 309056 kB
Active(file): 521376 kB
Inactive(file): 2472252 kB
Unevictable: 5864 kB
Mlocked: 5880 kB
SwapTotal: 1998844 kB
SwapFree: 1998844 kB
Dirty: 7180 kB
Writeback: 0 kB
AnonPages: 2603272 kB
Mapped: 788380 kB
Shmem: 311596 kB
Slab: 200468 kB
SReclaimable: 151760 kB
SUnreclaim: 48708 kB
KernelStack: 6488 kB
PageTables: 78592 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 6082768 kB
Committed_AS: 9397536 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 420204 kB
VmallocChunk: 34359311104 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 62464 kB
DirectMap2M: 8316928 kB
Проверьте значения MemTotal, MemFree, Buffers, Cached, SwapTotal, SwapFree.
Они указывают те же значения использования памяти, что и команда free.
3. vmstat
Команда vmstat с ключем -s покажет статистику использования памяти во многом подобно команде proc.
Вот пример
$ vmstat -s
8167848 K total memory
7449376 K used memory
3423872 K active memory
3140312 K inactive memory
718472 K free memory
1154464 K buffer memory
2422876 K swap cache
1998844 K total swap
0 K used swap
1998844 K free swap
392650 non-nice user cpu ticks
8073 nice user cpu ticks
83959 system cpu ticks
10448341 idle cpu ticks
91904 IO-wait cpu ticks
0 IRQ cpu ticks
2189 softirq cpu ticks
0 stolen cpu ticks
2042603 pages paged in
2614057 pages paged out
0 pages swapped in
0 pages swapped out
42301605 interrupts
94581566 CPU context switches
1382755972 boot time
8567 forks
Верхние несколько строк указывают на общую количество память, свободную память итд.
4. top command
Команда top обычно используется для проверки использования памяти и загрузку процессора для каждого процесса. Однако он также сообщает об общем использовании памяти и может использоваться для контроля общего использования памяти. Верхняя область содержит необходимую информацию.
Вот пример вывода.
top - 15:20:30 up 6:57, 5 users, load average: 0.64, 0.44, 0.33
Tasks: 265 total, 1 running, 263 sleeping, 0 stopped, 1 zombie
%Cpu(s): 7.8 us, 2.4 sy, 0.0 ni, 88.9 id, 0.9 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 8167848 total, 6642360 used, 1525488 free, 1026876 buffers
KiB Swap: 1998844 total, 0 used, 1998844 free, 2138148 cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2986 enlighte 20 0 584m 42m 26m S 14.3 0.5 0:44.27 yakuake
1305 root 20 0 448m 68m 39m S 5.0 0.9 3:33.98 Xorg
7701 enlighte 20 0 424m 17m 10m S 4.0 0.2 0:00.12 kio_thumbnail
Проверьте строки KiB Mem и KiB Swap в верхней области. Они указывают общее, использованное и свободное количество памяти. Информация о буфере и кеше также присутствует здесь как в команде free.
5. htop
Подобно команде top, команда htop также показывает использование памяти и другую информацию.
Верхняя область показывает использование процессора, а также использование оперативной памяти и файла подкачки (Swap) с соответствующими цифрами.
Информация о RAM
Чтобы узнать аппаратную информацию об установленной оперативной памяти, используйте команду dmidecode. Она сообщает много информации об установленной оперативной памяти.
# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.
Handle 0x1100, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: DIMM 1
Bank Locator: Not Specified
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MT/s
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: 2
....
Вывод покажет кол-во установленных модулей памяти, их объем (4096MB), тип (DDR3), частоту (1333 Mhz) и другую информацию.