Диск подкачки для linux

Все о пространстве подкачки в ОС Линукс

Оригинал: All about Linux swap space
Автор: Gary Sims
Дата: 3 декабря 2007
Свободный перевод: Алексей Дмитриев
Дата перевода: 6 декабря 2007

При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!

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

Линукс разделяет доступную физическую оперативную память (RAM — random access memory) на блоки, называемые страницами. Своппинг — это процесс, при котором страница памяти копируется в заранее заготовленное место на жестком диске, называемое пространством подкачки, чтобы освободить данную страницу памяти для новой информации. Сумма объемов физической оперативной памяти и пространства подкачки называется объемом доступной виртуальной памяти.

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

Однако подкачка имеет и оборотную сторону. По сравнению с памятью, диск работает очень медленно. Скорость памяти измеряется в наносекундах, тогда как скорость диска в миллисекундах, получается, что доступ к диску может быть в десятки тысяч раз медленнее доступа к физической памяти. Чем больше происходит подкачки, тем медленнее работает система. Иногда чрезмерный своппинг приводит к пробуксовке, когда страница откачивается, затем тут же закачивается обратно, потом снова откачивается и так далее. В такой ситуации система борется за свободную память, «гоняя» приложение на месте. В такой ситуации только добавление дополнительной оперативной памяти может помочь.

В Линуксе пространство подкачки бывает двух видов: раздел подкачки (swap partition) и файл подкачки (swap file).

Раздел подкачки — это независимая секция жесткого диска, используемая исключительно для подкачки, никаких других файлов там нет. Файл подкачки — это файл особого типа внутри файловой системы, среди прочих файлов всех других типов. Чтобы узнать каким пространством для подкачки вы располагаете, наберите в командной строке:

В ответ вы получите что-то типа:

Каждая строка относится к отдельному пространству подкачки, имеющемуся в системе. В данном случае строка всего одна. Поле ‘Type’ (Тип) говорит, что мы имеем раздел (partition), а не файл. Поле ‘Filename’ сообщает, что этот раздел находится на диске sda5. Поле ‘Size’ (размер) показывает размер раздела в килобайтах. Поле ‘Used’ (Использовано) сообщает, сколько килобайт пространства подкачки используется (в данном случае ноль). ‘Priority’ (Приоритет) сообщает, какое из пространств подкачки Линукс использует первым. Подсистема подкачки в линуксе имеет замечательное свойство: если вы смонтируете с одинаковым приоритетом два (или больше) пространств подкачки (желательно на разных устройствах), Линукс станет использовать их для подкачки поочередно, что существенно увеличит производительность своппинга.

Раздел подкачки

Для того чтобы добавить дополнительный раздел подкачки в свою систему, необходимо сначала подготовить его. Шаг первый — убедиться, что раздел помечен как swap partition (раздел подкачки). Шаг второй — создать на нем специальную файловую систему — swap filesystem. Чтобы удостовериться, что раздел помечен как swap, с правами root (суперпользователя) наберите команду:

Читайте также:  Файл подкачки для 4 гб озу x32 windows 10

Замените /dev/hdb на то устройство, которое хотите проверить. В ответ получите что-то вроде:

Если раздел не помечен как Linux swap, то придется изменить его с помощью программы fdisk, используя опцию ‘t’. Будьте предельно осторожны при работе с разделами, если не хотите по ошибке удалить важный раздел, или переформатировать системный раздел в раздел подкачки. Вся информация на swap-разделе будет потеряна, так что семь раз отмерьте, один раз отрежьте. Также имейте в виду, что Solaris помечает свои разделы тем же идентификатором, что Линукс — свои разделы подкачки (Linux swap), так что поостерегитесь случайно испортить раздел Solaris (если они у вас есть). Когда раздел помечен как swap, необходимо отформатировать его командой mkswap (make swap), опять же, как root:

Если не появляется сообщений об ошибках, значит ваш раздел отформатирован и готов к работе. Чтобы немедленно его активировать напечатайте:

Убедиться, что раздел используется, можно запустив команду swapon -s . Чтобы новый раздел автоматически подключался (монтировался) при запуске компьютера, нужно отредактировать файл /etc/fstab, который содержит список файловых систем, подключаемых (монтируемых) при загрузке. Формат каждой строки таков:

Так как пространство подкачки является специальным типом файловой системы, многие из этих параметров не понадобятся. Для раздела подкачки добавьте строку

/dev/hdb1 none swap sw 0 0

Здесь /dev/hdb1 — сам раздел подкачки, он не имеет специальной точки монтирования (mount point), следовательно, пишем none (нет). Его тип (type) — swap, обозначается опцией sw. Последние два параметра не используются, поэтому там нули.

Можно проверить без перезагрузки компьютера, будет ли ваш новый раздел подкачки автоматически подключаться. Для этого сначала отключим все пространства подкачки командой swapoff -a , затем обратно подключим все пространства подкачки, перечисленные в /etc/fstab командой swapon -a , затем проверим, что именно подключилось, командой swapon -s .

Файл подкачки (Swap file)

Кроме разделов подкачки, Линукс поддерживает также файлы подкачки, которые можно создавать, подготавливать и монтировать способом, похожим на вышеописанный. Преимущество файлов подкачки в том, что не нужно искать свободный раздел или создавать новый для увеличения пространства подкачки.

Для создания файла подкачки используйте команду dd , которая «умеет» создавать пустые файлы. Для создания файла в 1Гб напечатайте:

dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Здесь: /swapfile — имя файла подкачки, а число 1048576 — это размер файла в килобайтах (т.е. 1Гб) Подготавливаем файл подкачки при помощи команды mkswap, также как поступали с разделом, но на этот раз указываем имя файла:

Аналогично монтируем его командой swapon:

Строка в файле /etc/fstab для файла подкачки выглядит так:

Какого размера должно быть пространство подкачки?

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

Ключевой вопрос — сколько? Старые версии Unix-подобных операционных систем (такие как Sun OS и Ultrix) рекомендовали пространство подкачки вдвое или втрое превышающее размер оперативной памяти. Современные разработки (такие как Линукс) не требуют так много, но могут использовать его, если им дадут. Правило тут такое: 1) для настольных систем выделяйте пространство подкачки равное удвоенному размеру оперативной памяти, это позволит вам одновременно запускать много приложений (многие из которых, будучи неактивны, легко могут быть откачаны на диск, освободив память для активных); 2) для сервера выделяйте меньше пространства подкачки (около половины размера оперативной памяти), так, чтобы обеспечить при необходимости возможность своппинга, но следите за использованием пространства подкачки, и при необходимости наращивайте оперативную память (RAM); 3) для старых компьютеров с маленьким объемом оперативной памяти (скажем, только 128Мб), выделяйте столько пространства для подкачки, сколько сможете, вплоть до 1Гб.

Ядро Linux 2.6 добавило новый параметр, называемый swappiness (перевода не существует), позволяющий администратору регулировать то, как Линукс оперирует с пространством подкачки. Это число от 0 до 100. В общих чертах, чем больше это число, тем больше страниц откачиваются из оперативной памяти на диск, а чем меньше значение swappiness, тем большее число приложений остаются в оперативной памяти, даже если они неактивны. Разработчик ядра Andrew Morton утверждает, что выставляет на своих десктопах swappiness на высочайший уровень — 100, говоря при этом: «Я считаю, что не следует ограничивать ядро в его стремлении откачивать мусор. Вы же не хотите, чтобы сотни мегабайт памяти, занятой раздувшимися приложениями, без пользы зависли в вашей машине. Выгрузите их на диск, а память используйте на что-нибудь полезное». У идеи Мортона есть и оборотная сторона: если память освобождается слишком быстро, то время отклика приложений возрастет, так как при вызове приложения, система должна будет сначала закачать его обратно в память, что создаст ощущение медлительности.

Читайте также:  Права доступа windows описание

Значение swappiness по умолчанию равно 60. Можно изменить его временно (до следующей перезагрузки) командой от имени root:

echo 50 > /proc/sys/vm/swappiness

Если хотите изменить его на постоянной основе, тогда нужно изменить параметр vm.swappiness в файле /etc/sysctl.conf

Заключение

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

Источник

Как в Linux Mint и Ubuntu увеличить и раздел подкачки. Как в Linux создать файл подкачки Swap

В этой статье на примере Linux Mint и Ubuntu мы научимся смотреть информацию по разделе подкачки, создавать файл подкачки, а также увеличивать доступное для подкачки место.

Файл подкачки — это определённое место на постоянном хранилище (например, на жёстком диске), куда на время сбрасываются данные, которые не умещаются в оперативную память. То есть это возможность увеличить количество оперативной памяти без покупки модулей ОЗУ. Правка, такая «виртуальная» оперативная память работает медленнее.

Посмотреть текущий размер раздела подкачки можно командой:

Либо командой free:

Как можно увидеть, в системе присутствует файл подкачки размером 2 Гигабайта, что, предположим, недостаточно.

Отключаем и удаляем этот файл подкачки следующими командами:

На диске должно быть достаточно места, чтобы туда поместился файл подкачки того размера, который вы задали.

Для создания файла подкачки размером 8G (измените значение по вашему желанию) выполните команду:

Затем выполните команды:

Откройте системный монитор, чтобы убедиться, что система видит файл подкачки:

Либо это можно сделать командой:

Вот и всё! Вам даже не нужно перезагружать систему, чтобы изменения вступили в силу.

Кстати, если вы вновь заходите изменить размер файла подкачки (в сторону увеличения или в сторону уменьшения — не важно), то в точности следуйте этой же инструкции ещё раз, но при создании файла подкачки укажите другой размер.

Как в Linux Mint и Ubuntu удалить файл подкачки

Для полного удаления файла подкачки выполните команды:

Затем откройте файл /etc/fstab:

И удалите из него строку:

Ошибка «fallocate: fallocate failed: Текстовый файл занят»

Если вы столкнулись с ошибкой:

Это означает, что вы хотите создать файл подкачки, но файл с таким именем уже существует и всё ещё используется.

Для его отключения и удаления выполните команды:

Управление файлами подкачки в других Linux

Для увеличения или создания файла подкачки в других дистрибутивах смотрите статьи:

Как создать раздел подкачки на другом диске

Вам необязательно использовать для свопа именно системный диск, на котором может быть мало место. Вы можете создать раздел на любом диске в системе. Подробности смотрите в инструкции «Как создать раздел подкачки не на системном диске. Как переместить раздел подкачки на другой диск».

Связанные статьи:

  • Как создать раздел подкачки не на системном диске. Как переместить раздел подкачки на другой диск (100%)
  • Как правильно и навсегда исправить ошибку «E: Не удалось получить доступ к файлу блокировки /var/lib/apt/lists/lock — open (11: Resource temporarily unavailable)» (50.7%)
  • Решение проблемы с ошибкой «fatal error: pcap.h: Нет такого файла или каталога» (50.7%)
  • dpkg: ошибка при обработке пакета . пакет абсолютно неработоспособен; перед настройкой его следует переустановить (РЕШЕНО) (50.7%)
  • Как установить локальный .deb пакет (50.7%)
  • Примеры базового и продвинутого использования команд apt, apt-cache, dpkg для управления пакетами в Ubuntu/Debian (RANDOM — 14.7%)

Рекомендуемые статьи:

13 Комментарии

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

Читайте также:  Как откатить mac os big sur до заводских настроек

Спасибо за добрые слова.

Спасибо! Толково все изложено. Мне помогло)

При запуске GIMP появляются такие сообщения;»Невозможно открыть тестовый файл подкачки.Чтобы избежать потери данных, проверьте в настройках расположение файла подкачки и права на него. (сейчас «/home/val/.gimp-2.8»).

Невозможно открыть файл подкачки. GIMP использовал всю доступную оперативную память и не может использовать файл подкачки. Некоторые части ваших изображений могут оказаться поврежденными. Сохраните файлы под другими именами, перезапустите GIMP и проверьте путь к файлу подкачки в параметрах программы.»
Куда копать, что изменить, ОС LM 19,2 x64

Суть ошибки в том, что:

  1. Закончилась оперативная память во время работы GIMP и, видимо, системный файл подкачки тоже закончился, если он есть
  2. Закончилось место на диске, либо неправильно выставлены права на файлы подкачки самой программы GIMP, которые она хранит на диске.

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

Если такой возможности нет, то увеличьте размер файла подкачки, как показано в инструкции на этой странице.

Если на диске действительно закончилось место, то:

а) очистите диск

б) укажите другую папку подкачки GIMP, для этого в меню GIMP перейдите в Правка → Параметры → Каталоги. Там установите значения для «Папка для временных файлов» и «Папка для подкачки»:

Если даже это невозможно, то в разделе «Системные ресурсы», уменьшите значения для «Максимальная память для отмены», «Размер кэша», а для «Сжатие файла подкачки» выберите «Лучшее сжатие»:

Alexey, спасибо за ответ, но пока ничего не получается. Выкладываю скрины, что выдает система.

На одном из скриншотов видно, что не удаётся создать файл gimprc, поскольку отказано в доступе.

Проверьте, существует ли папка

/.gimp-2.8/ и какие у неё права доступа:

Правильно ли я понимаю, что ваша домашняя папка это /home/val, а имя пользователя val?

То есть всё дело в правах доступа на папку

/.gimp-2.8/ — или у вас нет прав на эту папку, либо нет самой этой папки или что-то похожее. Можно попробовать указать в качестве временного каталога и каталога подкачки какую-нибудь папку, на которую у вас точно есть права доступа.

Папка существует, права есть… Нет времени разбираться с проблемой (срочно нужно обработать десяток фотографий), сейчас переустановлю систему, быстрей получится. Спасибо за участие! С наступащим НГ, успехов, благополучия!

Такой вопрос. По инструкций делал все было норм, но после перезагрузки вернулись исходные значения. Это говорит о том, что я где то не так сделал или же всегда после перезагрузки нужно обновлять размер памяти выделяемой?

После перезагрузки изменения должны сохраняться.

Обратите внимание, что информация о файле подкачки хранится в файле /etc/fstab, но в данной инструкции мы НЕ редактируем этот файл (не добавляем информацию о файле подкачки) по той причине, что в Linux Mint и Ubuntu эта запись уже есть. Данная инструкция, кстати, называется «Как в Linux Mint и Ubuntu увеличить и раздел подкачки» и предназначена для этих двух дистрибутивов.

Возможно, у вас другой дистрибутив и просто нужно добавить запись в файл /etc/fstab чтобы автоматически использовался файл подкачки. О том, как это сделать, можете посмотреть в статье «Как в Kali Linux создать или увеличить файл подкачки (Swap)».

На вашем скрине и у меня на практике после данных действий файл подкачки не задействуется. там так и видно, что кол-во задействованного места — 0. В чем причина и как её решить?

Приветствую! Файл подкачки будет задействован когда закончится физическая память. На моём скрине видно, что задействовано только 14 процентов физической памяти. По этой причине файл подкачки в момент снятия скрина просто не нужен.

У вас точно израсходована физическая память?

Установите stress-ng и запустите что-нибудь такое:

И понаблюдайте за расходом памяти — увидите, как начнёт использоваться файл подкачки.

Источник

Оцените статью