Возможно, у вас возникли проблемы с задержкой системы, интенсивное использование подкачки или проблемы с нехваткой памяти в вашей системе Linux. Обычный совет — «уменьшить значение подкачки», уменьшить использование подкачки. но что такое подкачка? И действительно ли хорошо это подправить?
Примечание : мы не будем вдаваться в подробности раздела подкачки. Вы можете прочитать все об этом в наша статья о том, что вам нужно знать о разделе подкачки в Linux .
Обмен
В UNIX-подобных системах существует значение подкачки, которое определяет, как будут обрабатываться страницы в памяти. Его значение по умолчанию в большинстве систем — «60», но его можно установить в любое значение от 0 до 100. Если памяти не хватает, ядро либо удаляет некоторые файловые кэши, чтобы освободить больше оперативной памяти для процессов, либо заменяет некоторые процессы. страницы и
Contents
Обмен
памяти на диск.Значение по умолчанию 60 означает, что подкачка будет использоваться меньше, а кэши ввода-вывода, скорее всего, будут освобождены для перераспределения оперативной памяти. Удаление кешей считается «более дешевым» (менее ресурсоемким), а замена страниц включает в себя операции чтения и записи с диска, что делает их более «дорогими». При значении «60» использование подкачки будет немного ниже, чем повторное использование кэша. Если значение swappiness увеличивается до 100, подкачка и вытеснение файлового кэша будут использоваться с одинаковым весом. Это означает больше подкачки и более быстрый ввод-вывод, чем по умолчанию. Более низкие значения, такие как «10», означают, что подкачка будет использоваться гораздо реже, а кэши ввода-вывода можно будет гораздо быстрее вытеснить в пользу процессов. Это может повысить интерактивность, но также может снизить скорость ввода-вывода.
Уменьшение возможности подкачки
На веб-сайтах и форумах часто можно увидеть советы по уменьшению подкачки примерно до «10». Предполагается, что это ускорит процесс за счет меньшего использования подкачки и сохранения большего количества процессов в физической оперативной памяти. Эта логика может показаться слишком простой и не является «универсальным решением для всех».
Уменьшение значения swappiness может быть полезно в следующих сценариях:
- Для систем баз данных или если вы используете много приложений, интенсивно использующих базы данных : базы данных обычно справляются с кэшированием файлов намного лучше, чем ОС. Если вы уменьшите подкачку, вы ограничите кэширование файлов ОС, тем самым давая базе данных возможность обрабатывать свои собственные кэши.
- Для интерактивности. Если вы много выполняете несколько задач, но обрабатываете мало файлов или не открываете большие документы, это может повысить плавность работы вашей системы. На диск будет записано меньше процессов, а поскольку доступ к оперативной памяти происходит намного быстрее, ваш компьютер может работать быстрее. Вы также должны иметь в виду, что это может снизить производительность ввода-вывода. Если у вас медленные диски или вы выполняете какие-либо операции с интенсивным вводом-выводом, это может даже снизить производительность.
- Для плацебо : многие считают, что более низкая подкачка ускорит работу системы. Серьезно, если вы думаете, что ваша система работает быстрее, это может привести к
Уменьшение возможности подкачки
как более быстрая.
Имейте в виду, что уменьшение подкачки может привести к сбоям и случайному завершению процессов системой для освобождения памяти. Уменьшение подкачки будет лучшим вариантом, если у вас достаточно оперативной памяти для бесперебойной работы вашей системы. Но вам следует сохранять значение выше «10», так как некоторое использование свопа полезно.
Увеличение возможности подкачки
Увеличение возможности подкачки может иметь общее преимущество в виде ускорения ввода-вывода. Хотя это и не рекомендуется, увеличение подкачки может оказаться полезным, если:
- Вы выполняете некоторые операции с интенсивным вводом-выводом и у вас медленные старые жесткие диски. Например: выполнение резервного копирования или пакетное редактирование изображений может потребовать большого количества операций ввода-вывода (заметным исключением являются базы данных, которые естественным образом интенсивно выполняют операции ввода-вывода, но могли бы выиграть от более низкого значения подкачки, как показано выше).
- У вас мало памяти, но относительно быстрые диски. В этом маловероятном сценарии более высокое значение подкачки может помочь более эффективно обрабатывать память (хотя установка слишком высокого значения может снова снизить производительность).
Как управлять подкачкой
Во-первых, вам следует подумать, нужно ли вам вообще трогать это значение. Испытываете проблемы с производительностью? И что еще более важно, пробовали ли вы другие настройки системы? Если нет, то, вероятно, лучше сначала поискать в другом месте. Но если вы имеете в виду конкретный сценарий, возможно, вы захотите продолжить.
Далее: насколько интенсивно вы используете своп? Вы можете узнать это с помощью любого инструмента мониторинга производительности по вашему выбору или с помощью команды free
. free -m
предоставит вам снимок использования памяти в мегабайтах. Для непрерывного мониторинга вы можете использовать watch.
watch -n 1 free -m
Команда free -m
будет выполняться каждую секунду и печатать ее вывод, пока вы не нажмете «Ctrl + C».
Как вы видите выше, система, на которой написана эта статья, использует очень мало свопа.
Теперь, если у вас есть опыт обмена, вам может быть интересно, насколько он активен. Команда vmstat
расскажет вам все, что вам нужно знать об использовании виртуальной памяти вашей системы (подкачки и физической памяти вместе).
vmstat 1
Вам необходимо проверить столбец swap
, где si
означает «заменить», а so
означает «заменить». Если числа высокие, это означает большую активность подкачки, что является индикатором проблем с нехваткой памяти. Если вы видите использование подкачки free
, но активное подкачивание мало, возможно, необходимо настроить подкачку.
Также рекомендуется установить другие тесты производительности, такие как дисковый ввод-вывод, средние значения нагрузки и т. д., чтобы при тестировании новых значений подкачки вам было с чем сравнива
Увеличение возможности подкачки
ие подкачки, вы можете временно установить его с помощью командыsysctl
. Для этого не требуется перезагрузка, и эффект немедленный. Фактически, перезагрузка восстановит значение по умолчанию, так что экспериментировать можно смело:
sudo sysctl vm.swappiness=10
Разумеется, вместо «10» можно поставить любое значение (между «0» и «100»).
Найдя желаемое значение, вы можете навсегда изменить конфигурацию системы, отредактировав «/etc/sysctl.conf»
sudo nano /etc/sysctl.conf
и добавление строк
#Set swappiness value vm.swappiness=10
до конца этого файла, конечно же, снова установив значение по вашему желанию.
Заключение
Понижение подкачки до «10» часто рекомендуется как универсальное решение, но фактическое использование этого метода может быть немного сложнее. Установив тесты, зная свою систему, то, как вы ее используете и что вам от нее нужно, вы можете точно настроить использование подкачки и добиться некоторого повышения производительности (интерактивности или ввода-вывода).