- Создайте файл подкачки Linux
- Как добавить файл подкачки
- Как настроить значение подкачки
- Как удалить файл подкачки
- Выводы
- Создание, редактирование и удаление SWAP в Linux
- Содержание
- Swap (Русский)
- Contents
- Пространство подкачки
- Раздел подкачки
- Активация используя systemd
- Отключение подкачки
- Файл подкачки
- Вручную
- Создание файла подкачки
- Удаление файла подкачки
- Автоматически
- systemd-swap
- Подкачка с USB устройства
- Шифрование подкачки
- Производительность
- Swappiness
- VFS cache pressure
- Приоритет
- Использование zswap или zram
- Чередование
Создайте файл подкачки Linux
Swap — это пространство на диске, которое используется, когда объем физической памяти RAM заполнен. Когда в системе Linux заканчивается ОЗУ, неактивные страницы перемещаются из ОЗУ в область подкачки.
Пространство подкачки может иметь форму выделенного раздела подкачки или файла подкачки. В большинстве случаев при запуске Linux на виртуальной машине раздела подкачки нет, поэтому единственный вариант — создать файл подкачки.
Это руководство было протестировано в системах Linux с Ubuntu 18.04 и CentOS 7, но оно должно работать с любым другим дистрибутивом Linux.
Как добавить файл подкачки
Выполните следующие действия, чтобы добавить 1 ГБ свопа на свой сервер. Если вы хотите добавить 2 ГБ вместо 1 Гб, заменить 1G с 2G .
Создайте файл, который будет использоваться для свопа:
Если faillocate не установлен или вы получили сообщение об ошибке, в котором fallocate failed: Operation not supported что fallocate failed: Operation not supported вы можете использовать следующую команду для создания файла подкачки:
Только пользователь root должен иметь возможность писать и читать файл подкачки. Чтобы установить правильный тип разрешений :
Используйте утилиту mkswap чтобы настроить файл как область подкачки Linux:
Включите свопинг с помощью следующей команды:
Чтобы сделать изменение постоянным, откройте файл /etc/fstab и добавьте следующую строку:
Чтобы убедиться, что своп активен, используйте либо команду swapon либо free как показано ниже:
Как настроить значение подкачки
Swappiness — это свойство ядра Linux, которое определяет, как часто система будет использовать пространство подкачки. Подкачка может иметь значение от 0 до 100. Низкое значение заставит ядро по возможности избегать подкачки, в то время как более высокое значение заставит ядро более агрессивно использовать пространство подкачки.
Значение swappiness по умолчанию — 60. Вы можете проверить текущее значение swappiness, введя следующую команду:
Хотя значение подкачки 60 подходит для большинства систем Linux, для производственных серверов вам может потребоваться установить более низкое значение.
Например, чтобы установить значение swappiness равным 10, вы должны выполнить следующую команду sysctl :
Чтобы сделать этот параметр постоянным при перезагрузке, добавьте следующую строку в /etc/sysctl.conf :
Оптимальное значение swappiness зависит от рабочей нагрузки вашей системы и того, как используется память. Вы должны настраивать этот параметр небольшими приращениями, чтобы найти оптимальное значение.
Как удалить файл подкачки
Если по какой-либо причине вы хотите деактивировать и удалить файл подкачки, выполните следующие действия:
Сначала деактивируйте своп, набрав:
Удалите запись файла подкачки /swapfile swap swap defaults 0 0 из файла /etc/fstab .
Наконец, удалите фактический файл подкачки с помощью команды rm :
Выводы
Вы узнали, как создать файл подкачки, а также активировать и настроить пространство подкачки в вашей системе Linux.
Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.
Источник
Создание, редактирование и удаление SWAP в Linux
Оперативной памяти много не бывает. Виртуальная память предназначена для рационального распределения оперативной памяти между пользовательскими и системными процессами. Проще говоря, чтобы не расходовать оперативную память на хранение статичной информации, выделяют некоторую область жесткого диска для ее размещения.
Содержание
В системе Линукс для размещения виртуальной памяти можно выделить отдельный раздел жесткого диска или использовать обычный файл. Линукс позволяет комбинировать эти два способа. По умолчанию в Unix системах применяется SWAP раздел. Производительность отдельного SWAP раздела жесткого диска выше, чем производительность виртуальной памяти размещенной в файле. Единственным минусом SWAP раздела является сложность его редактирования.
Если Вы до эксплуатации сервера знаете какой емкости нужна SWAP область, то обязательно используйте отдельный раздел жесткого диска. Если нагрузка на SWAP область пока неизвестна, то лучше разместить виртуальную память в файле, после чего определив потребности системы, создать раздел нужного размера.
Система Linux позволяет одновременно использовать несколько SWAP разделов и SWAP файлов. Это позволяет более гибко подойти к вопросу расширения виртуальной памяти в случае нехватке размера SWAP области на сервере. Чаще всего, на работающем сервере с существующим SWAP разделом выясняется, что текущего размера виртуальной памяти уже не хватает. Целесообразнее добавить тестовый файл подкачки для определения нагрузки на SWAP область, а уже после увеличить размер раздела.
Создание, редактирование и удаление любых разделов из под загруженной в данный момент операционной системы не безопасно, поэтому создание SWAP раздела, вместо SWAP файла, делается только с использованием LiveCD. Статья на тему безопасного редактирования разделов будет написана в будущее время.
В системе Windows виртуальная память размещена только в отдельном файле — pagefile.sys (для Windows 2000 и выше) и win386.swp (для Windows 9x).
Для любой операционной системы, если используется спящий режим (Hebernation), размер виртуальной памяти следует делать не меньше объема оперативной памяти. В общих случаях наиболее эффективно использовать размер виртуальной памяти кратный 4 (1024 Мб, 2048 Мб и т.д.), так как ядро системы производит обмен страницами с памятью по 4 Кб в каждой. Размер виртуальной памяти легче посчитать от объема оперативной памяти *2, *3. Область подкачки стоит размещать на самом быстром жестком диске ближе к началу.
Хочу обратить Ваше внимани, что приведенные ниже инструкции касается только изменения размера ФАЙЛА ВИРТУАЛЬНОЙ ПАМЯТИ, а не изменение размера отдельной директории SWAP.
Ниже приведены пошаговые инструкции, которые позволят создать, изменить и удалить файл SWAP.
- Создаем файл необходимого размера для swap области, где /home/swap-tmp — это имя и путь файла, а count=1024K его размерв, в данном случае — 1024 Мб):
Редактировать файл fstab можно самостоятельно или командой, которая добавляет в конец файла fstab строку /home/swap-tmp swap swap defaults 0 0:
- Просматриваем все объекты, которые используются для размещения виртуальной памяти
Если Вы раньше добавляли строчку в fstab, для автоматической загрузки SWAP файла при старте операционной системы, то следует ее удалить. Выводим файл /etc/fstab для редактирования на экран:
Действия по редактирование объема SWAP файла сводятся к удалению уже созданного файла SWAP и созданию нового файла требуемого размера. То есть нужно сначало сделать пункт 3, а после пункт 2.
А что насчёт отдельных разделов? С ними как быть?
Или тоже достаточно удалить раздел и стереть его из fstab?
С разделами все так же, только следите, чтобы SWAP все же остался в каком-то виде. Я не знаю как будет работать Linux без SWAP , не даром, при установке ОС, объязательные разделы: / и своп
Линукс без SWAP работает нормально, если есть около 2Гб Ram и комп используется как десктоп. Сам только что создал раздел свопа только ради ресурсоемкого приложения.
Amiro: Линукс без SWAP работает нормально, если есть около 2Гб Ram и комп используется как десктоп. Сам только что создал раздел свопа только ради ресурсоемкого приложения.
Ну, то что Linux работает без Swap – это точно, но как это скажется на производительность остается вопросом.
P.S. В вашем случае я бы создал скрипт, который создает swap и запускает ресурсоемкое приложение. После завершения работы этого приложение удаляется swap файл. И повесил бы его на кнопку запуска приложения.
Mut@NT
P.S. В вашем случае я бы создал скрипт, который создает swap и запускает ресурсоемкое приложение. После завершения работы этого приложение удаляется swap файл. И повесил бы его на кнопку запуска приложения.
—
Файл свапа на машине с 2-мя гигами оперативы размерами в 4 гига около двух минут создаеться, устанеш ждать загрузку своего приложения
Spec: Файл свапа на машине с 2-мя гигами оперативы размерами в 4 гига около двух минут создаеться, устанеш ждать загрузку своего приложения
Тут нет золотой середины. Всегда приходится чем-то жертвовать либо скоростью, либо быстротой ))
Mut@NT: P.S. В вашем случае я бы создал скрипт, который создает swap и запускает ресурсоемкое приложение. После завершения работы этого приложение удаляется swap файл. И повесил бы его на кнопку запуска приложения.
Вот только никакой гарантии что это будет всегда работать -нет.
Может найтись такая программа(не ваше ресурсоёмкое приложение, а иная) , которая при недостатке памяти сбрасывает данные на диск(если malloc возвращает NULL ), а если память есть, то хранит их в памяти. в результате после отработки вашего приложения для которого создавался своп, в нём может оказаться куча данных других приложений которые просто не влезут в память при вытеснении их из свопа. Что начнёт после этого происходить с системой – тема для отдельного разговора. Если своп у вас есть, то его можно только наращивать, но никак не уменьшать , чтоб это было безопасно
Вы правы. В статье отражено лишь то, что это в Linux возможно
Куча ошибок в тексте.
> или добавить строчка для автоматической
или добавить строчку для автоматической
> которая будет используется ядром
которая будет использоваться ядром
Прошу прощения за возможно дилетантское высказывание, просто я лучше знаю Solaris. По вопросу производительности и объёма SWAP , у меня опыт такой. SWAP хотят некоторые приложения, например Oracle, в то же время подкачка это всегда узкое место (если только диск не SSD ). По этому если есть возможность вообще без подкачки, то производительность максимальная, с другой стороны по опыту и рекомендациям вендоров при озу до 2Гб размер SWAP =озу, до 4Гб 50% озу, до 1Тб где то от 16 до 32Гб, свыше терабайта можно давать 64Гб. Опять же зависит от приложения, например SAP требует чтобы при 32Гб памяти SWAP был не менее 20Гб.
Значек # подразумевает что sudo не нужно, ошибка в # sudo dd if=/dev/zero of=/home/swap-tmp bs=1024 count=1024K; правильно: # dd if=/dev/zero of=/home/swap-tmp bs=1024K count=1024
Источник
Swap (Русский)
Эта страница дает ознакомление с пространством подкачки и подкачкой страниц в GNU/Linux. Охватывает создание, активацию файлов и разделов подкачки.
Linux делит свою физическую RAM (оперативную память) на кусочки памяти, называемые страницами. Подкачка (swapping) это процесс, когда страницы памяти копируются на предварительно сконфигурированное пространство на жестком диске, называемое пространством подкачки, чтобы освободить эту страницу из памяти. Суммарный размер оперативной памяти и пространства подкачки это количество доступной виртуальной памяти.
Поддержка подкачки обеспечивается ядром Linux и утилитами в пользовательском пространстве из util-linux пакета.
Contents
Пространство подкачки
Пространство подкачки может быть разделом диска или файлом. Пользователи могут создать пространство подкачки во время установки или позднее в любое желаемое время. Пространство подкачки может быть использовано для двух целей, расширить виртуальную память за пределы установленной оперативной памяти (RAM), а также для сохранения данных при гибернации (suspend-to-disk).
Иногда стоит включать Swap в зависимости от установленной оперативной памяти и количества требований для запуска желаемых программ. Если количество оперативной памяти меньше требуемого, тогда стоит включить подкачку. Это позволяет избежать состояния нехватки памяти (OOM), при котором механизм ядра Linux, OOM Killer, будет автоматически пытаться освободить память, убивая процессы. Чтобы увеличить количество виртуальной памяти до требуемого уровня, добавьте необходимую разницу как пространство подкачки. Например, если программа требует 7,5 GB памяти для запуска, а у вас установлено 4 GB оперативной памяти, добавьте разницу 3,5 GB как подкачку. В будущем добавляйте больше пространства к подкачке, учитывая требования. Это вопрос личных предпочтений если вы считаете, что программы должны быть убиты, вместо включения подкачки. Самый большой недостаток в подкачке это снижение производительности, см. раздел #Производительность
Для проверки статуса подкачки, используйте:
free также покажет недостаток памяти, который может быть исправлен включением или увеличением подкачки.
Раздел подкачки
Раздел подкачки может быть создан различными GNU/Linux утилитами разметки. Разделы подкачки обычно обозначаются как тип 82 . Хотя есть возможность использовать разные типы как подкачку, рекомендуется использовать тип 82 , в большинстве случаев systemd, будет автоматически определять его и монтировать (см. ниже)
Для установки раздела как область Linux подкачки, можно использовать mkswap . Например:
Для подключения устройства как подкачку:
Чтобы подключить этот раздел подкачки при загрузке, добавьте запись в fstab:
где может быть получен из команды:
Активация используя systemd
Активация разделов подкачки в systemd базируется на двух различных механизмах. Оба исполняются в /usr/lib/systemd/system-generators . Генераторы запускаются при старте системы и создают нативные systemd юниты для монтирования. Первый systemd-fstab-generator , читает fstab, чтобы генерировать юниты, включая юнит для подкачки. Второй systemd-gpt-auto-generator , осматривает корневой диск, чтобы генерировать юниты. Это операция проходит только на GPT дисках и может идентифицировать разделы подкачки по их тип коду 82 .
Отключение подкачки
Чтобы деактивировать определенное пространство подкачки:
Также можно использовать -a ключ, чтобы деактивировать все пространства подкачки.
С тех пор, как systemd управляет подкачкой, она вновь будет активирована при старте системы, для долговременного отключения автоматической активации найденных пространств подкачки, выполните systemctl —type swap , чтобы найти связанные со .swap юниты и замаскируйте (systemctl mask юнит) их.
Файл подкачки
Как альтернатива к созданию целого раздела, файл подкачки даёт возможность менять свой размер на лету, а также его гораздо легче полностью удалить. Это может быть особенно важно, если дисковое пространство ограничено (например, небольшие SSD)
Вручную
Создание файла подкачки
Использовать под суперпользователем fallocate , чтобы создать файл подкачки размером на свой выбор (M = Mebibytes, G = Gibibytes). Например создание 512 MiB файла подкачки:
Установите права доступа (всеми читаемый файл подкачки это огромная локальная уязвимость)
После создания файла нужного размера, форматируйте его в подкачку:
Активируйте файл подкачки:
В завершении, отредактируйте fstab, добавив запись для файла подкачки:
Удаление файла подкачки
Чтобы удалить файл подкачки, сначала нужно отключить подкачку, а затем файл может быть удален:
В завершении, удалите соответствующую запись из /etc/fstab .
Автоматически
systemd-swap
Установить systemd-swap пакет. Установить swapfc_enabled=1 в Swap File Chunked разделе файла /etc/systemd/swap.conf . Start/enable systemd-swap сервис. Посетить страницу авторов на GitHub для получения подробностей и установить рекомендуемую конфигурацию.
Подкачка с USB устройства
Благодаря модульности, предлагаемой Linux, мы можем иметь множество разделов подкачки на различных устройствах. Если у вас полностью заполнен жесткий диск, то можно использовать USB устройство как временный раздел подкачки. Однако, этот метод имеет серьёзные недостатки:
- USB устройство медленнее чем жесткий диск
- Flash память имеет ограниченное количество циклов записи. Использование его как раздела подкачки, может быстро убить его.
Чтобы добавить USB устройство как подкачку, сначала необходимо разметить USB флешку для подкачки как описано в секции #Раздел подкачки.
Далее откройте /etc/fstab и добавьте
в опции монтирования первоначальной записи подкачки, таким образом USB подкачка будет иметь приоритет записи над старым разделом.
Данная инструкция будет работать и для других устройств хранения, таких как SD карты и т.д.
Шифрование подкачки
Производительность
Операции подкачки как правило существенно медленнее чем непосредственный доступ к RAM. Отключение подкачки полностью для повышения производительности, иногда может привести к ухудшению, поскольку это уменьшает доступную память для VFS кеша, вызывая более частые и дорогостоящие операции ввода/вывода.
Значения подкачки можно настроить, чтобы помочь производительности:
Swappiness
Swappiness sysctl параметр представляющий частоту использования пространства подкачки. Swappiness может иметь значение от 0 до 100, значение по умолчанию = 60. Низкое значение заставляет ядро избегать подкачки, высокое значение позволяет ядру использовать подкачку наперёд. Использование низкого значения на достаточном количестве памяти, улучшает отзывчивость на многих системах.
Чтобы проверить текущее значение swappiness:
Чтобы временно установить значение swappiness:
Чтобы постоянно установить значение swappiness, отредактируйте (создайте) конфигурационный файл sysctl
Чтобы проверить и больше узнать, почему оно так работает, посмотрите эту статью.
VFS cache pressure
Другой sysctl параметр, который действует на производительность подкачки это vm.vfs_cache_pressure , он контролирует склонность ядра к применению памяти, которая используется для кэширования VFS caches, напротив кэширования страниц и подкачки. Увеличение этого значения увеличивает коэффициент с которым VFS caches применяется[2] [устаревшая ссылка 2020-08-06] . Для подробной информации смотри документацию ядра Linux.
Приоритет
Если у вас больше одного файла или раздела подкачки, вы должны учитывать присвоение приоритетного значения (от 0 до 32767) для каждой области подкачки. Система будет использовать области подкачки с высоким приоритетом, перед использованием областей с низким приоритетом. Например, если у вас быстрый диск ( /dev/sda ) и медленный ( /dev/sdb ), назначьте высокий приоритет для подкачки расположенной на быстром устройстве. Приоритет может быть назначен в fstab как pri параметр:
Или как параметр в swapon —priority
Если две или более областей будут иметь одинаковый приоритет и он будет самым высоким из доступным приоритетов, то страницы будут распределяться по кругу между областями.
Использование zswap или zram
Zswap это особенность ядра Linux, обеспечивающая сжатие обратного кэша для страниц подкачки. Она увеличивает производительность и уменьшает операции ввода/вывода. ZRAM создаёт виртуальный сжатый файл подкачки в памяти, как альтернатива файлу подкачки на диске.
Чередование
Нет необходимости использовать RAID для повышения производительности подкачки. Ядро самостоятельно может чередовать подкачку на нескольких устройствах, если вы присвоите им одинаковый приоритет в /etc/fstab . Для подробной информации смотри The Software-RAID HOWTO.
Источник