Linux swapiness - настройка параметров ядра виртуальной машины

9

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

Этот вопрос я адаптировал из предыдущего вопроса:

удаление кэша оперативной памяти Linux

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

Я хотел бы узнать, есть ли у кого-нибудь из вас опыт настройки значения по умолчанию 60 в следующем файле (это происходит на сервере Ubuntu):

/proc/sys/vm/swappiness  

И если да, то, что влияет, вы видели. Если я заменю значение по умолчанию 60 на 30, увижу ли я меньше подкачки и намного больше повторного использования устаревшего кэша? Должен ли я приблизиться к 0 или 100, чтобы уменьшить swapiness и увеличить повторное использование кэша?

Наконец, кто-нибудь знает, почему по умолчанию установлено значение 60?

ПРИМЕЧАНИЕ. Если оно близко к 0, Linux предпочитает хранить приложения в оперативной памяти, а не увеличивать кэш. Если оно близко к 100, Linux предпочтет выгружать приложения и максимально увеличивать кэши. Значение по умолчанию - 60. - Спасибо за ссылку ниже, 3dInfluence.

Патрик Р
источник

Ответы:

6

Изменить: переписать ответ, чтобы он был короче и яснее, я надеюсь :)

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

Так что больше к вашему вопросу. Swappiness контролирует, когда подсистема VM восстанавливает страницы таблиц процесса, удаляя и выкладывая их на страницы, то есть подкачку. Эта настраиваемая функция позволяет подсистеме ВМ искать страницы, которые нужно поменять местами, когда% памяти, сопоставленной таблицам страниц процесса + значение подкачки> 100. Таким образом, значение 60 приведет к тому, что система начнет выгружать устаревшие страницы со страницы процесса. таблица, когда он использует более 40% памяти вашей системы. Если вы хотите, чтобы ваши программы использовали больше памяти за счет кэша, вам нужно уменьшить значение подкачки. Вы также захотите взглянуть на / proc / sys / vm / min_free_kbytes и / proc / sys / vm / vfs_cache_pressure. Поскольку это также будет контролировать, сколько памяти хранится в резерве и насколько агрессивно кэширование.

3dinfluence
источник
@ 3dinfluence - я работал над той статьей, на которую вы ссылались выше. Отличный ресурс!
Патрик Р
1
linuxinsight.com/proc_sys_vm_hierarchy.html даст вам одно или два предложения о том, что делает каждый из настраиваемых параметров. Но я получил эту информацию о том, как перестановка работает, из книги под названием «Настройка производительности для серверов Linux»
3dinfluence,
+1 спасибо 3dinfluence. До сих пор эта книга была чрезвычайно познавательной.
Патрик Р
Это здорово .... удалось ли вам улучшить производительность вашего приложения?
3dinfluence
Я смог улучшить производительность. Кроме того, я обнаружил, что следующая команда помогает при настройке: # sysctl -w vm.swappiness = 40
Патрик R