объем памяти

Команды для управления памятью Linux

Команды для управления памятью Linux
Системы UNIX / Linux содержат инструмент командной строки почти для всего. Сюда входят также программы для работы с памятью. В этой статье мы покажем вам набор команд, которые очень пригодятся вам как пользователю Linux.

Обнаружение оборудования с помощью dmidecode

Автоматическое обнаружение оборудования всегда было немного похоже на лотерею, но в последние годы оно стало лучше, поскольку многие производители документируют свои продукты более подробно, а конкретную информацию также доступны в Интернете. Чтобы узнать об оборудовании, касающемся оперативной памяти, установленной на вашем компьютере, используйте dmidecode команда (пакет для Debian GNU / Linux, Ubuntu и Linux Mint: dmidecode).

Помимо другой информации, этот инструмент сообщает подробные данные об установленных компонентах системы, таких как процессор, основная плата и оперативная память. Информация основана на интерфейсе управления рабочим столом (DMI) [1], который представляет собой структуру, которая классифицирует отдельные компоненты на настольном компьютере, ноутбуке или сервере путем абстрагирования этих компонентов от программного обеспечения, которое ими управляет [2]. Опция --тип памяти относится к устройствам памяти. Для других классов DMI посмотрите справочную страницу dmidecode.

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

Эта машина в настоящее время оснащена оперативной памятью 8 ГБ DDR3 с настроенной тактовой частотой 1600 МГц. Как видите, максимальная доступная емкость встроенной оперативной памяти составляет 16 ГБ, что означает, что ее можно расширить с помощью второго модуля 8 ГБ.

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

Если вы предпочитаете графический интерфейс для получения этой информации, вам могут быть интересны инструменты 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. В системе 4 ГБ ОЗУ, тогда как в настоящее время используется 725 МБ.

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

Упомянутые выше инструменты полагаются на необработанную информацию, которая хранится в файловой системе proc ядра Linux. Чтобы показать эти детали, выведите содержимое файла / proc / meminfo с помощью Кот утилита в терминале:

$ cat / proc / meminfo
MemTotal: 7888704 Кбайт
MemFree: 302852 Кбайт
MemAvailable: 448824 КБ
Буферы: 17828 кБ
Кэширование: 326104 КБ
SwapCached: 69592 КБ
Активный: 2497184 Кбайт
Неактивно: 650912 КБ
Активно (анонимно): 2338748 КБ
Неактивно (анонимно): 525316 КБ
Активный (файл): 158436 кБ
Неактивный (файл): 125596 кБ
Неустранимый: 64 Кбайт
Mlocked: 64 КБ
SwapTotal: 16150524 kB
SwapFree: 15668480 kB
Dirty: 3008 Кбайт
Обратная запись: 0 КБ
AnonСтраницы: 2774656 Кб
Отображено на карте: 4414752 kB
Shmem: 59900 Кбайт
Плита: 130216 Кбайт
Заявленный: 61748 Кбайт
SUnreclaim: 68468 kB
KernelStack: 7328 КБ
Таблицы страниц: 42844 kB
NFS_Unstable: 0 КБ
Bounce: 0 КБ
WritebackTmp: 0 КБ
CommitLimit: 20094876 КБ
Committed_AS: 10344988 КБ
VmallocВсего: 34359738367 Кбайт
VmallocИспользовано: 367296 Кбайт
VmallocChunk: 34359345768 Кбайт
Аппаратное обеспечение повреждено: 0 КБ
AnonHugePages: 0 КБ
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Огромный размер: 2048 КБ
DirectMap4k: 78448 КБ
DirectMap2M: 2756608 КБ
DirectMap1G: 5242880 КБ
$

Для получения дополнительной статистической информации об использовании процессора, памяти и процессах вы можете ознакомиться с инструментами vmstat, а также iostat (Debian пакеты procps и sysstat).

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

Чтобы показать активные процессы вашей системы Linux, используйте пс команда. Обычно вывод сортируется по алфавиту. Но пс команда может сделать гораздо больше. Использование опций aux --sort -rss вывод списка процессов сортируется по использованию памяти в нисходящем порядке. На рисунке 4 показаны процессы, которые имеют наибольшую потребность в памяти. Вывод сортируется по шестому столбцу RSS, который сокращает размер резидентного набора. Значение указывается в килобайтах.

Команды ps, pstree а также htop тесно связаны с точки зрения информации, отображаемой этими инструментами. Оба pstree а также htop отображать график для визуализации зависимостей процессов. htop действует как интерактивная версия, которая позволяет прокручивать список процессов вверх и вниз. Рисунок 5 показывает htop в настольной системе с выбором процессов, отсортированных по их конкретному использованию памяти (5-й столбец).

Поиск процессов, использующих память подкачки

Чем больше процессов запущено, тем больше памяти используется одновременно. Как только в вашей системе Linux заканчиваются неиспользуемые страницы памяти, ядро ​​Linux решает переставить страницы памяти на диск, используя метод наименее недавно использованных (LRU). Чтобы ответить на вопрос, какие процессы используют память подкачки и сколько конкретно используется, вы можете взглянуть на вывод верхней программы. В 2016 году Эрик Люнгстрем опубликовал краткое описание того, как получить эту информацию и расширить этот столбец до вывода top [6]. На рисунке 6 показан этот вывод для системы, в которой осталось много страниц памяти в ОЗУ и которая в настоящее время не использует 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. Мы только что бегло рассмотрели - от необработанных данных до предварительно обработанной информации - все это есть. Просто знай свои инструменты. Чтобы познакомиться с ними, потратьте немного времени и поиграйте с ними.

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

Ссылки и ссылки

Серия Linux по управлению памятью

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

Автор благодарит Мэнди Ноймайер и Герольда Руппрехта за их поддержку при подготовке этой статьи.

WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...