Подкачка страниц

Пробуксовка

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

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

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

Для исключения пробуксовки пользователь может предпринять следующие действия:

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

How to manage swappiness

First, you should consider if you need to touch this value at all. Are you experiencing performance issues? And more importantly, have you tried other system tweaks yet? If not, it is probably best to look elsewhere first. But if you have a specific scenario in mind, you might want to continue.

Next, how heavy is your swap usage? You can find it out with any performance monitoring tool of your choice or with the command. will give you a snapshot of the memory usage in megabytes. For continuous monitoring, you might want to use

This will run the command every second and print its output until you press “Ctrl + C.”

As you see above, very little swap is being used by the system this article is written on.

Now if you do experience swapping, you might be interested how much of it is active. The command will tell you all you need to know about your system’s virtual memory usage (swap and physical ram together).

You need to check the column where means “swap in”, and means “swap out.” If the numbers are high, it means a lot of swapping activity which is an indicator of low memory issues. If you see swap usage by but little active swapping, tweaking swappiness might be due.

It is also a good idea to establish other performance benchmarks like disk I/O, load averages, etc., so when you test your new swappiness values, you have something to compare against.

To test a different swappiness value, you can set it temporarily with the command. This needs no rebooting, and the effect is immediate. In fact, rebooting will restore the default value, so you are quite safe to experiment:

Of course, you can put any value instead of “10” (between “0” and “100”).

Once you’ve found your preferred value, you can permanently change the system configuration by editing “/etc/sysctl.conf”

and adding the lines

to the end of this file, with the value set to your preference once again, of course.

Decreasing swappiness

You will often see the advice on websites and forums to reduce swappiness to around “10.” This is supposed to speed things up by using less swap and keeping more processes in physical RAM. This logic might be somewhat too straightforward and might not be a “one size fits all solution.”

Decreasing the value of swappiness might be good in the following scenarios:

  • For databases systems, or if you use a lot of database intensive applications: Databases generally handle file caching way better than the OS would. If you reduce swappiness, you will limit the OS’s file caching, thus giving a chance to the database to handle its own caches.
  • For interactivity: If you multitask a lot but handle few files or don’t open large documents, this could improve how smooth your system will feel. Less processes will be written out to disk, and as RAM access is much faster, your computer can feel faster. You must also bear in mind that this can reduce I/O performance. If you have slow disks or do anything I/O intensive, it might even hurt performance.
  • For placebo: Many believe that a lower swappiness will speed up the system,. Seriously, f you think that your system is faster, it might have the effect of perceiving it to be faster, too.

Keep in mind that decreasing swappiness might result in crashes and processes being randomly killed by the system in order to free up memory. Decreasing swappiness will be best if you have enough RAM available to run your system smoothly. But you should keep the value above “10”, as some swap use is good to have.

Производительность

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

Значения подкачки можно настроить, чтобы помочь производительности:

Swappiness

Swappiness sysctl параметр представляющий частоту использования пространства подкачки. Swappiness может иметь значение от 0 до 100, значение по умолчанию = 60. Низкое значение заставляет ядро избегать подкачки, высокое значение позволяет ядру использовать подкачку наперёд. Использование низкого значения на достаточном количестве памяти, улучшает отзывчивость на многих системах.

Чтобы проверить текущее значение swappiness:

$ cat /sys/fs/cgroup/memory/memory.swappiness

или

$ cat /proc/sys/vm/swappiness

Примечание: Т.к. менее организован и сохраняется только для обратной совместимости, вместо него предпочтительнее использовать .

Чтобы временно установить значение swappiness:

# sysctl vm.swappiness=10

Чтобы постоянно установить значение swappiness, отредактируйте (создайте) конфигурационный файл sysctl

/etc/sysctl.d/99-sysctl.conf
vm.swappiness=10

Приоритет

Если у вас больше одного файла или раздела подкачки, вы должны учитывать присвоение приоритетного значения (от 0 до 32767) для каждой области подкачки. Система будет использовать области подкачки с высоким приоритетом, перед использованием областей с низким приоритетом. Например, если у вас быстрый диск () и медленный (), назначьте высокий приоритет для подкачки расположенной на быстром устройстве. Приоритет может быть назначен в fstab как параметр:

/dev/sda1 none swap defaults,pri=100 0 0
/dev/sdb2 none swap defaults,pri=10  0 0

Или как параметр в swapon

# swapon --priority 100 /dev/sda1

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

Использование zswap или zram

Zswap это особенность ядра Linux, обеспечивающая сжатие обратного кэша для страниц подкачки. Она увеличивает производительность и уменьшает операции ввода/вывода. ZRAM создаёт виртуальный сжатый файл подкачки в памяти, как альтернатива файлу подкачки на диске.

What is Swap?

Swap is an area on a hard drive that has been designated as a place where the operating system can temporarily store data that it can no longer hold in RAM. Basically, this gives you the ability to increase the amount of information that your server can keep in its working “memory”, with some caveats. The swap space on the hard drive will be used mainly when there is no longer sufficient space in RAM to hold in-use application data.

The information written to disk will be significantly slower than information kept in RAM, but the operating system will prefer to keep running application data in memory and use swap for the older data. Overall, having swap space as a fall back for when your system’s RAM is depleted can be a good safety net against out-of-memory exceptions on systems with non-SSD storage available.

Swappiness

There is a value called swappiness in UNIX-like systems that determines how pages in memory will be handled. Its default value on most systems is “60,” but it can be set to anything between 0 and 100. If memory runs low, the kernel will either evict some file caches to have more free RAM for processes, or it will swap some process pages from RAM to disk.

A default of 60 means swapping will be used less, and I/O caches will more likely be freed for reallocating RAM. Evicting caches is considered “cheaper” (less resource intensive), while swapping out pages includes disk reads and writes, making them more “expensive.” At a value of ’60,’ swap usage will be slightly lower than cache reuse. If the value of swappiness is increased to 100, swapping and file cache eviction will be used with equal weight. This means more swapping and faster I/O than default. Lower values like “10” mean that swapping will be used much less, and I/O caches can be much sooner evicted in favor of processes. This might increase interactivity but could also hurt I/O speed.

Настройка подкачки

По умолчанию значение параметра vm.swappiness равно 60, т.е. вытеснение страниц памяти в область подкачки начинается тогда, когда объём свободной памяти становится меньше 60%.Считается, что данное значение хорошо работает для большинства систем. Изменить значение параметра vm.swappiness можно командой

sysctl -w vm.swappiness=<новое_значение>
Минимальное значение атрибута, при котором будет работать подкачка равно единице.

Безопасность данных, находящихся в области подкачки

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

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

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

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

Рекомендации по обеспечению безопасности области подкачки

  • Уровень конфиденциальности 3;

  • Уровень целостности 63;

  • Набор категорий доступа полный.

Таким образом при установке Astra Linux SE (Смоленск 1.6, Ленинград 8.1) автоматически обеспечивается защита от чтения области подкачки непривилегированными пользователями.

Однако, у администратора системы есть возможность после установки добавить свои области подкачки (см. команды mkswap/swapon/swapoff, а также системные вызовы swapon()/swapoff()). При этом операционная система не проверяет установленные для добавляемой области подкачки права доступа, и администратору следует самостоятельно указать нужные ограничения дискреционных и мандатных прав доступа. Например, для размещения области подкачки в файле /swap_area можно использовать следующую последовательность команд:

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

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

  • для накопителей на магнитных дисках (применимо только в ОС СН Astra Linux SE):
    • для файловв дисковых разделахс файловой системой Ext2/Ext3/Ext4 – параметр монтирования файловой системы secdel в /etc/fstab;
    • для разделов подкачки — инструмент командной строки swap-wiper с указанием имени раздела подкачки в качестве аргумента. Подробнее см. «Руководство администратора», п. 8.1).
  • для твердотельных накопителей (см. Твердотельные накопители (SSD): особенности применения) (в ОС ОН Astra Linux CE и в ОС СН Astra Linux SE):
    • для файловв дисковых разделахс файловой системой Ext4 – параметр монтирования файловой системы  discard в /etc/fstab;
    • для разделов подкачки – команду blkdiscard:

      sudo blkdiscard /dev/sda5

Инструмент swap-wiper, входящий в состав ОС СН Astra Linux SE (Смоленск 1.6, Смоленск 1.5, Ленинград 8.1) предназначен для стирания данных, находящихся в дисковых разделах подкачки, при выключении системы .Этот инструмент доступен в файле /usr/lib/parsec/bin/swap-wiper и предназначен для автоматического стирания областей подкачки при выключении компьютера. Инструмент swap-wiper по умолчанию заблокирован в его файле настроек

Для использования инструмента следует в файле /etc/parsec/swap_wiper.conf установить значение атрибута ENABLED=Y, после чего инструмент будет автоматически применяться при выключении системы..

Установить атрибут ENABLED=Y можно с помощью текстового редактора, или с помощью штатного графического инструмента управления безопасностью fly-admin-smc, доступного через графическое меню:

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

sysctl -w vm.swappiness=0
либо полное отключение всех областей подкачки (параметр -a или —all команды swapoff):swapoff -a
с последующим выполнением очистки освободившихся областей подкачки.

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

Итак, что такое файл подкачки и для чего он необходим, надеемся, вам более или менее понятно, теперь самое время перейти к более сложной и интересное теме, а именно его настройке. По правде говоря, файл подкачки в Windows не нуждается в особой конфигурации за исключением некоторых частных случаев. Операционная система сама его создает и сама же определяет его размер исходя из физических и программных параметров компьютера. По умолчанию располагается этот файл в корне диска C, носит системное имя pagefile.sys и, как многие системные объекты, изменение которых без особой нужды нежелательно, является скрытым. Так что если вы хотите его увидеть, снимите в параметрах папок галку «Скрывать защищённые системные файлы».

Если файл подкачки есть в корне системного диска, скорее всего, он у вас включён. Чтобы убедиться в этом окончательно, откройте командой systempropertiesperformance «Параметры быстродействия».

Далее переключитесь на вкладку «Дополнительно» и найдите блок «Виртуальная память», где будет указан текущий размер файла подкачки. Если вдруг он окажется отключённым (размер 0), настоятельно советуем его включить. Нажмите в окне параметров быстродействия кнопку «Изменить», установите в следующем окошке галку в чекбоксе «Автоматически выбирать объем файла подкачки», включите радиокнопку «По выбору системы» и сохраните настройки.

Вот так просто поставить файл подкачки на Windows 7/10, но это что касается настроек по умолчанию. Вы можете задать собственный размер страничного файла, отключив автоматический выбор объёма и активировав радиокнопку «Указать размер». Несмотря на более чем достаточный опыт айтишников, однозначного мнения насчёт оптимального размера файла подкачки не существует. Традиционно считается, что его объём должен быть как минимум равен объему ОЗУ, но это очень приблизительно, хотя бы по той причине, что своп является динамическим и может увеличиваться по требованию операционной системы.

Итак, сколько ставить файл подкачки в Windows 7/10, если речь идет о его ручной настройке? Зависит это прежде всего от объёма оперативной памяти, разрядность системы не играет в данном случае принципиальной роли. Учитывая индивидуальность ПК, для расчёта размера виртуальной памяти предлагаем воспользоваться следующим методом. Запустив на ПК как можно больше программ, вкладок в браузере и т.д., откройте Диспетчер задач, перейдите на вкладку «Производительность» и запишите задействованный объем ОЗУ.

Полученное число умножьте на 2 и вычтите из результата реальный объём оперативной памяти. Итоговое значение будет равно рекомендуемому объёму страничного файла.

А вообще, чем меньше на ПК ОЗУ, тем больше должен быть своп. Так что если вы до сих пор сомневаетесь, как правильно настроить файл подкачки, воспользуйтесь данными этой таблицы, предложенной опытными системными администраторами:

Размер ОЗУ Размер файла подкачки
512 Мб 5 Гб
1 Гб 4 Гб
2-4 Гб 3 Гб
6-8 Гб 2 Гб
10 Гб 1-1.5 Гб
16 Гб меньше 1 Гб или вообще не нужен

Следует, однако, понимать, что приведенные здесь цифры также являются средними. Имеются примеры, когда файл подкачки необходим даже при наличии на ПК 16 и более Гб ОЗУ (таково требование некоторых программ). Также если вы имеете привычку оставлять много программ в фоне, рекомендуется увеличить размер файла подкачки на 20-30 процентов от приведенных выше значений. С другой стороны, если на вашем компьютере имеется достаточно памяти, вы не запускаете «тяжелых» программ, не замечаете снижения производительности, увеличивать его не стоит. Три гигабайта файла подкачки для 4/8 Гб ОЗУ вполне должно хватить для работы без «тормозов», чрезмерное же увеличение не только не ускорит систему, но, скорее, напротив, замедлит её, так как Windows придётся обращаться чаще не к оперативной памяти, а к более медленному файлу подкачки.

Распространенные сообщения об ошибках в Swapfile.sys

Большинство ошибок %% knowledgebase_file_name%%, с которыми вам придется столкнуться, связано с ошибками типа «синий экран» (также известными как «BSOD» или «ошибка ОСТАНОВКИ»), которые появляются в Windows XP, Vista, 7, 8 и 10:

  • «Была обнаружена проблема, и Windows была выгружена, чтобы предотвратить повреждения компьютера. Очевидно, проблема вызвана следующим файлом: Swapfile.sys.»
  • «:( Ваш компьютер столкнулся с проблемой и нуждается в перезагрузке. Мы соберем необходимую информацию и осуществим перезагрузку. Если вам нужна дополнительная информация, вы можете позже поискать в Интернете по названию ошибки: swapfile.sys.»
  • «STOP 0x0000000A: IRQL_NOT_LESS_EQUAL – swapfile.sys»
  • «STOP 0x0000001E: KMODE_EXCEPTION_NOT_HANDLED – swapfile.sys»
  • «STOP 0×00000050: PAGE_FAULT_IN_NONPAGED_AREA – swapfile.sys»

В большинстве случаев вы сталкиваетесь в ошибками типа «синий экран» swapfile.sys после установки нового аппаратного или программного обеспечения. Синие экраны swapfile.sys могут появляться при установке программы, если запущена программа, связанная с swapfile.sys (например, Windows), когда загружается драйвер Microsoft или во время запуска или завершения работы Windows

Отслеживание момента появления ошибки ОСТАНОВКИ является важной информацией при устранении проблемы

Swapfile.sys ile İlgili Dosyalar

Swapfile.sys ile İlgili SYS dosyaları

Dosya Adı Tanım Yazılım Programı (Sürüm) Dosya Boyutu (byte)
nsmmc.sys Elms DVL Medium changer driver Microsoft Windows Operating System (6.3.9600.16384) 10240
terminpt.sys Terminal Server Input Driver Microsoft Windows Operating System (10.0.15063.0) 30112
b57nd60a.sys Broadcom NetXtreme Gigabit Ethernet NDIS6.0 Driver. Broadcom NetXtreme Gigabit Ethernet Driver (10.10.0.0) 214016
ohci1394.sys Windows System Configuration Windows Vista 72448
pciide.sys Generic PCI IDE Bus Driver Microsoft Windows Operating System (10.0.15063.0) 14752

Hiberfil.sys file

Hiberfil.sys file is a system file that is used by Windows to support Hibernation. If you have enabled Hibernation in Windows 10, you will see this file.

When you have Hibernation, and subsequently Fast Startup enabled (which is the default setting), your Hiberfil.sys file will be approximately 3/4th of your RAM in Windows 7.

In Windows 10 now, it is 40%. In case you have disabled Hibernation, you will find its size roughly equalling your RAM. In Windows 10/8, you will not find the size of Hyberfil.sys running wild when you have Hibernation enabled. In the earlier version of Windows, the hibernation file stored the kernel session, device drivers, and application data. In Windows 10/8, the hibernation file stores the kernel session and device drivers only, as a result of which the size remains more or less constant.

Disable Hibernation

If you wish to, you can always disable/enable hibernation manually or by using our Ultimate Windows Tweaker,  or a Microsoft Fix It. But then remember, that in Windows 10/8, this will disable Fast Startup too. If you feel the need to, you can change the size of hiberfil.sys file.

4.3. Ответственность

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

Этот документ распространяется «как есть». Я постарался описать весь процесс как можно точнее, но вы используете данную информацию на свой страх и риск. Я ни в коем случае не отвечаю за любые повреждения, явившиеся результатом использования этой информации.

Пробуксовка

Основная статья: Пробуксовка (информатика)

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

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

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

Для исключения пробуксовки пользователь может предпринять следующие действия:

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

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