Памет

Команди за управление на паметта на Linux

Команди за управление на паметта на Linux
Системите UNIX / Linux съдържат инструмент за команден ред за почти всичко. Това включва и програми за обработка на паметта. В тази статия ви показваме селекция от команди, които са много полезни за вас като потребител на Linux.

Открийте хардуера с помощта на dmidecode

Автоматичното откриване на хардуер винаги е било малко като лотария, но се подобрява през последните години, тъй като много производители документират своите продукти по-подробно и разполагат със специфична информация и онлайн. За да научите за хардуерната информация относно RAM, инсталирана на вашето устройство, използвайте dmidecode команда (пакет за Debian GNU / Linux, Ubuntu и Linux Mint: dmidecode).

Наред с друга информация, този инструмент съобщава подробни данни за инсталираните системни компоненти като процесора, основната платка и RAM. Информацията се основава на интерфейса за управление на работния плот (DMI) [1], който представлява рамка, която класифицира отделните компоненти на настолен компютър, преносим компютър или сървър, като абстрахира тези компоненти от софтуера, който ги управлява [2]. Опцията --тип памет се отнася до устройствата с памет. За други DMI класове погледнете ръководството на dmidecode.

# dmidecode - тип памет
# dmidecode 2.12
SMBIOS 2.7 присъства.
Дръжка 0x0007, DMI тип 16, 23 байта
Физическа памет
Местоположение: системна платка или дънна платка
Използване: Системна памет
Тип корекция на грешки: Няма
Максимален капацитет: 16 GB
Манипулатор за информация за грешки: Не е предоставен
Брой устройства: 1
Манипулатор 0x0008, тип DMI 17, 34 байта
Устройство с памет
Дръжка на масива: 0x0007
Манипулатор за информация за грешки: Не е предоставен
Обща ширина: 64 бита
Ширина на данните: 64 бита
Размер: 8192 MB
Форм фактор: SODIMM
Комплект: Няма
Локатор: ChannelA-DIMM0
Локатор на банка: БАНКА 0
Тип: DDR3
Подробности за типа: Синхронно
Скорост: 1600 MHz
Производител: Samsung
Сериен номер: 25252105
Етикет на актива: Няма
Номер на част: M471B1G73DB0-YK0
Ранг: Неизвестен
Конфигурирана тактова честота: 1600 MHz

Понастоящем тази машина е оборудвана с 8G DDR3 RAM с конфигурирана тактова честота 1600 MHz. Както можете да видите, максималният наличен капацитет на бордовата RAM е 16G, което означава, че може да бъде разширен с втори 8G модул.

Графична информация за паметта

В случай, че предпочитате графичен интерфейс за извличане на тази информация, инструментите Hardinfo [3] и Hardware Lister (версия GTK +) [4] могат да представляват интерес за вас. На Debian GNU / Linux, Ubuntu и Linux Mint тези програми са достъпни чрез пакетите hardinfo и lshw-gtk. Фигура 2 показва потребителския интерфейс на Hardinfo, показващ информацията за паметта при инсталация на Xubuntu.

Колко памет е налична в момента

Понякога по-малкото е повече. В командния ред информацията относно паметта е достъпна чрез Безплатно команда. На Debian GNU / Linux, Ubuntu и Linux Mint тази програма е част от пакета procps [5]. Фигура 2 показва изхода в терминален прозорец.

Като избор на допълнителни опции, Безплатно приема различни параметри като:

На фигура 3 изходът е показан в мегабайта с помощта на опцията -m. Системата разполага с 4G RAM, докато в момента се използват 725M.

Информация за паметта от гледна точка на ядрото на Linux

Инструментите, споменати по-горе, разчитат на сурова информация, която се съхранява във файловата система proc на ядрото на Linux. За да покажете тези подробности, изведете съдържанието на файла / proc / meminfo използвайки котка полезност в терминал:

$ cat / proc / meminfo
MemTotal: 7888704 kB
MemFree: 302852 kB
Mem Наличен: 448824 kB
Буфери: 17828 kB
Кеширано: 326104 kB
SwapCached: 69592 kB
Активно: 2497184 kB
Неактивен: 650912 kB
Активно (анонимно): 2338748 kB
Неактивен (анонимно): 525316 kB
Активно (файл): 158436 kB
Неактивен (файл): 125596 kB
Неизбежно: 64 kB
Блокиран: 64 kB
SwapTotal: 16150524 kB
Без замяна: 15668480 kB
Мръсни: 3008 kB
Обратна връзка: 0 kB
Anon Страници: 2774656 kB
Картирано: 4414752 kB
Shmem: 59900 kB
Плоча: 130216 kB
SR Изясним: 61748 kB
S Препоръка: 68468 kB
KernelStack: 7328 kB
Таблици на страниците: 42844 kB
NFS_Настабилен: 0 kB
Скачане: 0 kB
Обратна връзка Tmp: 0 kB
CommLimit: 20094876 kB
Ангажиран_AS: 10344988 kB
Vmalloc Общо: 34359738367 kB
Vmalloc Използвано: 367296 kB
VmallocChunk: 34359345768 kB
Повреден хардуер: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Огромен размер на страниците: 2048 kB
DirectMap4k: 78448 kB
DirectMap2M: 2756608 kB
DirectMap1G: 5242880 kB
$

За повече статистическа информация относно използването на процесора, паметта и процесите може да разгледате инструментите vmstat, и йостат (Debian пакети procps и sysstat).

Работа с процеси - ps, htop и pstree

За да покажете активните процеси на вашата Linux система, използвайте пс команда. Обикновено изходът се сортира по азбучен ред. Но пс команда може да направи много повече. Използване на опциите aux --сортиране -rss изходът от списъка с процеси се сортира по тяхното използване на паметта в ред отгоре надолу. Фигура 4 показва процесите, които имат най-голямо търсене на памет. Резултатът се сортира по 6-та колона, озаглавена RSS, която съкращава Resident Set Size. Стойността е дадена в килобайта.

Командите ps, pstree и htop са тясно свързани по отношение на информацията, която тези инструменти показват. И двете pstree и htop покажете графика, за да визуализирате зависимостите от процеса. htop действа като интерактивна версия, която ви позволява да превъртате списъка с процеси нагоре и надолу. Фигура 5 показва htop на настолна система с избор на процеси, сортирани по специфичното им използване на паметта (5-та колона).

Намиране на процеси, които използват суап памет

Колкото повече процеси се стартират, толкова повече памет се използва едновременно. Веднага след като вашата Linux система свърши с неизползвани страници с памет, ядрото на Linux решава да замени страниците с памет на диск, използвайки метода Най-малко наскоро използвани (LRU). За да отговорите на въпроса кои процеси използват суап памет и колко се използва по-конкретно, може да разгледате изхода на най-добрата програма. През 2016 г. Erik Ljungstrom публикува кратко описание на това как да извлечете тази информация и да разширите тази колона до изхода на върха [6]. Фигура 6 показва този изход за система, която има достатъчно страници с памет в RAM и в момента не използва Swap.

Освен това, през 2011 г. той вече публикува bash скрипт, който оценява информацията от файловата система proc, за да покаже използването на процеса на суап по процес [7]. Дори 7 години по-късно и вече описан като остарял, скриптът все още е отличен и показва как да се автоматизират задачите в Linux система. Ето защо сме сигурни, че е полезно да го покажем отново тук.

Резултатът от скрипта е както следва (стартирайте като корен потребителят извлича пълните данни):

# ./размяна.ш
PID = 1 - Използван суап: 0 - (systemd)
PID = 2 - Използва се суап: 0 - (kthreadd)
PID = 3 - Използван суап: 0 - (ksoftirqd / 0)
PID = 5 - Използва се суап: 0 - (kworker / 0: 0H)
PID = 6 - Използван суап: 0 - (kworker / u16: 0)
PID = 7 - Използван суап: 0 - (rcu_sched)
PID = 8 - Използван суап: 0 - (rcu_bh)
PID = 9 - Използва се суап: 0 - (миграция / 0)
PID = 10 - Използва се суап: 0 - (пазач / 0)
PID = 11 - Използва се суап: 0 - (пазач / 1)
PID = 12 - Използва се суап: 0 - (миграция / 1)
PID = 13 - Използван суап: 0 - (ksoftirqd / 1)
PID = 15 - Използва се суап: 0 - (kworker / 1: 0H)
PID = 16 - Използва се суап: 0 - (пазач / 2)
PID = 17 - Използва се суап: 0 - (миграция / 2)
PID = 18 - Използван суап: 0 - (ksoftirqd / 2)
PID = 20 - Използва се суап: 0 - (kworker / 2: 0H)
..
#

Заключение

Кутията с инструменти на Linux съдържа безкраен списък с налични програми, които да ви помогнат да анализирате използването на паметта на вашата Linux система. Току-що разгледахме - от сурови данни до предварително обработена информация - всичко е там. Просто знайте вашите инструменти. За да се запознаете с тях, отделете малко време и играйте с тях.

Това е част 2 от поредицата на Linux Kernel Memory Management.  Част 1 обсъжда Swap Memory, в Част трета от тази поредица ще обсъдим как да оптимизираме използването на паметта. Това ще включва управление на дискове, както и компресирани суап файлове.

Връзки и справки

Серия за управление на паметта на Linux

Благодарности

Авторът би искал да благодари на Mandy Neumeyer и Gerold Rupprecht за тяхната подкрепа при подготовката на тази статия.

Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...
Урок Сянка на Tomb Raider за Linux
Shadow of the Tomb Raider е дванадесетото допълнение към поредицата Tomb Raider - франчайз за екшън-приключенска игра, създаден от Eidos Montreal. Игр...
Как да увеличите FPS в Linux?
FPS означава Кадри в секунда. Задачата на FPS е да измерва честотата на кадрите при възпроизвеждане на видео или игрални изпълнения. С прости думи бро...