Создать swapfile

swapfile(подкачка) - один из механизмов виртуальной памяти, при котором временно выгруженные из памяти страницы могут сохраняться на внешних запоминающих устройствах как в файле, так и в специальном разделе на жёстком диске (partition), называемые соответственно swap-файл или swap-раздел. Когда приложение обратится к откачанной странице, если она есть в swap-файле, загрузит её обратно в память. В ОС Unix, и подобных ей, swap обычно помещается на отдельный раздел жёсткого диска, что ранее ускоряло доступ к данным, по сравнению с расположением swap на обычном разделе. В ядрах Linux 2.6 и новее работа swap-файла не уступает по производительности swap-разделу.

Пример создания swap-файла

1. Создаём файл swap и заполняем его нулями: $ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 2. Подготавливаем swapfile для использования: $ sudo mkswap /swapfile $ sudo chmod 600 /swapfile 3. Добавляем в файл fstab: $ sudo nano /etc/fstab строку: /swapfile none swap sw 0 0 Найдите и закомментируйте строку со старым swap! Сохраняем изменения: Ctrl+O, Enter Выходим из редактора: Ctrl+X 4. Активируем swapfile: $ sudo swapon /swapfile 5. Перезагружаемся: $ sudo reboot 6. После перезагрузки проверяем: $ sudo swapon --show $ free -h

Создаем swap раздел

Предположим, что при разбивке диска, раздел swap был определен как /dev/sda8, но по каким то причинам раздел swap не подключился. Проверим и убедимся, что раздел существует: $ sudo fdisk -l Выключаем раздел подкачки: $ sudo swapoff -a Убеждаемся, что раздел подкачки отключен: $ sudo swapon --show $ free -h Создаем раздел подкачки на выделенном разделе диска: $ sudo mkswap /dev/sda8 Активируем раздел подкачки: $ sudo swapon /dev/sda8 Проверяем: $ sudo swapon --show Добавляем строку в /etc/fstab для автоматической активации после перезагрузки: $ echo '/dev/sda8 none swap sw 0 0' | sudo tee -a /etc/fstab Перезагружаемся: $ sudo reboot После перезагрузки проверяем: $ sudo swapon --show $ free -h

Изменить swappiness

Можно контролировать интенсивность использования пространства подкачки в Ubuntu с помощью параметра swappiness. Этот параметр определяет при каком % свободной оперативной памяти будет задействован SWAP (виртуальная память). Таблица swappiness: vm.swappiness = 0 Swap отключен. В более ранних версиях это означало, что ядро ​​будет меняться только во избежание состояния нехватки памяти vm.swappiness = 1 Ядро версии 3.5 и более, а также ядро ​​Red Hat 2.6.32-303 и более: минимальное количество подкачки без его полного отключения. vm.swappiness = 10 Это значение иногда рекомендуется для повышения производительности при наличии достаточной памяти в системе. vm.swappiness = 60 Значение по умолчанию vm.swappiness = 100 Ядро будет агрессивно меняться. С версией ядра 3.5 и выше, а также с версией ядра 2.6.32-303 и более, вероятно, лучше использовать 1 для случаев, когда 0 было оптимальным. Чтобы временно установить swappiness в Linux, введите нужное значение (например, 10) в /proc/sys/vm/swappiness используя следующую команду: Установите значение swappiness как root: $ echo 10 > /proc/sys/vm/swappiness Кроме того, запустите это: $ sysctl -w vm.swappiness=10 где -w, --write разрешить запись значения переменной Проверьте изменение: $ cat /proc/sys/vm/swappiness 10 В качестве альтернативы, проверьте изменение: $ sysctl vm.swappiness vm.swappiness = 10 Для того, чтобы swappiness не изменился после перезагрузки, надо вставить конфигурационную строку vm.swappiness=10 в файл /etc/sysctl.conf: 1. Открыть файл /etc/sysctl.conf на редактирование: $ sudo nano /etc/sysctl.conf 2. Вставить строку в конец файла(если ее там нет): vm.swappiness = 10 3. Сохранить изменения в файле: Ctrl+O Затем Enter 2 раза 4. Выйти из редактора Ctrl+X 5. Проверить изменения: $ cat /proc/sys/vm/swappiness Еше один параметр, который влияет на количество используемой памяти — это vfs_cache_pressure. Он указывает системе какое время нужно хранить открытые файлы в кэше оперативной памяти. 0 — не кэшировать ничего. 100 — значение по-умолчанию. >100 — агрессивно кэшировать дисковые операции. Значение 100 заставляет систему удалять такие файлы очень быстро, 0 — держать их в памяти как можно дольше. Узнать текущее состояние параметра vfs_cache_pressure: $ cat /proc/sys/vm/vfs_cache_pressure Рекомендуется устанавливать значение 1000 и больше для обычных винчестеров и около 50 для SSD дисков. Чем выше значение vm.vfs_cache_pressure тем отзывчивей будет система (тем больше будет кэширование), но это при условии что у Вас достаточно оперативной памяти (более 2Гб). При небольшом ОЗУ значение vm.vfs_cache_pressure рекомендуется установить на 50, т.е. больше использовать swap (виртуальную память). Если у Вас обычный HDD и ОЗУ больше 2Гб, то попробуйте установить значение 1000: $ sudo sysctl -w vm.vfs_cache_pressure=1000 Применим значения параметров до перезагрузки: $ sudo sysctl -p