Почему swappiness установлен на 60 по умолчанию?

Я делаю что-то вроде этого использование OpenVPN. Мой ноутбук и сотовый телефон могут соединиться с моим сервером дома с помощью SSL по соединению TCP на порте 443. Это действительно полезно, когда я в тяжелых местах, которые не позволяют Вам использовать любые порты, кроме того, 80 и 443. Вот простая конфигурация, которая выполняет это на сервере:

port 443
proto tcp
dev tun
server 10.44.3.0 255.255.255.0
ca ca.crt
cert cloud.crt
key cloud.key
dh dh2048.pem
script-security 2
push "redirect-gateway"

Затем Вы говорите серверу выполнять NAT на пакетах, прибывающих из клиентов VPN:

iptables -t nat -A POSTROUTING -s 10.44.3.0/24 -o eth0 -j MASQUERADE

После того, как я подключусь, сетевой маршрут на моем портативном устройстве похож на это:

briankb@ubuntu:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.94.0.9       0.0.0.0         UG    0      0        0 tun0
192.79.68.0      0.0.0.0         255.255.255.128 U     1      0        0 eth0
10.94.0.1       10.94.0.9       255.255.255.255 UGH   0      0        0 tun0
10.94.0.9       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
121.119.173.12   192.79.68.1      255.255.255.255 UGH   0      0        0 eth0

Первая строка говорит, что шлюз по умолчанию клиента является сервером VPN, таким образом, весь трафик отправляется по нему. Следующая строка является подсетью, которую я в настоящее время использую (Wi-Fi колледжа). Третья и четвертая строка является подсетью/маршрутом VPN, и последняя строка говорит, используют текущий интерфейс глобальной сети для отправки пакетов в сервер VPN.

Для получения инструкций относительно установки OpenVPN посмотрите, Как вести.

111
29.08.2013, 16:28
3 ответа

Начиная с ядра 2.6.28, Linux использует заменяющую стратегию страницы Split Least Recently Used (LRU). Страницы с источником файловой системы, такие как текст программы или совместно использованные библиотеки принадлежат кэшу файла. Страницы без поддержки файловой системы называют анонимными страницами и состоят из данных во время выполнения, таких как стековое пространство, зарезервированное для приложений и т.д. Обычно страницы, принадлежащие кэшу файла, являются более дешевыми для выселения из памяти (как они могут простой быть считанными назад из диска при необходимости). Так как анонимные страницы не имеют никакой поддержки файловой системы, они должны остаться в памяти, пока они необходимы программе, если нет область подкачки для хранения их к.

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

Linux может справиться с отсутствием области подкачки, потому что по умолчанию учетная политика памяти ядра может превысить возможности памяти. Оборотная сторона - то, что то, когда физическая память исчерпывается, и ядро, не может подкачать анонимные страницы к диску, out-of-memory-killer (OOM-уничтожитель), механизм начнет избавляться от процессов "жулика" памяти-hogging к свободному память для других процессов.

vm.swappiness опция является модификатором, который изменяет баланс между выгрузкой страниц кэша файла в пользу анонимных страниц. Кэшу файла дают произвольное приоритетное значение 200 от который vm.swappiness модификатор вычитается (file_prio=200-vm.swappiness). Анонимные страницы, по умолчанию, начинаются с 60 (anon_prio=vm.swappiness). Это означает, что по умолчанию приоритетные веса стоят умеренно в пользу анонимных страниц (anon_prio=60, file_prio=200-60=140). Поведение определяется в mm/vmscan.c в исходном дереве ядра.

Данный a vm.swappiness из 100, приоритеты были бы равны (file_prio=200-100=100, anon_prio=100). Это имело бы смысл для ввода-вывода тяжелая система, если это не требуется что страницы от кэша файла, выселяемого в пользу анонимных страниц.

Установка Conversely vm.swappiness кому: 0 будет препятствовать тому, чтобы ядро выселило анонимные страницы в пользу страниц от кэша файла. Это могло бы быть полезно, если программы делают большую часть своего кэширования себя, которые могли бы иметь место с некоторыми базами данных. В настольных системах это могло бы улучшить интерактивность, но оборотная сторона - то, что производительность ввода-вывода, вероятно, получит удар.

Значение по умолчанию было, скорее всего, выбрано в качестве приблизительного middleground между этими двумя экстремальными значениями. Как с любым эксплуатационным параметром, корректируясь vm.swappiness должен быть основан на исходных данных, сопоставимых с реальными рабочими нагрузками, не только инстинктивным чувством.

135
27.01.2020, 19:29
  • 1
    Как делает установку ОС на влиянии полупроводникового прибора компромисс? –  gerrit 01.07.2016, 13:50
  • 2
    @gerrit тип носителя базовой системы хранения не важен. Такая деталь не видима к подсистеме управления памятью. –  Thomas Nyman 30.09.2016, 23:02
  • 3
    Тип носителя базовой системы хранения не важен с точки зрения использования памяти. Вы могли бы рассмотреть понижение swappiness, что носитель поддерживает ограниченный объем чтения-записей (т.е. флэш-память) для увеличения ее долговечности. –  MatrixManAtYrService 10.02.2017, 03:40
  • 4
    @MatrixManAtYrService Благодаря внутреннему выравнивающему износ и встроенному дублированию, современные SSD (к которому относится вопрос в предыдущем комментарии), как показывали, продлился до 2 ПБ (!) записей прежде, чем показать ошибки. Даже более дешевые диски в тех экспериментах, продлившихся для 300 ТБ перед ошибочным появлением, далеко вне официальной гарантийной оценки приблизительно 100 ТБ. По крайней мере по-моему, корректировка swappiness для размещения для SSD на рабочих станциях или ноутбуках действительно не гарантирована. –  Thomas Nyman 10.02.2017, 13:38
  • 5
    @ThomasNyman Вы делаете правильное замечание для большинства пользователей, о которых не стоит вызывать беспокойство. Случай, который принес мне к этому сообщению, включил область подкачки на SD-карте, которую я распознаю, определенный пограничный случай. –  MatrixManAtYrService 13.02.2017, 23:55

Проблема состоит в том, что нет никакого значения по умолчанию, которое удовлетворит всем потребностям. Установка swappiness опции к 10 может быть соответствующей установкой для рабочих столов, но значение по умолчанию 60 может более подойти для серверов. Другими словами, swappiness нужно настроить согласно варианту использования - рабочий стол по сравнению с сервером, тип приложения и так далее.

Кроме того, ядро Linux использует память для дискового кэша иначе, RAM не использовалась бы, и это не эффективно и предназначено. Наличие дисковых данных в кэше означает, что, если чему-то нужны те же данные снова, это, вероятно, получит его от памяти. Выборка данных оттуда намного более более быстра, чем получение его от диска снова. И swappiness опция является механизмом, сколько ядро Linux предпочитает выгружать к диску к уменьшению дискового кэша. Это должно скорее удалить более старые данные из кэша, или это должно выгрузить некоторые страницы программы?

Эта статья может пролить некоторый свет на тему также. Особенно, как тенденция свопинга оценивается.

9
27.01.2020, 19:29
  • 1
    , который я не понимаю, почему 60 более подходит для серверов. У меня действительно есть серверы, и некоторые процессы входят в подкачку, даже если у нас есть 40% freem RAM. не имеет смысла для меня. –  Hugo 29.08.2013, 16:37
  • 2
    Имеет смысл перемещать части памяти в подкачку, если очень маловероятно, что они собираются быть полученными доступ, что способ, которым Linux сохраняет как можно больше фактического поршня свободным быть готов к ситуациям, когда этому на самом деле нужен он. –  replay 29.08.2013, 16:39

Добавление дополнительных подробно к ответам выше.
Поскольку мы используем все больше и больше виртуальных машин, хост Linux может быть виртуальной машиной в одной из этих облачных сред. В обоих примерах 1 и 2 мы получили хорошее представление о запущенных приложениях и о том, сколько оперативной памяти они потребляют. В 3 не так много

  • Пример 1
    Высокопроизводительное частное облако (думаю, за такое облако большинство банков заплатило бы миллионы), в котором диск обеспечивается очень дорогим массивом хранения с ОЧЕНЬ хорошими характеристиками. IO. Часть этого хранилища может находиться в ОЗУ (в дисковом массиве), поддерживаемом дисками SSD, поддерживаемыми обычными дисками со шпинделями. В этой ситуации диск, который видит виртуальная машина, может быть лишь немного медленнее, чем оперативная память, к которой она может получить доступ. Для одной виртуальной машины нет большой разницы между подкачкой и оперативной памятью.
  • Пример 2
    То же, что и в примере 1, но вместо одной виртуальной машины у вас есть сотни, тысячи или больше. В этой ситуации мы обнаруживаем, что оперативная память сервера (гипервизора) дешевая и многочисленна, а оперативная память для хранения - дорогая (условно говоря). Если мы разделим требования к оперативной памяти между оперативной памятью гипервизора и SWAP, предоставляемой нашим очень дорогим массивом хранения, мы обнаружим, что быстро используем всю оперативную память в массиве хранения, затем блоки обслуживаются твердотельными накопителями и, наконец, шпинделями. Внезапно все начинает замедляться. В этом случае мы, вероятно, захотим назначить большой объем оперативной памяти (от гипервизора) виртуальной машине и установить для swappiness значение 0 (только подкачка, чтобы избежать состояний нехватки памяти), поскольку совокупный эффект всех этих виртуальных машин будет влиять на производительность хранилище, где установка более высокого значения подкачки может дать ощутимый прирост производительности, поскольку будет больше неиспользуемой оперативной памяти, потому что приложения, с которыми в настоящее время не взаимодействуют, были (в основном) заменены.
  • Пример 3 Современный ноутбук или настольный компьютер с твердотельным накопителем. Требования к памяти считаются неизвестными. Какой браузер будет использовать пользователь, сколько вкладок у него будет открыто, будут ли они редактировать документ, изображение RAW или, возможно, видео, все они будут потреблять оперативную память. Установка низкого значения подкачки и выполнение других настроек файловой системы будет означать, что на SSD будет меньше записей, и поэтому он будет длиться дольше.
5
27.01.2020, 19:29

Теги

Похожие вопросы