Что такое swap файл
Перейти к содержимому

Что такое swap файл

  • автор:

Своп-файл

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

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

Также существует термин swap (англ. swap , /swɔp/ ) также означающий виртуальную память (точнее способ её представления), или же означает подкачку данных с диска.

Применение механизма виртуальной памяти позволяет:

  • упростить адресацию памяти клиентским программным обеспечением;
  • рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
  • изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью);

Страничная организация виртуальной памяти

В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Операционная система преобразует виртуальный адрес в физический, при необходимости подгружая страницу с жёсткого диска в оперативную память. При запросе на выделение памяти операционная система может «сбросить» на жёсткий диск страницы, к которым давно не было обращений. Критические данные (например, код запущенных и работающих программ, код и память ядра системы) обычно находятся в оперативной памяти (исключения существуют, однако они не касаются той части, которая отвечает за использование файла подкачки).

В семействе операционных систем Microsoft Windows место для хранения страниц на жёстких дисках должно быть выделено заранее. Пользователь может положиться на автоматический механизм или самостоятельно указать размер области виртуальной памяти на каждом из разделов диска. На указанных разделах операционной системой создаётся файл pagefile.sys требуемого размера, который и хранит «сброшенные» из оперативной памяти страницы.

Сегментная организация виртуальной памяти

Основная статья: Сегментная адресация памяти

Механизм организации виртуальной памяти, при котором виртуальное пространство делится на части произвольного размера — сегменты. Этот механизм позволяет, к примеру, разбить данные процесса на логические блоки. [1] Для каждого сегмента, как и для страницы, могут быть назначены права доступа к нему пользователя и его процессов. При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре. Система с сегментной организацией функционирует аналогично системе со страничной организацией: время от времени происходят прерывания, связанные с отсутствием нужных сегментов в памяти, при необходимости освобождения памяти некоторые сегменты выгружаются, при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Кроме того, при обращении к памяти проверяется, разрешен ли доступ требуемого типа к данному сегменту.

Виртуальный адрес при сегментной организации памяти может быть представлен парой (g, s), где g — номер сегмента, а s — смещение в сегменте. Физический адрес получается путем сложения начального физического адреса сегмента, найденного в таблице сегментов по номеру g, и смещения s.

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

Свопинг

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

Фрагментация файла подкачки

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

Использование свопинга особенно эффективно, если запущено много интерактивных приложений, которые потребляют большой объем ОЗУ, но при этом практически не занимают процессорное время.

Методики эффективной организации файла подкачки

  • Одним из способов выделения места для swap‐файла (раздела) является кратное выделение памяти, когда объём этого файла равен объёму оперативной памяти, умноженному на 1, на 2, на 3.
  • Если на компьютере имеется более одного жёсткого диска, то для более быстрого обращения к файлу подкачки его желательно разместить на наименее нагруженном запросами чтения/записи физическом диске. Хорошим выбором будет физический диск, с которого не запускается ОС или приложения.
  • Следует учесть пропускную способность интерфейса жёсткого диска (SATA), а также характеристики самих дисков. Лучше разместить файл подкачки на диске, который имеет наибольшую скорость чтения/записи.
  • В Windows скорость чтения из небольших разделов больше у NTFS [2] , однако, благодаря более высокой устойчивости NTFS к сбоям и значительным объёмам современных винчестеров, разделы с FAT32 ныне редко используются.
  • При наличии на компьютере значительного объёма ОЗУ (1 и более гигабайт) и использовании большинства популярных ОС семейств GNU/Linux и MS Windows (кроме Windows Vista) можно полностью отключить подкачку. При использовании различных версий Windows Vista также можно отключить подкачку, однако, в силу ресурсоёмкости этой системы, желательно при этом иметь не менее 2 Гб физической памяти.

Дополнительные сведения

Из файла (раздела) подкачки зачастую можно извлечь конфиденциальную информацию, используемую при работе вычислительной системы. Поэтому при работе с секретными данными обычно производится очистка swap — например, с помощью утилиты sswap из комплекта secure remove.

Алгоритмы определения устаревших страниц

При выделении места для новой страницы бывает необходимо удалить какую-либо страницу, в данный момент находящуюся в памяти. Правила замещения страниц служат для принятия решения о том, какую именно страницу следует удалить из памяти. Идеальным кандидатом является «мёртвая» страница, которая больше не потребуется кому-либо (например, относится к завершённому процессу). Если же таких страниц нет в памяти (или их количества недостаточно), используется правило локального или глобального замещения страниц:

  • Правило локального замещения выделяет каждому процессу или группе взаимосвязанных процессов определённое количество страниц. Если процессу нужна новая страница, он должен заменить одну из собственных.
  • Правило глобального замещения страниц позволяет брать страницы любого процесса, используя глобальные критерии выбора. Для реализации данного подхода необходимо выбрать критерий, по которому будет приниматься решение о страницах, хранимых в памяти.

Наиболее часто используемые критерии поиска:

  • Less Recently Used. Удаляются те страницы, доступ к которым производился наиболее давно. Считается, что в последующем к таким страницам будет происходить минимум обращений.
  • Last Recently Used. Удаляются недавно освободившиеся страницы. Подразумеваются страницы только что завершившихся процессов.

Недостатки

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

Операционные системы

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

Unix-подобные

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

sudo dd if=/dev/zero of=/swap bs=1024 count=128K # Создание файла необходимого размера для swap (в данном случае 128 Мб)

sudo mkswap /swap # Инициализация структуры swap в файле

sudo /bin/sync # Сброс изменений на диск

sudo swapon /swap # Включение swap (отключение — swapoff)

Microsoft Windows и Windows NT

Область жёсткого диска, предназначенная для свопинга, располагается в отдельном файле, который называется файл подкачки, своп-файл (от англ. swap file ). Он называется pagefile.sys и по умолчанию создаётся системой в корневом каталоге диска C:. В дальнейшем пользователь может управлять размером и размещением файла подкачки, например, используя Панель управления, пункт Система.

В Windows 9x файл подкачки называется win386.swp и располагается в каталоге Windows. Однако правкой файла System.INI его можно перенести в корневой каталог для последующего совместного использования с Windows NT.

См. также

  • Кэш-память
  • Менеджер виртуальной памяти
  • Устройство управления памятью (Memory Management Unit)
  • Утечка памяти

Примечания

  1. В семействе операционных систем Microsoft Windows сегментная адресация не используется и заменена делением памяти на секции, что в сущности почти одно и то же.
  2. http://msk.nestor.minsk.by/kg/2005/16/kg51614.html

Литература

Вахалия Ю. UNIX изнутри. — СПб.: Питер, 2003. С.844. ISBN 5-94723-013-5

Иртегов Д. Введение в операционные системы. СПб.: Питер, 2002.

Wikimedia Foundation . 2010 .

Что такое своп и зачем он вам

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

У компьютера есть два вида памяти:

  • Оперативная — чтобы процессор мог быстро обработать данные от запущенных программ.
  • И постоянная — в ней хранятся наши программы, данные, служебные файлы и всё остальное, что есть на компьютере. Это жёсткие диски, накопители SSD и флеш-память.

Оперативная память быстрая, но дорогая, поэтому её во много раз меньше. Для сравнения: в обычном офисном ноутбуке 2022 года установлено 8 гигабайт оперативной памяти и 256 гигабайт постоянной.

При запуске очередной программы компьютеру нужно, чтобы и программа, и её данные оказались в оперативной памяти. Но часто бывает так, что оперативной памяти на всё не хватает, потому что кроме программ в ней находятся другие нужные компьютеру штуки:

  • драйверы для работы устройств;
  • ядро операционной системы, чтобы она управляла всем компьютером;
  • служебные программы;
  • другие программы, которые мы запускали до этого.

Чтобы решить эту проблему, когда оперативной памяти не хватает, а быстрый доступ к данным всё равно нужен, придумали своп.

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

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

Работает своп так:

  1. Система создаёт на диске один большой файл, к которому быстрее всего можно получить доступ.
  2. В этот файл выгружаются те данные из оперативной памяти, которые сейчас пока не нужны. Например, программа давно висит в фоне и с ней никто не работает.
  3. Как только компьютер увидит, что с программой снова активно работают, он загружает обратно в оперативную память её данные из свопа.
  4. Параллельно с этим компьютер смотрит, что пока можно отправить в своп, чтобы не забивать полностью оперативную память.

Почему у меня на диске большой своп, если в оперативной памяти ещё много места?

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

Вот пример с ноутбука, на котором пишется эта статья: видно, что физически доступно примерно 2 гигабайта оперативной памяти, и можно было бы уменьшить своп — использовать не 2,23 гигабайта, а 0,4. Но система оставила небольшой запас памяти — благодаря этому новые программы будут загружаться быстро и не ждать, пока компьютер очистит для них память.

Что такое своп и зачем он вам

Если своп — это файл, то можно ли его удалить?

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

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

Можно ли обойтись вообще без свопа

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

Единственный вариант, когда можно поработать без свопа, — если в компьютере стоит очень много оперативной памяти, 32 гигабайта и выше. Но даже с такими объёмами памяти в некоторых областях без свопа не обойтись. Дело в том, что для программирования нейросетей, разработки сложных приложений или для работы с трёхмерной графикой могут легко понадобиться 128 гигабайт оперативной памяти или даже больше. Поэтому проще всего не отключать своп — это поможет компьютеру оптимально использовать все возможности железа.

swap (своп) или файл подкачки

Своп (swap) — это файл, либо раздел, т.е. определенное место на жестком диске (HDD), которое используется для «выгрузки» в него неиспользуемых страниц из оперативной памяти. Не зацикливайтесь на словосочетании «страница памяти» — это не столь важно на данный момент, ибо это уже углубление в принципы действия, которые вам не нужны на данном этапе и могут вообще не понадобится.

Стандартный HDD 3,5″ (На фото HDD от Western Digital)

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

Думаю, многие знают и понимают, что HDD обладают в разы меньшим быстродействием, чем оперативная память и у вас может возникнуть логичный вопрос — зачем же использовать заведомо более медленное устройство?

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

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

Если же к этой выгруженной в своп информации вновь поступает запрос, она загружается обратно в оперативную память, а из свопа удаляется, или просто поверх нее записывается что-то другое. А из-за того, что своп находится в одном и том же месте на HDD, время на поиск нужной информации минимально и не сравнится с процессом поиска, обработки и загрузки этой информации по-новой из директории программы.

С тем, что такое своп и зачем он нужен вроде бы разобрались. =) Надеюсь я не слишком вас утомил, ибо я старался объяснить подробнее и более простым языком, получилось у меня или нет уже вы мне скажете.
Теперь давайте перейдем к настройке самого своп-файла.

Настройки фйла подкачки в OC Windows (Диск E — это отдельный физический HDD)

В операционных системах на базе ядра Linux swap — представляет из себя специальное место на жестком диске, которое создается еще на стадии разметки диска при установке операционной системы. В Windows же дела обстоят иначе, тут swap представляется из себя файл pagefile.sys, который является скрытым системным файлом. Он располагается в файловой системе на одном или на нескольких логических дисках. И тут кроется с одной стороны преимущество, но с другой стороны и недостаток.

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

Практические советы по настройке своп-файла (файла подкачки) в ОС Wnidows

Где и как расположить файл подкачки?

1 — Файл подкачки нужно располагать как можно ближе к начальным секторам жесткого диска (HDD), потому что именно в этом месте у большинства HDD самые высокие показатели скорости чтения и записи.
В идеале заняться настройкой файла подкачки нужно как только вы установили систему, пока ваш жесткий диск не забит файлами.

2 — Если у вас несколько логических разделов на жестком диске (HDD), то файл подкачки нужно располагать на первом по счету из них, т.е. как можно ближе к начальным секторам.

3 — Если у вас в компьютере несколько жестких дисков (HDD), то своп-файл нужно располагать на самом быстром из них.

4 — Перед тем, как задавать новый размер файла подкачки обязательно на время удалите файл подкачки (на всех дисках задать — «Без файла подкачки») и проведите дефрагментацию выбранного вами под swap-файл раздела каким-нибудь дефрагментатором (например Defraggler).

5 — Не разбивайте файл подкачки на несколько логических или физических дисков — это только замедлит работу системы.

6 — Не стоит помещать файл подкачки на отдельный раздел, равный ему по размеру и отформатированный в журнальной файловой системе.
Например, в файловой системе NTFS из-за MFT логический раздел делится ровно на две части. Таким образом ваш файл подкачки на таком логическом разделе гарантированно будет разбит на 2 части, а то и более, так же не всегда есть возможность разместить подобный раздел в начале диска. И в конечном итоге вы таким образом ограничите себя в выборе максимального размера файла подкачки.

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

Размер файла подкачки обязательно должен быть фиксированным, т.е. «Исходный размер» и «Максимальный размер» должны быть идентичными. Таким образом мы исключим возможную фрагментацию файла подкачки при разрастании от «Исходного» до «Максимального» размера.

Объем RAM Размер swap-файла
256МБ 1024МБ
512МБ 2048МБ
1024МБ-2048МБ 4096МБ
3072МБ-4096МБ 6144МБ-8192МБ
8192МБ и более можно указать минимальный размер (по-сути он не нужен, но
многие программы требуют его наличия)

Copyright © 2010 Tsiryuta G. N.

Swap

swap — это специальная системная область, предварительно выделенная на накопителе (жёстком диске) и используемая операционной системой с целью резервирования свободного пространства, которое может быть задействовано при нехватке ОЗУ.

В Linux используется два варианта области подкачки:

  • В виде раздела на накопителе.
  • В виде файла.

В современных условиях предпочтительнее использовать swap в виде файла.

  • Можно легко изменять размер или полностью удалить, что затруднительно для варианта в виде раздела.
  • В сравнении со swap-разделом есть незначительное снижение производительности.
  • Для использования гибернации требуется дополнительная подготовка (получение UUID и смещения заголовка) и пересоздание загрузочного образа initrd.

Создание swap-файла

Все дальнейшие операции необходимо выполнять с правами суперпользователя:

Удостовериться, что swap отсутствует:

swapon --show

Вывод должен быть пустой.

Начиная с ядра Linux 5.7, согласно документации mkswap, для достижения «монолитности» заполнения пространства файла в файловой системе, swap-файл следует создавать с помощь утилиты dd:

dd if=/dev/zero of=/swapfile bs=4M count=1024 status=progress
  • if=/dev/zero — это виртуальное устройство, генерирующее нулевые байты. Из него будет браться поток нулей и записываться в файл.
  • of=/swapfile — создаваемый и наполняемый нулями swap-файл.
  • bs=4M — размер порции данных в мегабайтах.
  • count=1024 — число порций данных, которые будут записаны в указанный файл. В виду того, что требуется записать 4096 МБ данных, то при размере порции 4 МБ необходимо 1024 порции.
  • status=progress — показывать ход прогресса операции.

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

chmod 600 /swapfile

Тем самым право на чтение и запись будет только у суперпользователя, а всем остальным — запрещено всё:

ls -l /swapfile
-rw------- 1 root root 4294963200 июл 6 2020 /swapfile

Вместо нулей создать внутри swap-файла специальную файловую систему swap:

mkswap /swapfile
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes) без метки, UUID=2dd19e70-e9aa-4226-aa04-41e1206ede28

Остаётся активировать подготовленный swap-файл:

swapon /swapfile

После активации swap-файла мы можем проверить его наличие командой:

swapon --show

Swap file3.png

С тем учётом, что созданный swap включен вручную в рамках активной сессии, он будет работать только до перезапуска сессии (перезагрузки системы). Для постоянной работы необходимо прописать автоматическое монтирование в /etc/fstab:

echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
  • tee -a /etc/fstab — добавить запись в конец файла без перезаписывания существующих записей.

Проверить правильность заполнения fstab:

findmnt --verify

В выводе не должно быть ошибок, кроме предупреждения, что файл используется напрямую без привязки (bind):

none [W] non-bind mount source /swapfile is a directory or regular file 0 parse errors, 0 errors, 1 warning

Удаление файла подкачки

Перед удалением сначала необходимо отключить использование swap:

swapoff /swapfile

После можно удалить файл:

rm /swapfile

Swap file remove.png

Так же необходимо отключить автоматическое монтирование. Открыть /etc/fstab и удалить ранее внесённую строку:

/swapfile none swap sw 0 0

Сохранить изменения и проверить fstab:

findmnt --verify

В выводе не должно быть ошибок:

Success, no errors or warnings detected

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *