Что нужно знать о разделе подкачки в Linux

Раздел подкачки Linux Рекомендуемый

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

Что такое своп?

Когда в многозадачной операционной системе заканчивается физическая память, она не может запускать новые процессы или выделять больше памяти существующим процессам. Чтобы решить эту проблему, в локальном хранилище (часто на жестком диске) выделяется специальный блок пространства, который действует как временная область хранения для процессов, которые в данный момент не выполняются. ОС "выгружает" неактивный процесс из памяти на жесткий диск. Это освобождает память для новой работы. Когда неактивный процесс снова станет активным, он будет перенесен обратно из локального хранилища в память. Эта процедура известна как свопинг.

Действительно ли необходимо пространство подкачки?

Требуется ли место подкачки технически? Нет. Linux может работать без него, а в некоторых ситуациях, например встраиваемые решения, Linux может работать без свопа. Если ОС попадет в ситуацию, когда ей не хватает памяти, она запаникует и остановится. Если физической памяти достаточно, машина будет работать без проблем.

Практически необходимо пространство подкачки? Да. Хотя подкачка замедляет работу компьютера (поскольку чтение и запись на жесткий диск намного медленнее, чем доступ к ОЗУ) и наличие такого же объема физической памяти на борту является лучшим решением, чтобы избежать подкачки, бывают законные ситуации, когда подкачка желательна. Например, во время загрузки системы могут быть процессы, которые выполняются (и поэтому потребляют системную память), но затем эффективно спят в течение очень длительных периодов времени. Или память, которая выделяется, записывается и никогда больше не используется. В этих ситуациях алгоритм подкачки начнет переносить эту память на жесткий диск и, таким образом, освободить ценную системную память. Это фактически гарантирует, что максимальный объем оперативной памяти доступен в любое время и, следовательно, увеличивает производительность.

раздел подкачки в gparted

На машинах, на которых не хватает физической ОЗУ, чтобы все размещалось в памяти, использование пространства подкачки имеет важное значение!

Для полноты картины стоит упомянуть, что в Linux также есть подсистема, называемая Out-Of-Memory Killer (OOM), которая вместо остановки ядра при нехватке памяти начнет уничтожать процессы для освобождения ресурсов. Его действия настраиваются.

Сколько места подкачки мне следует выделить?

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

Добавление свопа без расширения раздела подкачки

Есть два способа добавить пространство подкачки в систему без изменения существующего раздела подкачки. Один из способов - использовать раздел подкачки на другом диске, другой - использовать файл подкачки.

Чтобы использовать другой жесткий диск, создайте раздел типа "Linux swap" (код 82), а затем запустите команду " mkswap", чтобы подготовить пространство подкачки:

Где / dev / sdb2 - имя созданного вами раздела. Чтобы немедленно использовать пространство подкачки, используйте команду " swapon":

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

Если ваша система использует уникальные идентификаторы для именования дисков, используйте команду blkid, чтобы получить список идентификаторов для устройств. Строка для монтирования пространства подкачки в / etc / fstab будет выглядеть примерно так:

Чтобы использовать файл для подкачки, создайте большой пустой файл (используя dd) в файловой системе, которую вы хотите использовать для подкачки. Например, чтобы создать файл размером 1 ГБ, введите:

Где / store / swapfile - это путь к файлу подкачки в нужной файловой системе.

Как и в случае с дополнительным разделом подкачки, файл теперь необходимо подготовить с помощью mkswap, а затем использовать с swapon. Его также необходимо добавить в файл / etc / fstab. Процедура в точности такая же, как и выше, но вам нужно использовать / store / swapfile, а не / dev / sdb2 в качестве параметра пространства подкачки.

Swappiness

Ядро Linux можно Чтобы определить, насколько агрессивно оно должно пытаться выгружать процессы из памяти. Эта тенденция контролируется переменной ядра, называемой swappiness. Значение 0 для swappiness означает, что ядро ​​будет избегать подкачки в максимально возможной степени, а 100 означает, что ядро ​​будет агрессивно использовать пространство подкачки. Значение по умолчанию для многих дистрибутивов Linux - 60. Это число можно динамически изменять с помощью этой команды:

Чтобы установить значение навсегда, вам необходимо изменить (или добавить, если оно не существует) переменную vm.swappiness в файле /etc/sysctl.conf.

Дайте нам знать, если у вас есть вопросы о свопинге в Linux.

Эта статья была впервые опубликована в декабре 2013 г. и обновлена ​​в августе 2020 г.

Изображение предоставлено: обмен

19 комментариев

  1. Очень информативная статья.
    Будет интересно узнать несколько примеров, какой процесс занимает больше оперативной памяти в Linux.
    Например, если я открою 5 вкладок видео YouTube в firefox. Сколько нужно памяти?

    Как я могу повесить компьютер (что делать) без раздела подкачки, если у меня примерно 8 гигабайт оперативной памяти. Монтаж видео и др.

    У меня есть опыт, что httrack для больших проектов действительно требует много оперативной памяти :)

  2. Имеет ли значение, где находится раздел подкачки на жестком диске (начало, середина или конец)?

    Помещение раздела подкачки на отдельный диск и контроллер несколько ускоряет процесс подкачки?


    Нет, не имеет значения, где на жестком диске находится раздел подкачки. И да, размещение раздела подкачки на отдельном диске ускорит его. Это связано с тем, что головки дисководов останутся на том месте, куда они в последний раз писали, а также на том месте, куда они будут писать * в следующий раз, и поэтому им не придется искать это место перед записью.


    Да, это важно. На работающих жестких дисках головки чтения / записи находятся над первой дорожкой, что обеспечивает более быстрый доступ к информации каталога в начале диска. (Когда привод отключается, он безопасно "паркует" головку на внешней дорожке.) Если раздел подкачки находится в середине или конце диска, то для получения данных подкачки потребуется больше времени на поиск. (Фактическая скорость непрерывной передачи данных с диска на головку выше на внешнем крае, но время доступа к диску сводит на нет это преимущество.) Если подкачка находится в начале, то это повлияет на некэшированную информацию каталога (для доступа к файлам), никакого преимущества не будет. Получение второго диска является умственным, потому что пространство подкачки, скажем, для 6 ГБ ОЗУ будет меньше 20 ГБ, что будет медленнее для диска последнего поколения. Linux (по крайней мере, начиная с ядра 2.6) может использовать файл подкачки, как в Windows. В отношении скорости доступа: большинство крупных серверных установок (например, Google) представляют собой кластеры виртуальных серверов, которые находятся на виртуальных дисках, которые представляют собой просто большие файлы. (Для многих предварительно скомпилированных / бинарных дистрибутивов Linux требовался отдельный раздел подкачки, однако, если вы "создаете" или "накатываете свой собственный" дистрибутив, тогда в ядре можно было бы использовать файл подкачки в файл. Конечно, если вы используете ОС на основе BSD. как Mac OS X вместо свиньи памяти, такой как Windows или (подражатель) Linux, тогда у вас вообще не будет проблем с памятью.

    1. Стив,

      Современные файловые системы не хранят информацию о каталогах в начале диска.

      Должен сказать, что за все годы использования компьютеров и написания статей о них я никогда не слышал, чтобы кто-нибудь называл Linux подражателем Windows. Это, безусловно, уникальная идея!

      Также я обнаружил, что мой Mac потребляет больше памяти, чем мой Linux.

      Та, Гэри.

    2. Это буквально один из самых дезинформированных ответов, которые я когда-либо читал. Это заставляет Дженни Маккарти казаться гениальной.

      1. Если ответ неверен, почему бы вам не дать осознанный ответ?

      2. Дженни Маккарти - Состояние: 14 миллионов долларов (celebritynetworth.com)
        Она кажется чертовски умной для такого нищего, как я!

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


    Или раздел подкачки RAID 0? Но тогда на скольких машинах установлено более одного жесткого диска? Конечно, по цене второго жесткого диска можно было купить намного больше оперативной памяти. Я установил серверы с 3+ жесткими дисками (Raid 5; Raid 1 с горячим резервом и т. Д.), Но ужасный шум нескольких высокоскоростных жестких дисков создает неприятный рабочий стол.

    1. На моем рабочем столе четыре жестких диска, и он производит столько же шума, сколько и с одним диском!

  4. Да, как сказал Айгарс, очень информативная статья. Я много лет "играл" с различными дистрибутивами Linux, но никогда не сталкивался с тем фактом, что вы можете переключаться на файл. Эта информация может пригодиться в будущем.

  5. Купите дешевый SSD-накопитель на 20-60 ГБ и используйте его в качестве подкачки.


    Плохая идея, Джейсон. Из-за используемой технологии SSD имеет ограниченное количество операций записи. Даже с дешевыми дисками использование SSD в качестве подкачки может быстро обойтись.

    1. Это не так, поскольку они могут записывать больше, чем многие ожидают. И если вы используете весь диск, это выровняет записи на диск.

      1. А сколько записей будет на своп во время обычного сеанса? Или во время интенсивного использования? Слишком много переменных, чтобы предсказать, как быстро будут исчерпаны записи. Может быть, вы не против заменять твердотельные накопители каждые пару недель, но я ...

        1. Тогда вы не читали, как на самом деле работают SSD-диски и как долго они проживут при интенсивном чтении и записи.
          Это продлится годы.

  6. Обычно, когда я вижу цифры о размере свопа, я обычно предлагаю одинаковый или двойной размер. Больше обычно только замедляет работу компьютера. Но, как обычно, ваши цифры могут быть разными.
    Почему такие же? Потому что тогда вы можете перейти в спящий режим на диске подкачки. Почему не более двух раз? Потому что, если вы замените больше, вы, вероятно, так часто будете использовать диск подкачки, что машина может "перестать работать" и просто переключиться. Вы бы "выбросили" систему.

  7. Не играет ли роль подкачка во время событий SLEEP (приостановка в ОЗУ) и HIBERNATE (приостановка на диск)?