Почему стандартная перестановка 60? Каков будет эффект, если я уменьшу значение подкачки для моего настольного ПК?

16

Я читал о подмене на разных форумах и видел несколько видео. Многие заявили, что для пользователей настольных систем полезно уменьшить значение подкачки ниже 60 (это значение по умолчанию). Некоторые заявили, что 60 хорошо для серверов. Именно поэтому для меня было бы лучше понизить это и почему 60 хорошо для серверов? Я пытался найти ответ (я посмотрел здесь, например), но не смог понять. ... Пожалуйста, используйте простые термины: D

Мина Майкл
источник
отредактировал вопрос. Это хорошо сейчас?
Мина Майкл

Ответы:

22

Ваша предпосылка неверна. Не существует значения подкачки «хорошо для серверов».

Swapiness - это объем обмена, который сделан, особенно, насколько агрессивно вы меняете обмен. Для моих серверов перестановка близка к нулю, так как я уверен, что у них достаточно памяти для всего. Нет лучшего значения для серверов. есть 60, что является значением по умолчанию, а затем есть «ваша ценность», которая зависит от использования и доступной памяти.

Если у вас есть серверы, которые иногда используют НАГРУЗКИ памяти, вы можете иметь их выше, чем по умолчанию, но я бы сказал, что некоторые серверы (серверы баз данных?) Могут захотеть держать их на уровне ниже, чем домашний компьютер.

Nanne
источник
ну ладно: я следил за этим unix.stackexchange.com/questions/88693/… . второй ответ (тот, что в настоящее время имеет 2 голоса) сказал, что 60 может быть наиболее подходящим для серверов. ... И позволь мне понять это прямо. Я должен установить высокую перестановку, если я выполняю процессы, которые требуют большой памяти, и низкие, если я делаю несколько небольших процессов?
Мина Майкл
(и в зависимости от спецификации моего компьютера конечно) У меня есть Core 2 Duo около 2,9 ГГц с интегрированной графикой Intel кстати
Mina Michael
1
Невозможно сказать. Зависит от многих вещей, как также указано в этом ответе -> некоторые базы данных могут выполнять свое собственное кэширование, а некоторые нет. Это зависит от программ и вашего оборудования. Существует значение по умолчанию, и лучшее, что вы можете сделать, это проверить, как ваша система работает в какой ситуации. Как уже было сказано, я добавил достаточно mem в свои системы, и я знаю, что им требуется, поэтому у меня может быть своппинг около 0. Но на здоровых системах обмен может быть хорошей вещью. здесь нет простых советов по настройке «бога для всех», прочитайте ответ с лучшим голосом. Кроме того: в этом втором ответе написано «может быть», а не «есть»
Nanne
(и в ваших спецификациях: самое важное, если вы говорите о памяти, которая у вас есть, и о вас, но нет особой необходимости добавлять ее здесь: мы могли бы целыми днями говорить о всевозможных особенностях, лучше всего прочитать лучший ответ по той ссылке Unix, которую вы дали, и продолжайте тестировать, как она работает в вашей среде.) '
Nanne
ну тогда я сказал, что не могу понять, что я прочитал. Я довольно слаба в знаниях (и даже в языке, если честно XD) ... так что мне просто нужно продолжать пытаться! хорошо спасибо: D
Мина Майкл
8

Значение подкачки масштабируется таким образом, чтобы сбить людей с толку. Они видят, что он имеет диапазон от 0 до 100, поэтому они думают о процентах, когда на самом деле эффективный минимум составляет около 50.

Примерно 60 означает, что не нужно менять местами, пока мы не достигнем около 80% использования памяти, оставляя 20% для кэша и тому подобное. 50 означает ждать, пока у нас не хватит памяти. Более низкие значения означают то же самое, но с возрастающей агрессивностью в попытках освободить память другими способами.

Описать это очень хорошо на http://lwn.net/Articles/83588/

Дэвид
источник
Что означают более высокие значения, например, 80 или 100?
19
5

Параметр swappiness - это способ, которым Linux рассчитывает преимущества / недостатки обмена в конкретном сценарии. Высокая перестановка не приведет к перестановке системы, когда в этом нет необходимости, а низкая перестановка, при условии, что вы не полностью отключите подкачку, не помешает вашей системе подкачки, когда это абсолютно необходимо.

Перестановка по умолчанию, равная 60 или около того, является очень хорошим компромиссом, гарантирующим хорошую производительность вашей системы, гарантируя, что она не изо всех сил выделяет кэш-память, пока есть неиспользованная выделенная программная память.

Помните, что если у вас достаточно ОЗУ для всех ваших процессов и кеша, что обычно бывает, если у вас достаточно физической ОЗУ, обмен в любом случае не должен быть проблемой для вас. Предпочтительный способ устранения проблем, связанных со слишком большой перестановкой, - это уменьшение использования ОЗУ процессами и / или увеличение физической ОЗУ. Уменьшение перестановки будет иметь отрицательный эффект, если вам действительно нужно больше оперативной памяти.

Пожалуйста, посмотрите ответ, который я написал на очень похожий вопрос:

/ubuntu//a/184221/54256

Выдержка:

Почему большинство людей рекомендуют уменьшить swappiness до 10-20?

Поскольку большинство считает, что подкачка - это плохо, и если вы не уменьшите перестановку, система поменяется, когда в этом действительно нет необходимости. Ни то, ни другое не правда. Люди связывают своп со временем, когда их система застревает - однако, это в основном своп, потому что система сваливается, а не наоборот. Это правда, что есть определенные моменты, когда подкачка может иметь заметное снижение производительности, но система уже учтет это в своем решении об обмене и решила, что невыполнение будет иметь большее общее ухудшение производительности или стабильности системы, что может позже стать заметным. В целом настройки по умолчанию должны обеспечить наилучшую общую производительность и надежность. Я бы рекомендовал оставить его по умолчанию.

...

После того, как вы израсходовали достаточно памяти, которой недостаточно для бесперебойной работы кэша, Linux может перераспределить часть неиспользуемой памяти приложения из ОЗУ для замены.

Это не делает это согласно определенному сокращению все же. Это не значит, что вы достигли определенного процента распределения, тогда Linux начинает меняться. У него довольно «нечеткий» алгоритм. Принимается во внимание множество вещей, которые лучше всего можно описать как «насколько сильно давление для выделения памяти». Если существует большое «давление» для выделения новой памяти, то это увеличит шансы, что некоторые из них будут заменены, чтобы освободить место. Если будет меньше «давления», это уменьшит эти шансы.

Ваша система имеет настройку «swappiness», которая помогает вам настроить, как рассчитывается это «давление». Обычно это вообще не рекомендуется менять, и я бы никогда не порекомендовал вам это изменить. Замена в целом очень хорошая вещь: любые случайные потери производительности должны компенсироваться увеличением общей отзывчивости и стабильности системы для широкого круга задач. Если вы уменьшите объем перестановки, вы позволите уменьшить объем кеш-памяти немного больше, чем это было бы в противном случае, даже если это действительно может быть полезно. Поэтому вы рискуете замедлить работу вашего компьютера в целом, поскольку кеша меньше, а память занята приложениями, которые даже не используют его. Является ли это достаточно хорошим компромиссом для какой-то конкретной проблемы, с которой вы сталкиваетесь при обмене, зависит от вас.

Что происходит, когда система перегружена и сильно перегружена?

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

При выборе того, что следует перенести на диск, система пытается выбрать память, которая фактически не используется - для чтения или записи. Он имеет довольно простой алгоритм для расчета этого, который выбирает большую часть времени.

...

Но как обменяться может ускорить мою систему? Разве обмен не замедляет вещи?

Передача данных из оперативной памяти в swap - это медленная операция, но она выполняется только тогда, когда ядро ​​почти уверено, что общее преимущество перевесит это. Например, если память вашего приложения выросла до такой степени, что у вас почти не осталось кеша, и ваш ввод-вывод очень неэффективен из-за этого, вы можете на самом деле добиться гораздо большей скорости из своей системы, освободив часть памяти, даже после первоначальной стоимости обмена данными, чтобы освободить их.

Не стесняйтесь читать весь пост на /ubuntu//a/184221/54256

thomasrutter
источник
0

Своппинг полностью противоречит всем этим ответам.

Реальная работа подкачки описана в статье: https://gokulvasanblog.wordpress.com/2016/11/14/empathising-mammoths-mentality-a-study-on-linux-memory-management/

Неоднозначность подтверждается заявлением Эндрю Мортона: https://lwn.net/Articles/83593/

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

Надеюсь, что это полезно

user3624410
источник
1
Добро пожаловать в АС. Не могли бы вы обобщить ключевые моменты статьи, на которую вы указали, и объяснить, как она отвечает на вопрос, а не объяснить, что такое перестановка или нет.
Марк Ванхомиссен