Параметр swappiness - это способ, которым Linux рассчитывает преимущества / недостатки обмена в конкретном сценарии. Высокая перестановка не приведет к перестановке системы, когда в этом нет необходимости, а низкая перестановка, при условии, что вы не полностью отключите подкачку, не помешает вашей системе подкачки, когда это абсолютно необходимо.
Перестановка по умолчанию, равная 60 или около того, является очень хорошим компромиссом, гарантирующим хорошую производительность вашей системы, гарантируя, что она не изо всех сил выделяет кэш-память, пока есть неиспользованная выделенная программная память.
Помните, что если у вас достаточно ОЗУ для всех ваших процессов и кеша, что обычно бывает, если у вас достаточно физической ОЗУ, обмен в любом случае не должен быть проблемой для вас. Предпочтительный способ устранения проблем, связанных со слишком большой перестановкой, - это уменьшение использования ОЗУ процессами и / или увеличение физической ОЗУ. Уменьшение перестановки будет иметь отрицательный эффект, если вам действительно нужно больше оперативной памяти.
Почему большинство людей рекомендуют уменьшить swappiness до 10-20?
Поскольку большинство считает, что подкачка - это плохо, и если вы не уменьшите перестановку, система поменяется, когда в этом действительно нет необходимости. Ни то, ни другое не правда. Люди связывают своп со временем, когда их система застревает - однако, это в основном своп, потому что система сваливается, а не наоборот. Это правда, что есть определенные моменты, когда подкачка может иметь заметное снижение производительности, но система уже учтет это в своем решении об обмене и решила, что невыполнение будет иметь большее общее ухудшение производительности или стабильности системы, что может позже стать заметным. В целом настройки по умолчанию должны обеспечить наилучшую общую производительность и надежность. Я бы рекомендовал оставить его по умолчанию.
...
После того, как вы израсходовали достаточно памяти, которой недостаточно для бесперебойной работы кэша, Linux может перераспределить часть неиспользуемой памяти приложения из ОЗУ для замены.
Это не делает это согласно определенному сокращению все же. Это не значит, что вы достигли определенного процента распределения, тогда Linux начинает меняться. У него довольно «нечеткий» алгоритм. Принимается во внимание множество вещей, которые лучше всего можно описать как «насколько сильно давление для выделения памяти». Если существует большое «давление» для выделения новой памяти, то это увеличит шансы, что некоторые из них будут заменены, чтобы освободить место. Если будет меньше «давления», это уменьшит эти шансы.
Ваша система имеет настройку «swappiness», которая помогает вам настроить, как рассчитывается это «давление». Обычно это вообще не рекомендуется менять, и я бы никогда не порекомендовал вам это изменить. Замена в целом очень хорошая вещь: любые случайные потери производительности должны компенсироваться увеличением общей отзывчивости и стабильности системы для широкого круга задач. Если вы уменьшите объем перестановки, вы позволите уменьшить объем кеш-памяти немного больше, чем это было бы в противном случае, даже если это действительно может быть полезно. Поэтому вы рискуете замедлить работу вашего компьютера в целом, поскольку кеша меньше, а память занята приложениями, которые даже не используют его. Является ли это достаточно хорошим компромиссом для какой-то конкретной проблемы, с которой вы сталкиваетесь при обмене, зависит от вас.
Что происходит, когда система перегружена и сильно перегружена?
Часто люди смотрят на свою систему, которая сильно перегружает диск и использует много места подкачки и винит в этом обмен. Это неправильный подход. Если подкачка когда-либо достигает этого предела, это означает, что в вашей системе слишком мало памяти, и подкачка - единственное, что предотвращает случайный сбой или уничтожение процессов. Без обмена, в этой ситуации, процессы будут падать и умирать. Обмен является признаком более глубокой проблемы. В системе, имеющей достаточно памяти для всех своих задач, подкачка обеспечивает только эффективное использование памяти, распределяя память в кэш через неактивные процессы, где она считает, что это того стоит. В системе, где подкачка неуклонно перебивает диск, это не ошибка подкачки.
При выборе того, что следует перенести на диск, система пытается выбрать память, которая фактически не используется - для чтения или записи. Он имеет довольно простой алгоритм для расчета этого, который выбирает большую часть времени.
...
Но как обменяться может ускорить мою систему? Разве обмен не замедляет вещи?
Передача данных из оперативной памяти в swap - это медленная операция, но она выполняется только тогда, когда ядро почти уверено, что общее преимущество перевесит это. Например, если память вашего приложения выросла до такой степени, что у вас почти не осталось кеша, и ваш ввод-вывод очень неэффективен из-за этого, вы можете на самом деле добиться гораздо большей скорости из своей системы, освободив часть памяти, даже после первоначальной стоимости обмена данными, чтобы освободить их.