SWAP Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:swap [2017/08/07 21:16]
Статья переработана, из статьи убраны личные домыслы автора (нужен ли спящий режим тем, кто не страдает провалами в памяти, промахиваются ли процессы мимо SWAP при изменении vm.swappiness и т.д.). Содержимое приведено в соответствии с требованиями к стать
wiki:swap [2019/06/27 23:40] (текущий)
[Размер]
Строка 8: Строка 8:
  
 ===== Размещение ===== ===== Размещение =====
-SWAP может быть размещен на разделе диска, в [[спящий_режим#​создание_swap-файла|файле]] или в [[RAM]]. Исторически в Linux SWAP размещался на разделе,​ но в современных дистрибутивах производительность ​swap-файла не уступает ​swap-разделу. Однако стандартный установщик Ubuntu (до версии 17.04) не умеет создавать ​swap-файл при установке и выдает предупреждение,​ если ​swap-раздел не определен при разметке диска. Начиная с версии 17.04, Ubuntu предлагает по умолчанию создавать ​swap в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб). Использование ​swap-файла имеет некоторые преимущества:​ он не занимает отдельный раздел,​ его легко создать,​ изменить его размер или удалить.+SWAP может быть размещен на разделе диска, в [[спящий_режим#​создание_swap-файла|файле]] или в [[RAM]]. Исторически в Linux SWAP размещался на разделе,​ но в современных дистрибутивах производительность ​SWAP-файла не уступает ​SWAP-разделу. Однако стандартный установщик Ubuntu (до версии 17.04) не умеет создавать ​SWAP-файл при установке и выдает предупреждение,​ если ​SWAP-раздел не определен при разметке диска. Начиная с версии 17.04, Ubuntu предлагает по умолчанию создавать ​SWAP в файле (объем определяется как 5% от свободного на диске места, но не более 2 Гб). Использование ​SWAP-файла имеет некоторые преимущества:​ он не занимает отдельный раздел,​ его легко создать,​ изменить его размер или удалить.
  
-Дополнительно при выборе размещения ​swap нужно учитывать,​ что не все файловые системы позволяют использовать прямую адресацию блоков ​swap-файла. Так, к примеру,​ нельзя использовать ​swap в файле на разделе с файловой системой btrfs.+Дополнительно при выборе размещения ​SWAP нужно учитывать,​ что не все файловые системы позволяют использовать прямую адресацию блоков ​SWAP-файла. Так, к примеру,​ нельзя использовать ​SWAP в файле на разделе с файловой системой btrfs(по состоянию на середину 2017).
  
 ===== Безопасность ===== ===== Безопасность =====
Строка 16: Строка 16:
  
 ===== Размер ===== ===== Размер =====
-По назначению размера SWAP в Интернете можно найти множество рекомендаций,​ однако универсального ответа нету.+В Интернете можно найти множество рекомендаций ​по определению размера SWAP, однако универсального ответа не существует.
  
 При определении размера SWAP следует учесть следующие аспекты:​ При определении размера SWAP следует учесть следующие аспекты:​
Строка 27: Строка 27:
 В зависимости от ответов на эти вопросы рекомендации по размеру SWAP будут значительно различаться. ​ В зависимости от ответов на эти вопросы рекомендации по размеру SWAP будут значительно различаться. ​
  
-Для машин с незначительным объемом памяти (меньше 2 Гб) рекомендуется создавать SWAP размером ​с оперативную память или немного больше. +Для машин с незначительным объемом памяти (меньше 2 Гб) рекомендуется создавать SWAP размером ​от 1,5 до 2-х размеров ​оперативной памяти. И стоит попробовать изменять vm.swappiness,​ но лучше поискать возможность увеличить ​объем ​оперативной памяти.\\ 
-Для машин с объемом памяти ​2-4 Гб нужно решить,​ будет ли использоваться suspend to disk. Если да, то нужно создавать SWAP размером на 10-15% больше размера оперативной памяти. Если же suspend to disk использоваться не будет, то можно создать SWAP небольшого размера (от половины до трети от объема оперативной памяти). Можно не создавать SWAP при установке системы,​ а при необходимости добавить его позже как файл. +Для машин с объемом памяти ​3-4 Гб нужно решить,​ будет ли использоваться suspend to disk. Если да, то нужно создавать SWAP размером на 10-15% больше размера оперативной памяти. Если же suspend to disk использоваться не будет, то можно создать SWAP небольшого размера (размером ​от половины до объема оперативной памяти). Можно не создавать SWAP при установке системы,​ а при необходимости добавить его позже как файл.\\ 
-На компьютерах с объемами оперативной памяти более ​4Gb имеет смысл создать SWAP размером в половину от объема оперативной памяти. При этом, если вы хотите использовать гибернацию,​ следует оценить загрузку оперативной памяти в процессе работы и задать величину SWAP, исходя из этого. К примеру,​ если объем оперативной памяти составляет 16 ГБ, а рабочая загрузка не превышает в среднем 5-6 ГБ, величины SWAP-раздела в 8 ГБ вам хватит для гибернации. При таком подходе следует помнить,​ что при использовании ресурсоёмких программ (рендеринг изображения,​ компиляция огромных проектов и т.п.) оперативная память может заполняться полностью,​ а SWAP - использоваться в качестве подкачки. В таких ситуациях размер SWAP нужно ​назначать индивидуально.+На компьютерах с объемами оперативной памяти более ​6Gb имеет смысл создать SWAP размером в половину от объема оперативной памяти. При этом, если вы хотите использовать гибернацию,​ следует оценить загрузку оперативной памяти в процессе работы и задать величину SWAP, исходя из этого. К примеру,​ если объем оперативной памяти составляет 16 ГБ, а рабочая загрузка не превышает в среднем 5-6 ГБ, величины SWAP-раздела в 8 ГБ вам хватит для гибернации. При таком подходе следует помнить,​ что при использовании ресурсоёмких программ (рендеринг изображения,​ компиляция огромных проектов и т.п.) оперативная память может заполняться полностью,​ а SWAP - использоваться в качестве подкачки. В таких ситуациях размер SWAP нужно ​выбирать индивидуально.\\
  
 При работе с секретными (зашифрованными) данными стоит либо шифровать SWAP, либо рассмотреть вариант с отказом от SWAP вовсе (зависит от размера оперативной памяти). Стоит также рассмотреть вариант с шифрованием всего диска. При работе с секретными (зашифрованными) данными стоит либо шифровать SWAP, либо рассмотреть вариант с отказом от SWAP вовсе (зависит от размера оперативной памяти). Стоит также рассмотреть вариант с шифрованием всего диска.
- 
 ===== Создание SWAP на разделе диска ===== ===== Создание SWAP на разделе диска =====
-Разобравшись с требованиями к SWAP можно приступить к его созданию или изменению.\\ +Разобравшись с требованиями к SWAPможно приступить к его созданию или изменению.\\ 
-Ядро Linux может работать с несколькими частями SWAP. Поэтому если вы решили,​ что созданного при установке системы SWAP-раздела недостаточно,​ то стоит создать дополнительный SWAP (выделить место под раздел или ​ [[wiki:​спящий_режим#​создание_swap-файла|файл]]. Однако нужно учитывать,​ что для гибернации нужен непрерывный блок SWAP, который должен иметь размер больший,​ чем оперативная память.\\+Ядро Linux может работать с несколькими частями SWAP. Поэтому если вы решили,​ что созданного при установке системы SWAP-раздела недостаточно,​ то стоит создать дополнительный SWAP (выделить место под раздел или ​ [[wiki:​спящий_режим#​создание_swap-файла|файл]]). Однако нужно учитывать,​ что для гибернации нужен непрерывный блок SWAP, который должен иметь размер больший,​ чем оперативная память.\\
 К примеру,​ у нас есть раздел /dev/sdc2 (ваше имя раздела может отличаться). Создадим на нем необходимую структуру данных для работы SWAP:\\ К примеру,​ у нас есть раздел /dev/sdc2 (ваше имя раздела может отличаться). Создадим на нем необходимую структуру данных для работы SWAP:\\
 <code bash>​sudo mkswap /​dev/​sdc2</​code>​ <code bash>​sudo mkswap /​dev/​sdc2</​code>​
Строка 45: Строка 44:
 <code bash>​sudo blkid</​code>​ <code bash>​sudo blkid</​code>​
 Теперь пропишем строку в /etc/fstab Теперь пропишем строку в /etc/fstab
-<code bash>​echo "​UUID=<​UUID swap-раздела>​ swap swap defaults 0 0"| sudo tee -a /​etc/​fstab</​code> ​+<code bash>​echo "​UUID=<​UUID swap-раздела>​ swap swap defaults,​pri=<​Приоритет (от 0 до 32767)> ​0 0"| sudo tee -a /​etc/​fstab</​code> ​
 ===== SWAP с динамически изменяемым размером ===== ===== SWAP с динамически изменяемым размером =====
 Если вы не хотите думать об объеме SWAP, имеет смысл воспользоваться утилитой **swapspace** (динамический менеджер подкачки). Эта утилита работает в фоновом режиме и динамически управляет подкачкой. При необходимости swapspace автоматически создаёт дополнительные файлы подкачки требуемого размера. Неиспользуемые файлы подкачки удаляются и не занимают место.\\ ​ Если вы не хотите думать об объеме SWAP, имеет смысл воспользоваться утилитой **swapspace** (динамический менеджер подкачки). Эта утилита работает в фоновом режиме и динамически управляет подкачкой. При необходимости swapspace автоматически создаёт дополнительные файлы подкачки требуемого размера. Неиспользуемые файлы подкачки удаляются и не занимают место.\\ ​
Строка 54: Строка 53:
  
 ===== Параметр vm.swappiness ===== ===== Параметр vm.swappiness =====
-Основной параметр,​ влияющий на работу системы со swap, - это **vm.swappiness**. ​Этот параметр задает процент **свободной** оперативной памяти,​ при котором начинается использование подкачки. Без особой необходимости трогать его не рекомендуется.+Основной параметр,​ влияющий на работу системы со swap, - это **vm.swappiness**. ​Очень приблизительно этот параметр ​можно определить так: он задает процент **свободной** оперативной памяти,​ при котором начинается использование подкачки. ​Более точное определение смысла этой переменной можно уяснить из описания которое было дано в рассылке kernel.org - [[http://​lwn.net/​Articles/​83588/​|статья на английском]].\\ 
 +Без особой необходимости трогать его не рекомендуется.
  
-Скорректировать значение,​ применяемое при загрузке системы,​ можно, указав в файле /​etc/​sysctl.conf значение vm.swappiness. Пример: ​мы хотим использовать подкачку при 30% свободной оперативной памяти. ​+Скорректировать значение,​ применяемое при загрузке системы,​ можно, указав в файле /​etc/​sysctl.conf значение vm.swappiness. Пример: ​
 <code bash>​echo "​vm.swappiness=30"​| sudo tee -a /​etc/​sysctl.conf</​code>​ <code bash>​echo "​vm.swappiness=30"​| sudo tee -a /​etc/​sysctl.conf</​code>​
 Мгновенно применить эту настройку можно с помощью следующей команды:​ Мгновенно применить эту настройку можно с помощью следующей команды:​
Строка 72: Строка 72:
 Маленькое значение vm.swappiness (минимальное значение:​ 0) будет заставлять ядро использовать больше оперативной памяти под память процессов (в ущерб буферам и кэшам),​ тогда как большое значение (максимальное значение:​ 100) будет выделять больше памяти под кэши и буфера (в ущерб памяти для процессов). Маленькое значение vm.swappiness (минимальное значение:​ 0) будет заставлять ядро использовать больше оперативной памяти под память процессов (в ущерб буферам и кэшам),​ тогда как большое значение (максимальное значение:​ 100) будет выделять больше памяти под кэши и буфера (в ущерб памяти для процессов).
  
-Нужно понимать:​ ни одно значение vm.swappiness не изменит волшебным образом производительность компьютера ​в лучшую сторону. Урезаете кеши - понижаете отзывчивость системы при работе с файлами,​ урезаете память процессов - снижаете отзывчивость системы при переключении задач. ​+Нужно понимать:​ ни одно значение vm.swappiness не увеличит волшебным образом производительность компьютера ​многократно. Урезаете кеши - понижаете отзывчивость системы при работе с файлами,​ урезаете память процессов - снижаете отзывчивость системы при переключении задач. ​
  
 Нужное вам значение,​ скорее всего, стоит подбирать экспериментально. Нужное вам значение,​ скорее всего, стоит подбирать экспериментально.