объем памяти

Оптимизация использования памяти Linux

Оптимизация использования памяти Linux
В первой части этой серии мы более подробно рассмотрели пространство подкачки, а вторая часть посвящена инструментам и командам для управления памятью. Теперь мы обсудим различные параметры и стратегии для оптимизации памяти и ее использования в целом. Это касается объема памяти, ускорения доступа и стратегии внутреннего использования.

Количество памяти

Как уже обсуждалось в первой части, вся память называется виртуальной памятью и состоит как из физической памяти, так и из пространства подкачки. Доступность физической памяти зависит от оборудования, встроенного в машину, а также от того, сколько памяти процессор может адресовать на самом деле. Например, 32-битные операционные системы имеют ограничение только в 4 Гб памяти (2 ^ 32 бит), тогда как операционные системы на основе 64 бит теоретически допускают до 16 ЭБ (2 ^ 64 бит).

Чтобы быть точным, ограничение - это материнская плата с самим процессором, модули памяти, которые поддерживаются этой материнской платой, и конкретные модули памяти, которые вставляются в слоты памяти на материнской плате. Один из способов максимизировать доступную память системы - использовать аналогичные модули памяти, которые имеют максимально возможный размер. Второй способ - использовать память подкачки, как уже объяснялось в первой части.

Доступ к памяти

Далее следует учитывать улучшение скорости доступа к памяти. Сначала физический предел задает сам модуль памяти. Вы не можете опускаться ниже физических границ оборудования. Во-вторых, RAM-диск, а в-третьих, использование zRAM может ускорить доступ к памяти. Мы обсудим эти две технологии более подробно.

Создание ramdisk

RAM-диск - это блок памяти, который операционная система обрабатывает как физическое устройство для хранения данных - жесткий диск, который полностью хранится в памяти. Это временное устройство существует, как только система запускается и включает ramdisk, и система либо отключает ramdisk, либо завершает работу. Имейте в виду, что данные, которые вы храните на таком RAM-диске, теряются после выключения машины.

Вы можете создать динамический ramdisk через файловую систему tmpfs и через файловую систему ramfs. Обе технологии существенно отличаются друг от друга. Во-первых, динамический означает, что память для виртуального диска выделяется в зависимости от его использования (верно для обоих методов). Пока вы не храните на нем данные, размер ramdisk равен 0.

Создание динамического ramdisk через tmpfs выглядит следующим образом:

# mkdir / media / ramdisk
# mount -t tmpfs none / media / ramdisk

Создание динамического ramdisk через ramfs выглядит следующим образом:

# mkdir / media / ramdisk
# монтировать -t ramfs ramfs / media / ramdisk

Во-вторых, при использовании tmpfs и, если явно не указано иное, размер ramdisk ограничен 50% физической памяти. В отличие от ramdisk на основе ramfs такого ограничения нет.

Создание динамического ramdisk через tmpfs с относительным размером 20% физической памяти выглядит следующим образом:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 20% none / media / ramdisk

Создание динамического ramdisk через tmpfs с фиксированным размером физической памяти 200 МБ выглядит следующим образом:

# mkdir / media / ramdisk
# mount -t tmpfs -o size = 200M none / media / ramdisk

В-третьих, оба метода обрабатывают свопинг по-разному. В случае, если система достигает предела памяти ramdisk на основе tmpfs, данные с ramdisk меняются местами. Это мешает идее быстрого доступа. С другой стороны, операционная система устанавливает приоритеты как для содержимого, так и для запрашиваемых страниц памяти RAM-диска на основе ramfs, сохраняет это в памяти и меняет оставшиеся страницы памяти на диск.

В приведенных выше примерах мы использовали / media / ramdisk как точка монтирования. Что касается обычных данных, единственная часть файловой системы Linux, которую рекомендуется использовать на ramdisk, - это / tmp. В этом каталоге хранятся только временные данные, которые не сохраняются. Для создания постоянного RAM-диска, в котором хранится файловая система / tmp, требуется дополнительная запись в файле / etc / fstab следующим образом (на основе ramfs):

ramfs / tmp ramfs по умолчанию 0 0

В следующий раз, когда вы загрузите свою систему Linux, ramdisk будет включен автоматически.

Использование zRAM

zRAM означает виртуальный своп, сжатый в ОЗУ, и создает сжатое блочное устройство непосредственно в физической памяти. zRAM вступает в действие (используется), как только в системе больше нет доступных страниц физической памяти. Затем ядро ​​Linux пытается сохранить страницы как сжатые данные на устройстве zRAM.

В настоящее время нет пакета для Debian GNU / Linux, но для Ubuntu. Он называется zram-config. Установите пакет и настройте устройство zRAM, просто запустив соответствующую службу systemd следующим образом:

# systemctrl start zram-config

Как видно из вывода swapon -s, устройство активно как дополнительный раздел подкачки. Автоматически для zRAM выделяется 50% памяти (см. Рисунок 1). В настоящее время нет возможности указать другое значение для выделения zRAM.

Чтобы увидеть более подробную информацию о сжатом разделе подкачки, используйте команду zramctl. На рисунке 2 показано имя устройства, алгоритм сжатия (LZO), размер раздела подкачки, размер данных на диске и его сжатый размер, а также количество потоков сжатия (значение по умолчанию: 1).

Стратегия использования

Далее мы сосредоточимся на стратегии использования памяти. Есть несколько параметров, которые влияют на использование и распределение памяти. Сюда входит размер страниц памяти - в 64-битных системах это 4M. Далее, важна подмена параметров. Как уже объяснялось в первой части, этот параметр контролирует относительный вес, придаваемый подкачке из оперативной памяти, в отличие от удаления страниц памяти из системного кэша страниц. Также не стоит забывать и о кешировании, и о выравнивании страниц памяти.

Используйте программы, требующие меньше памяти

И последнее, но не менее важное: использование памяти зависит от самих программ. Большинство из них связаны с библиотекой C по умолчанию (стандартная LibC). Как разработчик, чтобы свести к минимуму ваш двоичный код, подумайте об использовании альтернативы и гораздо меньшей библиотеки C вместо. Например, есть dietlibc [1], uClibc [2] и musl lib C [3]. Веб-сайт разработчика musl lib C содержит подробное сравнение [4] этих библиотек с точки зрения минимально возможной статической программы на C, сравнение функций, а также соответствующих сред сборки и поддерживаемых аппаратных архитектур.

Как пользователю, возможно, вам не придется компилировать свои программы. Рассмотрите возможность поиска небольших программ и различных фреймворков, которые требуют меньше ресурсов. В качестве примера вы можете использовать среду рабочего стола XFCE вместо KDE или GNOME.

Заключение

Существует довольно много возможностей изменить использование памяти в лучшую сторону. Это варьируется от Swap до сжатия на основе zRAM, а также от настройки ramdisk или выбора другой структуры.

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

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

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

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

Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...
Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...
Как изменить указатель мыши и размер курсора, цвет и схему в Windows 10
Указатель мыши и курсор в Windows 10 - очень важные аспекты операционной системы. То же самое можно сказать и о других операционных системах, так что,...