Ядро Linux

Понимание vm.обмен

Понимание vm.обмен
Ядро Linux - довольно сложная программа с длинным списком компонентов, таких как модули, интерфейсы и файлы конфигурации [1]. Эти компоненты могут быть настроены с конкретными значениями для достижения желаемого поведения или режима работы компонента [2,3,4]. Впоследствии эта настройка напрямую влияет как на поведение, так и на производительность вашей системы Linux в целом.

Текущие значения ядра Linux и его компонентов доступны через специальный интерфейс - каталог / proc [5]. Это виртуальная файловая система, в которой отдельные файлы заполняются значениями в реальном времени. Значения представляют фактическое состояние, в котором находится ядро ​​Linux. Вы можете получить доступ к отдельным файлам в каталоге / proc с помощью команды cat следующим образом:

$ cat / proc / sys / net / core / somaxconn
128
$

Один из этих параметров ядра называется vm.обмен. Он «контролирует относительный вес, придаваемый выгрузке из оперативной памяти, в отличие от удаления страниц памяти из системного кэша страниц» [6]. Начиная с версии ядра Linux 2.6 это значение было введено. Он хранится в файле / proc / sys / vm / swappiness .

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

Использование swap [6] было важной частью использования небольших UNIX-машин в начале 1990-х годов. Это все еще полезно (например, иметь запасное колесо в автомобиле), когда неприятные утечки памяти мешают вашей работе. Машина замедлится, но в большинстве случаев ее можно будет использовать для выполнения поставленной задачи. Разработчики бесплатного программного обеспечения делают большие успехи в сокращении и устранении программных ошибок, поэтому перед изменением параметров ядра рассмотрите возможность обновления до более новой версии вашего приложения и связанных библиотек.

Если вы запускаете множество задач, неактивные задачи будут выгружены на диск, что позволит лучше использовать память для ваших активных задач. Для редактирования видео и других приложений, потребляющих большой объем памяти, часто рекомендуются объемы памяти и дискового пространства. Если у вас есть более старая машина, на которой нельзя обновить память, то предоставление большего объема подкачки может быть для вас хорошим временным решением (см. [6] о том, как узнать больше об этом).

Обмен может происходить на отдельном разделе или в файле подкачки. Раздел работает быстрее и используется многими приложениями баз данных. Файловый подход более гибкий (см. Пакет dphys-swapfile в Debian GNU / Linux [7]). Наличие более одного физического устройства для обмена позволяет ядру Linux выбирать устройство, которое наиболее быстро доступно (меньшая задержка).

vm.обмен

Значение по умолчанию vm.swappiness - 60 и представляет собой процент свободной памяти до активации swap. Чем ниже значение, тем меньше используется подкачка и тем больше страниц памяти хранится в физической памяти.

Значение 60 - это компромисс, который хорошо подходит для современных настольных систем. Для серверной системы рекомендуется меньшее значение. Как указано в руководстве Red Hat Performance Tuning [8], для рабочих нагрузок баз данных рекомендуется меньшее значение подкачки. Например, для баз данных Oracle Red Hat рекомендует значение swappiness 10. Напротив, для баз данных MariaDB рекомендуется установить для swappiness значение 1 [9].

Изменение значения напрямую влияет на производительность системы Linux. Эти значения определены:

* 0: своп отключен
* 1: минимальный объем подкачки без его полного отключения
* 10: рекомендуемое значение для повышения производительности при наличии достаточного объема памяти в системе
* 100: агрессивный обмен

Как показано выше, команда cat помогает прочитать значение. Кроме того, команда sysctl дает тот же результат:

# sysctl vm.обмен
vm.swappiness = 60
#

Имейте в виду, что команда sysctl доступна только пользователю с правами администратора. Чтобы установить значение, временно установите значение в файловой системе / proc следующим образом:

# эхо 10> / proc / sys / vm / swappiness

В качестве альтернативы вы можете использовать команду sysctl следующим образом:

# sysctl -w vm.swappiness = 10

Чтобы установить значение навсегда, откройте файл / etc / sysctl.conf как административный пользователь и добавьте следующую строку:

vm.swappiness = 10

Заключение

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

Для старых машин, которые больше не могут быть обновлены (уже имеют максимальный поддерживаемый объем памяти), вы можете рассмотреть возможность размещения небольшого твердотельного диска в машине, чтобы использовать его в качестве дополнительного устройства подкачки. Это, очевидно, станет расходным материалом, поскольку ячейки памяти выходят из строя из-за большого количества операций записи, но может продлить срок службы машины на год или более по очень низкой цене. Более низкая задержка и быстрое чтение дадут гораздо лучшую производительность, чем замена на обычный диск, давая промежуточные результаты в ОЗУ. Это должно позволить вам использовать несколько более низкий vm.значения подкачки для оптимальной производительности. Вам придется поэкспериментировать. SSD-устройства быстро меняются.

Если у вас более одного устройства подкачки, подумайте о том, чтобы сделать его устройством RAID для чередования данных между доступными устройствами.

Вы можете вносить изменения в подкачку без перезагрузки компьютера, что является большим преимуществом по сравнению с другими операционными системами.

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

Последнее замечание: вы будете увеличивать нагрузку на свои устройства подкачки. Вам нужно будет следить за их температурой. Перегретая система снизит частоту процессора и замедлит работу.

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

Автор хотел бы выразить особую благодарность Герольду Рупрехту и Золеке Хатитонгве за их критические замечания и комментарии при подготовке этой статьи.

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

* [1] Учебное пособие по ядру Linux для начинающих, https: // linuxhint.ком / Linux-ядро-руководство-новички /

* [2] Дерек Моллой: Написание модуля ядра Linux - Часть 1: Введение, http: // derekmolloy.т.е. / запись-а-Linux-ядро-модуль-часть-1-введение /

* [3] Дерек Моллой: Написание модуля ядра Linux - Часть 2: Символьное устройство, http: // derekmolloy.т.е. / написание-linux-kernel-module-part-2-a-character-device /

* [4] Дерек Моллой: Написание модуля ядра Linux - Часть 3: Кнопки и светодиоды, http: // derekmolloy.т.е. / ядро-gpio-программирование-кнопки-и-светодиоды /

* [5] Франк Хофманн: Команды для управления памятью Linux, https: // linuxhint.ком / команды-для-управления-Linux-память /

* [6] Фрэнк Хофманн: Управление памятью ядра Linux: пространство подкачки, https: // linuxhint.com / Linux-управление-память-подкачки-пространство /

* [7] пакет dphys-swapfile для Debian GNU / Linux, https: // пакеты.дебиан.org / stretch / dphys-swapfile

* [8] Руководство по настройке производительности Red Hat, https: // доступ.Красная шляпа.com / documentation / en-us / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Настройка MariaDB, https: // mariadb.com / kb / en / library / configuring-swappiness /

Как установить Doom и играть в него в Linux
Введение в Doom Серия Doom возникла в 90-х годах после выхода оригинальной Doom. Это мгновенно стал хитом, и с тех пор серия игр получила множество на...
Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...