Что такое Linux swap
Обновлено: 21.11.2024
В большинстве установок Linux предлагается включить раздел подкачки. Для чего нужен раздел подкачки? Вот что вам нужно знать.
В большинстве установок Linux рекомендуется включать раздел подкачки. Это может показаться странным пользователям Windows, привыкшим размещать всю свою операционную систему на одном разделе.
Что делает раздел подкачки, нужен ли он вообще и насколько большим он должен быть? Все это важные вопросы, ответы на которые могут серьезно повысить производительность вашей системы.
Что делает раздел подкачки Linux
Раздел подкачки служит дополнительным пространством для вашей оперативной памяти. Если ваша оперативная память полностью заполнена, любые дополнительные приложения будут запускаться из раздела подкачки, а не из оперативной памяти.
Может показаться, что это простой способ увеличить объем используемой памяти вашего компьютера, фактически не увеличивая объем оперативной памяти, но это не так. Оперативная память — идеальное оборудование для памяти, потому что она очень быстрая, в отличие от жестких дисков, которые, условно говоря, намного медленнее.
Твердотельные накопители, возможно, сделали снижение производительности менее проблематичным благодаря их значительному повышению скорости, но даже они не могут сравниться с оперативной памятью. Это также относится и к более новым твердотельным накопителям NVMe. В любом случае вы не хотите, чтобы ваш твердотельный накопитель изнашивался еще больше.
Близкой аналогией раздела подкачки является файл подкачки Windows, хотя между ними есть много технических различий.
Раздел подкачки Linux не ограничивается переполненным пространством для хранения. Он может помочь вашему компьютеру другими способами.
Расстановка приоритетов
Раздел подкачки также может помочь переместить некоторые элементы из памяти на жесткий диск, чтобы освободить место в памяти для более важных элементов. Это означает, что элементы, к которым редко обращаются, будут перемещены в раздел подкачки.
Порог того, что считается "редким", зависит от "подкачки" (да, это фактически используемый термин), который можно настроить. Более высокая степень подкачки означает, что данные с большей вероятностью будут перемещены в раздел подкачки. Более низкий уровень подкачки означает, что данные с меньшей вероятностью будут перемещены в раздел подкачки.
Спящий режим
Раздел подкачки используется в качестве места назначения содержимого вашей памяти всякий раз, когда вы переводите систему в режим гибернации. Это означает, что без раздела подкачки переход в спящий режим в Linux невозможен.
Тем не менее, люди стали довольно редко использовать функцию гибернации, поэтому для вас это может не иметь значения.
Нужен ли раздел подкачки?
Означает ли это, что раздел подкачки необходим? Нисколько! Система Linux может прекрасно работать без раздела подкачки. Мы уже обсуждали преимущества раздела подкачки. Теперь, почему бы вам не захотеть иметь его?
Когда замена разделов не помогает
Разделы подкачки имеют свои недостатки. Они занимают место на жестком диске, размер которого не изменяется динамически, когда они не используются. Интенсивное использование подкачки также может увеличить износ вашего основного диска. В некоторых случаях разделы подкачки даже не помогают повысить производительность. Вот пример, когда наличие раздела подкачки на самом деле может быть хуже, чем его отсутствие.
Допустим, вы установили Linux на старый нетбук с 2 ГБ ОЗУ и жестким диском со скоростью вращения 5 400 об/мин. Имея всего 2 ГБ памяти, вы можете себе представить, что она довольно быстро заполняется несколькими открытыми вкладками браузера. Раздел подкачки позволяет держать их открытыми при переполнении памяти.
Но затем возникает узкое место из-за скорости жесткого диска 5400 об/мин. Так как жесткий диск такой медленный, а система постоянно хочет получить доступ к разделу подкачки, нетбук становится крайне вялым. Машина достаточно медленная, чтобы ее нельзя было использовать, если вы не закроете все, чтобы освободить немного памяти.
Заданная подкачка не гарантирует, что все в разделе подкачки будет перемещено обратно, как только в ОЗУ освободится место. Вместо этого многое может остаться в разделе подкачки, в результате чего нетбук продолжит работать вяло. Таким образом, вам остается перезагрузить компьютер, чтобы начать с чистого листа, что занимает некоторое время, потому что система должна удалить все из раздела подкачки перед выключением.
Что происходит, когда у вас нет свопа
Если вы решите отказаться от раздела подкачки, знайте риски. Когда вашему компьютеру требуется больше оперативной памяти, чем доступно, интерфейс может заблокироваться. Вы рискуете принудительно выйти из компьютера и потерять все данные, над которыми работали.
В таких случаях вам может понадобиться раздел подкачки, даже если он использовался только один раз. Это зависит от того, часто ли вам не хватает места для хранения. Заметили бы вы, если бы у вас стало на 4 ГБ меньше места для хранения из-за того, что вы выделили эту сумму на обмен?
Рекомендации по замене Linux
Вот несколько рекомендаций о том, когда вам может понадобиться раздел подкачки и какого размера он должен быть.
- Если вы хотите перевести компьютер в спящий режим, у вас должен быть раздел подкачки.Размер этого раздела должен соответствовать размеру вашей установленной памяти плюс дополнительные 10-25%, чтобы оставить место для любых элементов, которые уже были перемещены в раздел подкачки.
- Просто хотите немного повысить производительность (и у вас есть жесткий диск со скоростью не менее 7200 об/мин)? Затем вы можете добавить раздел подкачки, если хотите. Его размер может быть любым, но я бы не стал делать его больше, чем если бы вы создавали раздел подкачки для включения режима гибернации.
- Если вы время от времени используете тяжелые приложения, которым требуется дополнительная оперативная память, раздел подкачки может служить для вашего спокойствия. В этом случае вам не нужно, чтобы размер раздела подкачки был равен размеру вашей оперативной памяти.
- Если у вас есть жесткий диск со скоростью вращения 5400 об/мин, возможно, вы не захотите создавать раздел подкачки просто потому, что узкое место может ухудшить работу вашего компьютера. Но если вы абсолютно хотите иметь своп, вы все равно можете создать раздел, используя те же рекомендации по размеру, которые изложены выше. Просто не забудьте изменить значение swappiness на что-то намного меньшее.
Изменение подкачки
Как и многие аспекты рабочего стола Linux, параметры подкачки вашего компьютера хранятся в текстовом файле. Вы можете найти этот файл, перейдя к /proc/sys/vm.
Когда вы откроете файл, вы увидите одно число, указывающее ваш текущий обмен. Вы можете редактировать этот файл с помощью любого текстового редактора по вашему выбору, если у вас есть права суперпользователя.
Чтобы сделать это с помощью стандартного текстового редактора GNOME, который есть в Ubuntu и Fedora, вы можете попробовать:
Есть также параметр командной строки, который работает независимо от того, какой текстовый редактор у вас установлен. Просто введите:
Вы можете ввести любую цифру от 0 до 100. Значение указывает, когда вы хотите, чтобы Linux начал активно перемещать процессы из памяти в раздел подкачки. Так, например, значение 20 указывает, что процессы будут перемещены, когда использование памяти достигнет 80%; значение swappiness по умолчанию в Ubuntu, равное 60, указывает, что процессы будут перемещены, когда использование памяти достигнет 40%.
Вы можете проверить, было ли изменение успешным, повторно открыв этот текстовый файл. Неудивительно, что терминал предлагает более быстрый способ проверить ваш swappiness. Просто введите эту команду:
Ваш компьютер работает быстрее?
Обмен разделами может существенно повлиять на производительность вашей системы — иногда в лучшую, а иногда в худшую сторону. Теперь, когда вы знаете, для чего нужен раздел подкачки, надеюсь, вы лучше подготовлены, чтобы принять решение, подходящее для вашей ситуации.
Но прежде чем переразметить диск, знайте, что управление памятью — это нечто большее, чем объем имеющейся у вас оперативной памяти и размер раздела подкачки Linux. Найдите минутку, чтобы узнать, как Linux управляет оперативной памятью.
Узнайте, как изменить объем пространства подкачки, доступный в вашей системе Linux, и сколько вам действительно нужно.
В типичном компьютере есть два основных типа памяти. Первый тип, оперативная память (ОЗУ), используется для хранения данных и программ, пока они активно используются компьютером. Программы и данные не могут использоваться компьютером, если они не хранятся в оперативной памяти. ОЗУ — энергозависимая память; то есть данные, хранящиеся в оперативной памяти, теряются при выключении компьютера.
Жесткие диски – это магнитные носители, используемые для долговременного хранения данных и программ. Магнитный носитель энергонезависим; данные, хранящиеся на диске, сохраняются даже при отключении питания от компьютера. ЦП (центральный процессор) не может напрямую обращаться к программам и данным на жестком диске; сначала он должен быть скопирован в ОЗУ, и именно там ЦП может получить доступ к своим инструкциям по программированию и данным, с которыми будут работать эти инструкции. В процессе загрузки компьютер копирует определенные программы операционной системы, такие как ядро и init или systemd, а также данные с жесткого диска в оперативную память, где к ним непосредственно обращается процессор компьютера, ЦП.
Второй тип памяти в современных системах Linux — это пространство подкачки.
Поменять местами
Дополнительные ресурсы по Linux
Основная функция области подкачки – замена оперативной памяти на диске, когда оперативная память заполняется и требуется больше места.
Например, предположим, что у вас есть компьютер с 8 ГБ ОЗУ. Если вы запускаете программы, которые не заполняют эту оперативную память, все в порядке, и подкачка не требуется. Но предположим, что электронная таблица, над которой вы работаете, увеличивается, когда вы добавляете больше строк, и это, плюс все остальное, что работает, теперь заполняет всю оперативную память. Без свободного пространства подкачки вам придется прекратить работу с электронной таблицей до тех пор, пока вы не освободите часть своей ограниченной оперативной памяти, закрыв некоторые другие программы.
Ядро использует программу управления памятью, которая обнаруживает блоки памяти, также известные как страницы, содержимое которых в последнее время не использовалось.Программа управления памятью выгружает достаточное количество этих относительно редко используемых страниц памяти в специальный раздел на жестком диске, специально предназначенный для «подкачки» или подкачки. Это освобождает оперативную память и освобождает место для ввода дополнительных данных в электронную таблицу. Те страницы памяти, которые выгружаются на жесткий диск, отслеживаются кодом управления памятью ядра и при необходимости могут быть выгружены обратно в ОЗУ.
Общий объем памяти на компьютере с Linux — это объем ОЗУ плюс пространство подкачки, и он называется виртуальной памятью.
Типы подкачки Linux
Linux поддерживает два типа пространства подкачки. По умолчанию в большинстве установок Linux создается раздел подкачки, но также можно использовать в качестве файла подкачки специально сконфигурированный файл. Раздел подкачки — это именно то, что следует из его названия — стандартный раздел диска, определяемый командой mkswap как пространство подкачки.
Файл подкачки можно использовать, если на диске нет свободного места для создания нового раздела подкачки или пространства в группе томов, где можно создать логический том для пространства подкачки. Это просто обычный файл, который создается и предварительно распределяется по заданному размеру. Затем запускается команда mkswap, чтобы настроить его как пространство подкачки. Я не рекомендую использовать файл для области подкачки без крайней необходимости.
Пробивка
Перегрузка может произойти, когда общая виртуальная память, как ОЗУ, так и пространство подкачки, становится почти заполненной. Система тратит так много времени на подкачку блоков памяти между пространством подкачки и оперативной памятью и обратно, что на реальную работу остается мало времени. Типичные симптомы этого очевидны: система становится медленной или полностью перестает отвечать на запросы, а индикатор активности жесткого диска горит почти постоянно.
Если вам удастся ввести такую команду, как free, которая показывает загрузку ЦП и использование памяти, вы увидите, что загрузка ЦП очень высока, возможно, в 30–40 раз больше, чем количество ядер ЦП в системе. Еще одним признаком является то, что и ОЗУ, и пространство подкачки почти полностью выделены.
Постфактум просмотр данных SAR (отчет об активности системы) также может показать эти симптомы. Я устанавливаю SAR на каждую систему, с которой работаю, и использую ее для криминалистического анализа после ремонта.
Каков правильный объем пространства подкачки?
Много лет назад эмпирическое правило для объема пространства подкачки, которое должно быть выделено на жестком диске, равнялось удвоенному объему оперативной памяти, установленной на компьютере (разумеется, тогда оперативная память большинства компьютеров измерялась в КБ). или МБ). Таким образом, если бы компьютер имел 64 КБ ОЗУ, раздел подкачки размером 128 КБ был бы оптимальным размером. Это правило учитывало тот факт, что в то время размеры ОЗУ обычно были довольно малы и что выделение более чем двукратного объема ОЗУ для пространства подкачки не улучшало производительность. Имея более чем вдвое больше оперативной памяти для подкачки, большинство систем тратили больше времени на перегрузку, чем на выполнение полезной работы.
Оперативная память стала недорогим товаром, и сегодня большинство компьютеров имеют объем оперативной памяти, исчисляемый десятками гигабайт. Большинство моих новых компьютеров имеют не менее 8 ГБ ОЗУ, один — 32 ГБ, а моя основная рабочая станция — 64 ГБ. Мои старые компьютеры имеют от 4 до 8 ГБ оперативной памяти.
При работе с компьютерами с огромным объемом оперативной памяти ограничивающий фактор производительности для пространства подкачки намного ниже множителя 2X. Онлайн-руководство по установке Fedora 28, которое можно найти в Интернете по адресу Руководство по установке Fedora, определяет современные представления о распределении пространства подкачки. Я включил ниже некоторые обсуждения и таблицу рекомендаций из этого документа.
В следующей таблице указан рекомендуемый размер раздела подкачки в зависимости от объема оперативной памяти в вашей системе и от того, хотите ли вы, чтобы вашей системе хватило памяти для перехода в режим гибернации. Рекомендуемый размер раздела подкачки устанавливается автоматически во время установки. Однако, чтобы разрешить переход в спящий режим, вам потребуется отредактировать пространство подкачки на этапе пользовательского разбиения.
Таблица 1: Рекомендуемое системное пространство подкачки в документации Fedora
Объем оперативной памяти
Рекомендуемый объем подкачки
Рекомендуемый обмен с переходом в спящий режим
в 2 раза больше оперативной памяти
в 3 раза больше оперативной памяти
Равно объему оперативной памяти
в 2 раза больше оперативной памяти
в 0,5 раза больше оперативной памяти
в 1,5 раза больше оперативной памяти
более 64 ГБ
спящий режим не рекомендуется
На границе каждого из перечисленных выше диапазонов (например, система с 2 ГБ, 8 ГБ или 64 ГБ системной оперативной памяти) по своему усмотрению выбирайте пространство подкачки и поддержку гибернации. Если ресурсы вашей системы позволяют, увеличение пространства подкачки может повысить производительность.
Конечно, у большинства администраторов Linux есть собственное представление о подходящем объеме пространства подкачки, как и почти обо всем остальном. Таблица 2 ниже содержит мои рекомендации, основанные на моем личном опыте работы в различных средах. Они могут вам не подойти, но, как и в случае с таблицей 1, они могут помочь вам начать работу.
Таблица 2: Рекомендуемое системное пространство подкачки по авторам
Рекомендуемый объем подкачки
Одно из соображений в обеих таблицах заключается в том, что по мере увеличения объема ОЗУ добавление большего пространства подкачки после определенного момента просто приводит к перегрузке задолго до того, как пространство подкачки даже близко не будет заполнено. Если у вас слишком мало виртуальной памяти при соблюдении этих рекомендаций, вам следует добавить больше оперативной памяти, если это возможно, а не больше места подкачки. Как и во всех рекомендациях, влияющих на производительность системы, используйте то, что лучше всего подходит для вашей конкретной среды. Это потребует времени и усилий, чтобы поэкспериментировать и внести изменения в зависимости от условий вашей среды Linux.
Добавление пространства подкачки в дисковую среду, отличную от LVM
Из-за изменения требований к пространству подкачки на хостах с уже установленным Linux может возникнуть необходимость изменить объем пространства подкачки, определенный для системы. Эту процедуру можно использовать для любого общего случая, когда необходимо увеличить объем пространства подкачки. Предполагается, что имеется достаточно свободного места на диске. Эта процедура также предполагает, что диски разбиты на «сырые» разделы EXT4 и разделы подкачки и не используют управление логическими томами (LVM).
Основные шаги просты:
Отключите существующее пространство подкачки.
Создайте новый раздел подкачки нужного размера.
Перечитайте таблицу разделов.
Настройте раздел как пространство подкачки.
Добавьте новый раздел /etc/fstab.
Перезагрузка не требуется.
В целях безопасности, прежде чем отключать подкачку, как минимум убедитесь, что никакие приложения не запущены и пространство подкачки не используется. Команды free или top могут сообщить вам, используется ли пространство подкачки. Чтобы быть еще безопаснее, вы можете вернуться к уровню запуска 1 или однопользовательскому режиму.
Отключите раздел подкачки с помощью команды, отключающей все пространство подкачки:
Теперь отобразите существующие разделы на жестком диске.
Отображает текущие таблицы разделов на каждом диске. Определите текущий раздел подкачки по номеру.
Запустите fdisk в интерактивном режиме командой:
На данный момент fdisk является интерактивным и работает только с указанным диском.
Используйте подкоманду fdisk p, чтобы убедиться, что на диске достаточно свободного места для создания нового раздела подкачки. Пространство на жестком диске показано в виде блоков по 512 байт и начального и конечного номеров цилиндров, поэтому вам, возможно, придется выполнить некоторые математические расчеты, чтобы определить доступное пространство между и в конце выделенных разделов.
Используйте подкоманду n, чтобы создать новый раздел подкачки. fdisk спросит у вас начальный цилиндр. По умолчанию он выбирает цилиндр с наименьшим доступным номером. Если вы хотите изменить это, введите номер пускового цилиндра.
Команда fdisk теперь позволяет вводить размер разделов в нескольких форматах, включая номер последнего цилиндра или размер в байтах, КБ или МБ. Введите 4000M, что даст около 4 ГБ места на новом разделе (например), и нажмите Enter.
Используйте подкоманду p, чтобы убедиться, что раздел создан так, как вы его указали. Обратите внимание, что раздел, вероятно, не будет точно таким, как вы указали, если вы не использовали конечный номер цилиндра. Команда fdisk может распределять дисковое пространство только с приращением на целых цилиндрах, поэтому ваш раздел может быть немного меньше или больше, чем вы указали. Если раздел не тот, который вам нужен, вы можете удалить его и создать заново.
Теперь необходимо указать, что новый раздел должен быть разделом подкачки. Подкоманда t позволяет указать тип раздела. Поэтому введите t , укажите номер раздела, и когда он запросит тип раздела с шестнадцатеричным кодом, введите 82, который является типом раздела подкачки Linux, и нажмите Enter.
Когда вы довольны созданным разделом, используйте подкоманду w, чтобы записать новую таблицу разделов на диск. Программа fdisk завершит работу и вернет вас в командную строку после завершения записи исправленной таблицы разделов. Вероятно, вы получите следующее сообщение, когда fdisk завершит запись новой таблицы разделов:
На этом этапе вы используете команду partprobe, чтобы заставить ядро перечитать таблицу разделов, чтобы не было необходимости выполнять перезагрузку.
Теперь используйте команду fdisk -l, чтобы вывести список разделов, и новый раздел подкачки должен быть среди перечисленных. Убедитесь, что новый тип раздела — «Linux swap».
Необходимо изменить файл /etc/fstab, чтобы он указывал на новый раздел подкачки. Существующая строка может выглядеть так:
где X — номер раздела. Добавьте новую строку, похожую на эту, в зависимости от расположения вашего нового раздела подкачки:
Обязательно используйте правильный номер раздела. Теперь вы можете выполнить последний шаг в создании раздела подкачки. Используйте команду mkswap, чтобы определить раздел как раздел подкачки.
Последний шаг — включить подкачку с помощью команды:
Ваш новый раздел подкачки теперь подключен к сети вместе с ранее существовавшим разделом подкачки. Вы можете использовать команду free или top, чтобы убедиться в этом.
Добавление подкачки в дисковую среду LVM
Если в настройках вашего диска используется LVM, изменить пространство подкачки будет достаточно просто. Опять же, это предполагает наличие свободного места в группе томов, в которой находится текущий том подкачки. По умолчанию процедуры установки Fedora Linux в среде LVM создают раздел подкачки как логический том. Это упрощает задачу, поскольку вы можете просто увеличить размер тома подкачки.
Вот шаги, необходимые для увеличения объема пространства подкачки в среде LVM:
Отключить обмен.
Увеличьте размер логического тома, предназначенного для подкачки.
Настройте том с измененным размером как пространство подкачки.
Сначала убедитесь, что swap существует и является логическим томом, с помощью команды lvs (отобразить логический том).
Вы можете видеть, что текущий размер подкачки составляет 8 ГБ. В этом случае мы хотим добавить 2 ГБ к этому объему подкачки. Во-первых, остановите существующий обмен. Возможно, вам придется остановить запущенные программы, если используется пространство подкачки.
Теперь увеличьте размер логического тома.
Выполните команду mkswap, чтобы превратить весь этот 10-гигабайтный раздел в пространство подкачки.
Включите обмен обратно.
Теперь проверьте наличие нового пространства подкачки с помощью команды list block devices. Опять же, перезагрузка не требуется.
Вы также можете использовать команду swapon -s или top , free или любую из нескольких других команд, чтобы проверить это.
Обратите внимание, что разные команды отображают или требуют в качестве входных данных специальный файл устройства в разных формах. Существует несколько способов доступа к определенным устройствам в каталоге /dev. В моей статье «Управление устройствами в Linux» содержится дополнительная информация о каталоге /dev и его содержимом.
Эта статья была первоначально опубликована в сентябре 2018 г. и дополнена дополнительной информацией редактором.
Для каждой операционной системы имеется выделенный объем оперативной памяти, который делает возможной обработку программы. Однако объем этой ОЗУ ограничен, поэтому ОЗУ не может хранить в себе большую часть данных. Поэтому должен быть доступен вариант резервного копирования, который может поддерживать оперативную память, когда ей не хватает памяти.
Эта концепция применима как к операционной системе Windows, так и к Linux. В ОС Windows всякий раз, когда в оперативной памяти недостаточно памяти для хранения процесса, она заимствует некоторый объем памяти из вторичного хранилища. Эта заимствованная память известна как виртуальная память. Точно так же, когда в ОЗУ в Linux заканчивается память, она заимствует часть памяти из вторичного хранилища для хранения своего неактивного содержимого.
Таким образом, оперативная память находит достаточно места для нового процесса. Здесь заимствованное пространство с жесткого диска называется Swap Memory. В этой статье мы постараемся подробно изучить концепцию подкачки памяти.
Работа подкачки памяти:
Как объяснялось выше, память подкачки — это выделенный объем жесткого диска, который используется всякий раз, когда ОЗУ заканчивается. В Linux есть программа управления памятью, которая заботится об этом процессе. Всякий раз, когда в ОЗУ не хватает памяти, программа управления памятью ищет все те неактивные блоки данных, присутствующие в ОЗУ, которые не использовались в течение длительного времени.
Когда он успешно находит эти блоки, он перемещает их в память подкачки. Таким образом, освобождается место в оперативной памяти и, следовательно, его можно использовать для некоторых других программ, которые требуют срочной обработки. Концепция подкачки очень похожа на концепцию подкачки, используемую в операционной системе Windows.
Типы памяти подкачки:
Обычно существует два разных типа памяти подкачки, которые упомянуты ниже:
- Раздел подкачки. Это тип памяти подкачки по умолчанию, фактически представляющий собой раздел жесткого диска, предназначенный для подкачки.
- Файл подкачки. Это самостоятельно созданный тип памяти подкачки. Всякий раз, когда на жестком диске не остается достаточно места для создания раздела подкачки, файл подкачки создается вручную для подкачки в него неактивного содержимого ОЗУ.
Какой должна быть идеальная частота обмена?
Linux позволяет нам самостоятельно устанавливать частоту подкачки, т. е. как часто должен происходить процесс подкачки. Вы можете установить значение подкачки от 0 до 100 в зависимости от ваших требований. Низкочастотное значение свопинга означает, что процесс свопинга будет происходить очень редко и только тогда, когда это необходимо, тогда как высокочастотное значение свопинга означает, что процесс свопинга будет происходить достаточно часто. Однако по умолчанию и рекомендуемое значение частоты подкачки равно 60.
Преимущества использования подкачки памяти:
Изучив работу памяти подкачки, мы легко осознаем преимущества ее использования.Однако некоторые из основных преимуществ использования памяти подкачки перечислены ниже:
- Он может легко хранить те неактивные блоки ОЗУ, которые почти не используются один или два раза, а затем никогда не используются. Освободившуюся оперативную память можно использовать для хранения дополнительных программ с более высоким приоритетом.
- Предотвращает нехватку места в оперативной памяти.
- Он действует как резервная копия для увеличения фактического объема ОЗУ.
- Это позволяет более удобно запускать тяжелые приложения, требующие большого объема оперативной памяти.
- Во время гибернации все содержимое ОЗУ записывается в память подкачки. Таким образом, процесс перехода в спящий режим необходим для успешного выполнения.
- Повышает общую производительность вашей системы.
Вывод:
В этой статье мы узнали об использовании и работе памяти подкачки, а также о ее многочисленных преимуществах. Память подкачки выступает в качестве резервного варианта для оперативной памяти, когда ей не хватает места. Однако мы все знаем, что у нас не может быть бесконечного объема оперативной памяти; мы понимаем, что современным высокопроизводительным приложениям для бесперебойной работы требуется большой объем оперативной памяти. Поэтому у нас должен быть достаточный объем оперативной памяти, чтобы избежать сбоев наших приложений.
Кроме того, добавление дополнительной оперативной памяти требует затрат, в то время как использование памяти подкачки не требует затрат. Кроме того, дополнительная оперативная память также может быть подключена до определенного предела в зависимости от вашего оборудования. Следовательно, единственный вариант, который у нас остался, — это использовать память подкачки, которая может сделать нашу систему очень эффективной без каких-либо затрат.
Об авторе
Карим Буздар
Карим Буздар имеет степень инженера в области телекоммуникаций и несколько сертификатов системного администратора. Как ИТ-инженер и технический автор, он пишет для различных веб-сайтов. Он ведет блог на LinuxWays.
Что такое подкачка в Linux?
Подкачка — это пространство на диске, которое используется, когда объем физической оперативной памяти заполнен. Когда в системе Linux заканчивается ОЗУ, неактивные страницы перемещаются из ОЗУ в пространство подкачки.
Пространство подкачки может иметь форму либо выделенного раздела подкачки, либо файла подкачки. В большинстве случаев при запуске Linux на виртуальной машине раздел подкачки отсутствует, поэтому единственным вариантом является создание файла подкачки.
Давайте углубимся и разберемся подробнее.
В типичном компьютере есть два основных типа памяти.
- Оперативная память (ОЗУ)
Первый тип, оперативная память (ОЗУ), используется для хранения данных и программ, пока они активно используются компьютером. Программы и данные не могут использоваться компьютером, если они не хранятся в оперативной памяти. ОЗУ — энергозависимая память; то есть данные, хранящиеся в оперативной памяти, теряются при выключении компьютера. Жесткие диски — это магнитные носители, используемые для долговременного хранения данных и программ. Магнитный носитель энергонезависим; данные, хранящиеся на диске, сохраняются даже при отключении питания от компьютера. ЦП (центральный процессор) не может напрямую обращаться к программам и данным на жестком диске; сначала он должен быть скопирован в ОЗУ, и именно там ЦП может получить доступ к своим инструкциям по программированию и данным, с которыми будут работать эти инструкции. В процессе загрузки компьютер копирует определенные программы операционной системы, такие как ядро и init или systemd, а также данные с жесткого диска в оперативную память, где к ним непосредственно обращается процессор компьютера, ЦП.
Полезные команды для мониторинга использования пространства подкачки в Linux
Linux делит свою физическую ОЗУ (оперативную память) на фрагменты памяти, называемые страницами. Подкачка — это процесс, при котором страница памяти копируется в предварительно сконфигурированное пространство на жестком диске, называемое пространством подкачки, для освобождения этой страницы памяти. Суммарный объем физической памяти и пространства подкачки представляет собой объем доступной виртуальной памяти.
Обмен необходим по двум важным причинам. Во-первых, когда системе требуется больше памяти, чем доступно физически, ядро выгружает менее используемые страницы и отдает память текущему приложению (процессу), которому эта память требуется немедленно. Во-вторых, значительное количество страниц, используемых приложением на этапе запуска, может использоваться только для инициализации и больше никогда не использоваться. Система может заменить эти страницы и освободить память для других приложений или даже для дискового кеша.
Однако у обмена есть и обратная сторона. По сравнению с памятью диски очень медленные.Скорость памяти может измеряться в наносекундах, тогда как скорость дисков измеряется в миллисекундах, поэтому доступ к диску может быть в десятки тысяч раз медленнее, чем доступ к физической памяти. Чем чаще происходит подкачка, тем медленнее будет работать ваша система. Иногда происходит чрезмерная подкачка или перегрузка, когда страница выгружается, а затем очень скоро заменяется, а затем снова выгружается и так далее. В таких ситуациях система изо всех сил пытается найти свободную память и одновременно поддерживать работу приложений. В этом случае поможет только увеличение оперативной памяти.
В Linux есть две формы пространства подкачки: раздел подкачки и файл подкачки. Раздел подкачки — это независимый раздел жесткого диска, используемый исключительно для подкачки; никакие другие файлы не могут там находиться. Файл подкачки — это специальный файл в файловой системе, который находится среди вашей системы и файлов данных.
Чтобы узнать, какой объем подкачки у вас есть, используйте команду swapon -s. Вывод будет выглядеть примерно так:
В каждой строке указано отдельное пространство подкачки, используемое системой. Здесь поле «Тип» указывает, что это пространство подкачки является разделом, а не файлом, а из «Имя файла» мы видим, что оно находится на диске sda5. «Размер» указан в килобайтах, а в поле «Использовано» указано, сколько килобайт пространства подкачки было использовано (в данном случае ни одного). «Приоритет» сообщает Linux, какое пространство подкачки использовать первым. Отличительной особенностью подсистемы подкачки Linux является то, что если вы монтируете два (или более) пространства подкачки (предпочтительно на двух разных устройствах) с одинаковым приоритетом, Linux будет чередовать свою активность подкачки между ними, что может значительно увеличить производительность подкачки. р>
Чтобы добавить в систему дополнительный раздел подкачки, сначала необходимо его подготовить. Шаг первый — убедиться, что раздел помечен как раздел подкачки, а шаг два — создать файловую систему подкачки. Чтобы убедиться, что раздел помечен для подкачки, запустите от имени пользователя root:
Замените /dev/hdb на устройство жесткого диска вашей системы с разделом подкачки на нем. Вы должны увидеть вывод, который выглядит следующим образом:
Если раздел не помечен как раздел подкачки, вам нужно изменить его, запустив fdisk и выбрав пункт меню «t». Будьте осторожны при работе с разделами — вы же не хотите по ошибке удалить важные разделы или изменить id вашего системного раздела на swap по ошибке. Все данные в разделе подкачки будут потеряны, поэтому дважды проверяйте каждое вносимое вами изменение. Также обратите внимание, что Solaris использует для своих разделов тот же идентификатор, что и пространство подкачки Linux, поэтому будьте осторожны, чтобы не уничтожить разделы Solaris по ошибке.
После того, как раздел помечен как подкачка, вам необходимо подготовить его с помощью команды mkswap (сделать подкачку) от имени пользователя root:
Если вы не видите ошибок, ваше пространство подкачки готово к использованию. Чтобы активировать его немедленно, введите:
Вы можете убедиться, что он используется, запустив swapon -s. Чтобы пространство подкачки монтировалось автоматически во время загрузки, вы должны добавить запись в файл /etc/fstab, который содержит список файловых систем и пространств подкачки, которые необходимо смонтировать при загрузке. Формат каждой строки:
Поскольку пространство подкачки — это особый тип файловой системы, многие из этих параметров неприменимы. Для пространства подкачки добавьте:
где /dev/hdb1 — раздел подкачки. У него нет определенной точки монтирования, поэтому нет. Это тип swap с опциями sw, а последние два параметра не используются, поэтому они вводятся как 0.
Чтобы убедиться, что ваше пространство подкачки монтируется автоматически без перезагрузки, вы можете запустить команду swapoff -a (которая отключает все пространства подкачки), а затем swapon -a (которая монтирует все пространства подкачки, перечисленные в файле /etc). /fstab), а затем проверьте его с помощью swapon -s.
Заменить файл
Помимо раздела подкачки Linux также поддерживает файл подкачки, который можно создавать, подготавливать и монтировать аналогично разделу подкачки. Преимущество файлов подкачки в том, что вам не нужно искать пустой раздел или переделывать диск, чтобы добавить дополнительное пространство подкачки.
Чтобы создать файл подкачки, используйте команду dd для создания пустого файла. Чтобы создать файл размером 1 ГБ, введите:
/swapfile — это имя файла подкачки, а число 1048576 — это размер в килобайтах (т. е. 1 ГБ).
Подготовьте файл подкачки с помощью mkswap точно так же, как и раздел, но на этот раз используйте имя файла подкачки:
Аналогично смонтируйте его с помощью команды swapon: swapon /swapfile.
Запись /etc/fstab для файла подкачки будет выглядеть следующим образом:
Насколько большим должно быть мое пространство подкачки?
Возможно запустить систему Linux без области подкачки, и система будет работать хорошо, если у вас большой объем памяти, но если у вас закончится физическая память, система рухнет, так как в ней больше ничего нет. это возможно, поэтому рекомендуется иметь пространство подкачки, тем более что дисковое пространство относительно дешево.
Ключевой вопрос: сколько?Для более старых версий операционных систем типа Unix (таких как Sun OS и Ultrix) требовалось пространство подкачки, в два-три раза превышающее объем физической памяти. Современные реализации (например, Linux) не требуют так много, но они могут использовать его, если вы его настроите. Эмпирическое правило заключается в следующем: 1) для настольной системы используйте область подкачки, равную двойной системной памяти, так как это позволит вам запускать большое количество приложений (многие из которых могут простаивать и легко заменяться), делая больше оперативной памяти для активных приложений; 2) для сервера иметь меньший объем подкачки (скажем, половину физической памяти), чтобы у вас была некоторая гибкость для подкачки при необходимости, но следить за объемом используемого пространства подкачки и при необходимости обновлять ОЗУ; 3) для старых настольных компьютеров (скажем, всего 128 МБ) используйте столько пространства подкачки, сколько сможете, даже до 1 ГБ.
В ядро Linux 2.6 добавлен новый параметр ядра под названием swappiness, позволяющий администраторам настраивать способ подкачки Linux. Это число от 0 до 100. В сущности, чем выше значение, тем больше страниц подкачки, а чем меньше значение, тем больше приложений остается в памяти, даже если они простаивают. Сопровождающий ядра Эндрю Мортон сказал, что он запускает свои настольные компьютеры со значением подкачки 100, заявив, что «я считаю, что уменьшение склонности ядра к подкачке — это неправильно. Вы действительно не хотите, чтобы сотни мегабайт нетронутой памяти BloatyApp плавали в машине. Запишите на диск, используйте память для чего-нибудь полезного».
Одним недостатком идеи Мортона является то, что если память выгружается слишком быстро, время отклика приложения сокращается, потому что при щелчке окна приложения системе приходится выгружать приложение обратно в память, что делает его работу медленной. р>
Значение swappiness по умолчанию — 60. Вы можете временно изменить его (до следующей перезагрузки), набрав от имени пользователя root:
Если вы хотите изменить его навсегда, вам нужно изменить параметр vm.swappiness в файле /etc/sysctl.conf.
Заключение
Управление пространством подкачки — важный аспект системного администрирования. При хорошем планировании и правильном использовании обмен может дать много преимуществ. Не бойтесь экспериментировать и всегда следите за своей системой, чтобы убедиться, что вы получаете нужные результаты.
Читайте также: