что такое свамп память

Изменяем файл подкачки(swap file) Windows

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

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

Процессор работает с ОЗУ в разы быстрее, чем с HDD. Поэтому желательно, чтобы объем ОЗУ был достаточно большой, чтобы система только изредка обращалась к файлу подкачки. Другими словами, чем больше ОЗУ (а это самое главное), и чем меньше файл подкачки – тем быстрее работает компьютер.

Зачем изменять файл подкачки?

Система определяет размер файла подкачки автоматически и в большинстве случаев этого достаточно, но есть некоторые нюансы. Windows обычно выделяет больше мегабайт, чем нужно. Когда оперативная память заполнена полностью, система начинает заполнять файл подкачки. Когда оперативка освобождается – система зачастую продолжает использовать файл подкачки. В результате ОЗУ свободна, и никто ею не пользуется. Поэтому лучше выставлять файл подкачки меньше, чем объем ОЗУ.

Какое это имеет отношение к дамп памяти?

Разный тип дампа памяти (малый дамп, дамп ядра, полный дамп) требует разный объем файла подкачки: малый – 2 Мб, дамп ядра – около 30 % от объема ОЗУ, полный – двойной объем ОЗУ. Скорее всего, вы не собираетесь отправлять файл дампа разработчикам Microsoft, поэтому тип дампа вас не должен беспокоить. Если хотите, можете и вовсе его отключить.

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

Размер файла подкачки зависит от размера ОЗУ. Чем больше оперативной памяти, тем меньше нужно виртуальной памяти. Например:

Как это делать?

1. Заходим в меню «Пуск» и в строке поиска для параметров вводим слово «система». Нажимаем на появившийся пункт «Система».

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

2. Справа наверху выбираем «Дополнительные настройки системы».

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

3. В открывшемся окне много вкладок. Нас интересует «Дополнительные». В этой вкладке есть пункт «Быстродействие», а возле него кнопка «Настройки», которую мы и выбираем.

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

4. Поверх окна «Параметры системы» откроется еще одно – «Параметры быстродействия». Там есть три вкладки, нам нужна «Дополнительно», подпункт – «Виртуальная память», кнопка – «Изменить».

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

5. Откроется еще и третье окно. Тут уже можно снять автоматическое установления размера файла и установить, какой нужно. Удостоверьтесь, что выбран раздел «С» – где установлена система. К нему система обращается быстрее.

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Источник

Виртуальная память: Что это и как ее увеличить?

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Виртуальная память — что это?

Виртуальная память является подкачкой (дополнением) оперативной памяти. Она присутствует практически во всех операционных системах.

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

Что такое виртуальная память?

Виртуальная память (Virtual Memory, ВП) — это метод управления памятью компьютера, использующий для работы файл подкачки (swap file). При недостатке существующего объема ОЗУ, позволяет запускать на ПК более ресурсозатратные программы. В таком случае данные приложения автоматически перемещаются между основной памятью и вторичным хранилищем.

Виртуальная память так же обладает рядом достоинств:

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

Как узнать объем файла подкачки (swap file)

Файл подкачки хранится на винчестере компьютера. Если для работы устройства используется несколько жестких дисков, то он будет расположен на самом быстром из них. Определить объем ВП можно с использованием стандартных средств Windows или специального софта.

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Размер свапа подкачки можно узнать через штатную утилиту «Системный монитор».

Для этого:

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

Dump File и его типы

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

Как это работает:

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

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Загрузка и восстановление

Дампы можно разделить на 4 типа:

В него записывается все содержимое RAM на момент незапланированного завершения работы. С учетом этой информации файл подкачки должен иметь размер равный физической памяти компьютера +1 МБ (используется для создания записи в системном журнале).

В него записывается только информация и память, выделенная для ядра операционной системы. Он занимает сравнительно меньше места и его объема достаточно, чтобы Windows могла определить причины аварийного завершения работы.

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

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

Как изменить Dump File

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

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Загрузка и восстановление

Как изменить объем виртуальной памяти через быстродействие

Запустите системную утилиту «Выполнить» одновременным нажатием клавиш Windows+R или откройте ее через Пуск. После этого:

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

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

Как добавить виртуальную память на Windows

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

Для этого:

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Рекомендации по использованию виртуальной памяти

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Если вы не знаете, какой оптимальный объем для свапа выбрать и на что это будет влиять, то далее мы предлагаем ознакомиться вам с небольшими советами, которые помогут увеличить быстродействие ПК.

Итак, рассмотрим ряд советов:

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

Так же подробно про ВП можно посмотреть в видеоролике ниже:

Виртуальная память или файл подкачки

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

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

Если пользователь хочет указать его самостоятельно, то для этого необходимо учесть выбранный тип дампа (либо отключить его). Объем виртуальной памяти зависит от дампа и общего объема RAM.

Понравилась статья? Подпишитесь на канал, чтобы быть в курсе самых интересных материалов

Источник

Файл подкачки Windows

По запросу в любой поисковой системе «файл подкачки windows» можно получить тысячу-другую скопированных друг у друга, либо немного отличающихся ответов по выбору оптимальных размеров для pagefile.sys.

Самые распространенные советы выглядят примерно следующим образом: для машин с маленьким ОЗУ нужно задавать размер файла подкачки k*RAM, где RAM — объем физической памяти, k — какой-нибудь коэффициент, коих много самых разнообразных. И 1,5, и 2, и даже 3 встречал. Если же планок памяти стоит на 4Гб и больше, то «смело отключайте виртуальную память в принципе».

Статья о том, стоит ли верить ли этим советам, и если да, то насколько.

Что такое файл подкачки?

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

Если отключить файл подкачки

Если попытаться отключить файл подкачки в windows 7, система выдаст предупреждающее окно, в котором сообщит о неприятных последствиях:
что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Отсюда следует, что не стоит полностью отказываться от использования виртуальной памяти, иначе в случае краха не получится даже проанализировать причину сбоя. Указанный на скриншоте минимальный размер в 1МБ берется из расчета конфигурации дампа памяти в настройках «загрузка и восстановление»:
что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Если выбрать для записи отладочной информации полный дамп, то размер увеличивается на несколько порядков. У меня он составил 400МБ.

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

Если перенести файл подкачки на другой раздел

Куча статей по оптимизации вашей ОС рекомендует перенести файл подкачки на отдельно созданный и отформатированный в FAT32 раздел жесткого диска. При этом повышается быстродействие и уменьшается фрагментация этого файла.

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

Размер файла подкачки

Вернемся к нашим апельсинам к вопросу об оптимальном размере. Перекопав множество статей, информационных изданий и даже рекомендации Microsoft, я так и не нашел четкого и однозначного ответа на этот вопрос. Да и не нашел бы, как стало мне ясно после прочтения перевода статьи Марка Руссиновича Преодолевая ограничения Windows: виртуальная память. В заключении приведу ссылки на перевод и оригинал, а сейчас постараюсь объяснить, откуда же взять размер файла.

Для начала потребуется утилита Process Explorer, она является бесплатным аналогом дефолтного Task Manager’a, но обладает многими преимуществами. Скачать можно по ссылке.

После запуска Process Explorer’a выберите самые ресурсоемкие в плане используемой памяти приложения, которые используете в повседневной жизни, и запустите их все одновременно. В окне Process Explorer’a нажмите CTRL+I или выберите в меню View/System Information, из всего многообразия представленных в окне данных нужно выбрать область Commit Charge
что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Значение Peak — пиковое значение выделенной памяти для всех приложений, складываемое из физической и виртуальной памяти.

Далее вооружаемся калькулятором и вычитаем из этого значения размер оперативной памяти. Если получается отрицательное значение — берем требуемые системой 400МБ (может быть другое значение), необходимые для создания дампа. Если получается положительное значение — выставляем таким минимальное и максимальное значение файла подкачки. Можно подстраховаться и установить «про запас» максимум выше, но тогда вырастет фрагментация файла в случае увеличения его размеров. Поэтому лучше зафиксировать на одном месте.

Источник

Как изменить файл подкачки Windows

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

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

Как зайти в настройки файла подкачки

В Windows 10, 8, 7 или Vista для входа в настройки своп-файла необходимо:

• щелкнуть правой кнопкой мышки по значку «Компьютер» на рабочем столе или в меню «Пуск» и в появившемся контекстном меню выбрать «Свойства»;

• в открывшемся окне щелкнуть по пункту «Дополнительные параметры системы»;

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

• в следующем окне перейти на вкладку «Дополнительно» и в пункте «Быстродействие» нажать кнопку «Параметры»

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

• откроется окно с названием «Параметры быстродействия», в котором нужно перейти на вкладку «Дополнительно» и в пункте «Виртуальная память» нажать кнопку «Изменить»;

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

• в следующем окне снять галочку с пункта «Автоматически выбирать объем файла подкачки», после чего появится возможность удалить, создать или изменить размер файла подкачки, а также выбрать локальный диск, на котором он будет находиться.

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Чтобы удалить файл подкачки на определенном локальном диске, необходимо выбрать этот диск в списке, поставить галочку возле пункта «Без файла подкачки», после чего нажать кнопку «Задать».

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

Для вступления новых параметров файла подкачки в силу, компьютер обычно требуется перезагрузить. Соответствующее предложение появится сразу же после выполнения упомянутых выше действий и нажатия кнопки «Задать».

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

Компания Microsoft, являющаяся разработчиком Windows, каких-то конкретных рекомендаций по размеру файла подкачки не дает. И это не случайно. В большинстве случаев, определение размера файла подкачки можно оставить компьютеру, выбрав в настройках пункт «Размер по выбору системы». Windows самостоятельно определит оптимальный размер, исходя из параметров компьютера.

Намного важнее правильно выбрать диск для размещения своп-файла (об этом речь пойдет ниже).

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

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

• если оперативной памяти меньше 4 ГБ, файл подкачки должен быть 4096 МБ или больше;

В то же время, некоторые программы без файла подкачки не работают. Если вы их используете, появится сообщение о нехватке виртуальной памяти. В таком случае файл подкачки нужно включить, выбрав для него размер от 512 до 2048 МБ.

Исходный и максимальный размеры файла подкачки по возможности должны быть одинаковыми. Но если места на жестком диске мало, исходный размер можно сделать на 30-50 % меньше максимального.

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

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

С другой же стороны, размещение своп-файла на быстром SSD обеспечивает более высокое быстродействие системы. Тут уж сами решайте, что для Вас важнее, скорость работы или долговечность компьютера. Как вариант, файл подкачки можно отключить вообще (при объеме оперативной памяти не меньше 8 ГБ).

Подробнее об оптимизации Windows под SSD читайте здесь.

3. Если же в компьютере отсутствует SSD и используется только один жесткий диск, место расположения файла подкачки можно не изменять (по умолчанию, он находится на диске С).

Как узнать, сколько жестких дисков в компьютере и какие на них расположены локальные диски

• щелкнуть правой кнопкой мышки по значку «Компьютер» на рабочем столе или в меню «Пуск» компьютера и в появившемся контекстном меню выбрать пункт «Управление»;

• откроется окно, в левой части которого необходимо выделить пункт «Управление дисками» и немного подождать.

Через некоторое время в правой части этого же окна отобразится вся необходимая информация (см изображение).

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Файл подкачки на компьютере из примера целесообразно разместить на локальном диске Z.

Источник

В защиту swap’а [в Linux]: распространенные заблуждения

Прим. перев.: Эта увлекательная статья, в подробностях раскрывающая предназначение swap в Linux и отвечающая на распространённое заблуждение на этот счёт, написана Chris Down — SRE из Facebook, который, в частности, занимается разработкой новых метрик в ядре, помогающих анализировать нагрузку на оперативную память. И начинает он своё повествование с лаконичного TL;DR…

что такое свамп память. Смотреть фото что такое свамп память. Смотреть картинку что такое свамп память. Картинка про что такое свамп память. Фото что такое свамп память

Предисловие

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

Повторяющейся темой этих обсуждений стал swap. Тема swap активно оспаривается и плохо понимается даже теми, кто проработал с Linux долгие годы. Многие воспринимают его как нечто бесполезное или очень вредное — мол, это пережиток прошлого, когда памяти было мало и диски являлись необходимым злом, предоставляющим столь нужное пространство для подкачки. И до сих пор, все последние годы, я достаточно часто наблюдаю споры вокруг этого утверждения: немало дискуссий провёл и я сам с коллегами, друзьями, собратьями по индустрии, помогая им понять, почему swap — это по-прежнему полезная концепция на современных компьютерах, имеющих гораздо больше физической памяти, чем в былые времена.

Широкое недопонимание существует и насчёт предназначения swap’а: многие люди видят в нём лишь «медленную дополнительную память» для использования в критических ситуациях, но не понимают его вклад в адекватное функционирование операционной системы в целом при нормальной нагрузке.

Многие из нас слышали такие распространённые фразы о памяти: «Linux использует слишком много памяти», «swap должен быть вдвое больше размера физической памяти» и т.п. Эти заблуждения легко развеять и их обсуждения стали более точными в последние годы, однако миф о «бесполезном» swap гораздо больше завязан на эвристику и таинство, которые не поддаются объяснению с простой аналогией, — для его обсуждения требуется более глубокое понимание управления памятью.

Введение

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

Типы памяти

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

Например, есть страницы («блоки» памяти, обычно по 4k), ответственные за хранение кода для каждого процесса, запущенного на компьютере. Есть также страницы, ответственные за кэширование данных и метаданных, относящихся к файлам, к которым обращаются эти программы для ускорения своих обращений в будущем. Они являются частью страничного кэша [page cache], и далее я буду на них ссылаться как на файловую [file] память.

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

Память с высвобождением и без

В размышлениях о конкретном типе памяти одним из главных вопросов становится возможность её высвобождения. «Высвобождение» [reclaim] означает, что система может, без потери данных, удалить страницы этого типа из физической памяти.

Для некоторых типов страниц это сделать весьма просто. Например, в случае чистой [clean], т.е. немодифицированной, памяти страничного кэша мы просто кэшируем для лучшей производительности то, что уже есть на диске, поэтому можем сбросить страницу без необходимости в каких-либо специальных операциях.

Для некоторых типов страниц это возможно, но непросто. Например, в случае грязной [dirty], т.е. модифицированной, памяти страничного кэша мы не можем просто сбросить страницу, потому что на диске ещё нет произведённых модификаций. Поэтому необходимо или отказаться от высвобождения [reclamation], или перенести наши изменения обратно на диск перед тем, как сбрасывать эту память.

Для некоторых типов страниц это невозможно. Например, упомянутые раньше анонимные страницы могут существовать только в памяти и никаком ином резервном хранилище, поэтому их необходимо хранить здесь (т.е. в самой памяти).

О природе swap’а

Если поискать объяснения, зачем нужен swap в Linux, неизбежно находятся многочисленные обсуждения его предназначения просто как расширения физической RAM для критических случаев. Вот, например, случайный пост, который я вытащил из первых результатов в Google по запросу «what is swap»:

«По своей сути swap — это экстренная память; запасное пространство для случаев, когда система на какое-то время нуждается в большем количестве физической памяти, чем доступно в RAM. Она считается «плохой» в том смысле, что медленная и неэффективная, и если системе постоянно требуется использовать swap, очевидно, ей не хватает памяти. [..] Если у вас достаточно RAM для удовлетворения всех потребностей и вы не ожидаете её превышения, вы можете прекрасно работать и без swap-пространства».

Поясню, что я вовсе не обвиняю автора этого комментария за содержимое его поста — это «общеизвестный факт», признаваемый многими системными администраторами Linux и являющийся, пожалуй, одним из наиболее вероятных ответов на вопрос о swap’е. К сожалению, это вдобавок и неправильное представление о предназначении и использовании swap’а, особенно на современных системах.

Как я уже писал выше, высвобождение анонимных страниц «невозможно», поскольку анонимные страницы по своей природе не имеют резервного хранилища, к которому можно обратиться при удалении данных из памяти, — таким образом, их высвобождение приведёт к полной утере данных из соответствующих страниц. Однако… что будет, если мы смогли бы создать такое хранилище для этих страниц?

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

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

Итак, в каких же ситуациях это «равное высвобождение» будет оправданно выбирать высвобождение анонимных страниц? Вот абстрактные примеры некоторых не самых редких сценариев:

Что происходит с использованием swap и без него

Давайте посмотрим на типовые ситуации и к чему они приводят при наличии и отсутствии swap. О метриках «конкуренции за память» я рассказываю в докладе про cgroup v2.

Без конкуренции или с малой конкуренцией за память

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

При временных всплесках в потреблении памяти

Окей, я хочу системный swap, но как его настроить для конкретных приложений?

Вы же не думали, что в этой статье не будет упоминаний использования cgroup v2?

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

Тем не менее, выявить давление на память достаточно трудно с помощью традиционных счётчиков памяти в Linux. Нам доступно нечто, что каким-то образом относится к проблеме, однако скорее по касательной: потребление памяти, количество операций сканирования страниц и т.п. — и по одним этим метрикам очень трудно отличить эффективную конфигурацию памяти от той, что приводит к конкуренции за память. У нас есть группа в Facebook, возглавляемая Johannes’ом и работающая над новыми метриками, упрощающими демонстрацию давления на память, — это должно помочь нам в будущем. Больше информации об этом можно получить из моего доклада про cgroup v2, где я начинаю подробнее рассказывать об одной из метрик.

Тюнинг

Сколько же swap’а мне тогда нужно?

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

Если у вас достаточно дискового пространства и свежее (4.0+) ядро, большее количество swap’а почти всегда лучше, чем меньшее. В более старых ядрах kswapd — один из процессов ядра, что отвечает за управление swap’ом, — исторически слишком усердствовал в перемещении памяти в swap, делая это тем активнее, чем больше swap’а было доступно. В последнее время поведение swapping’а при наличии большого swap-пространства значительно улучшили. Так что, если вы работаете с ядром 4.0+, большой swap не приведёт к чрезмерному swapping’у. В общем, на современных ядрах нормально иметь swap размером в несколько гигабайт, если такое пространство у вас есть.

Если же дисковое пространство ограничено, ответ в действительности зависит от компромисса, на который вы готовы пойти, и особенностей окружения. В идеале у вас должно быть достаточно swap’а, чтобы система оптимально функционировала при нормальной и пиковой (по памяти) нагрузке. Рекомендую настроить несколько тестовых систем с 2-3 Гб swap’а или более и понаблюдать, что происходит на протяжении недели или около того в разных условиях нагрузки (на память). Если на протяжении этой недели не случалось ситуаций резкой нехватки памяти, что означает недостаточную пользу такого теста, всё закончится занятостью swap’а небольшим количеством мегабайт. В таком случае, пожалуй, разумно будет иметь swap хотя бы такого размера с добавлением небольшого буфера для меняющихся нагрузок. Также atop в режиме логирования в столбце SWAPSZ может показать, страницы каких приложений попадают в swap. Если вы ещё не используете эту утилиту на своих серверах для логирования истории состояний сервера — возможно, в эксперимент стоит добавить её настройку на тестовых машинах (в режиме логирования). Заодно вы узнаете, когда приложение начало перемещать страницы в swap, что можно привязать к событиям из логов или другим важным показателям.

Ещё стоит задуматься о типе носителя для swap’а. Чтение из swap имеет тенденцию быть очень случайным, поскольку нельзя уверенно предсказать, у каких страниц будет отказ и когда. Для SSD это не имеет особого значения, а вот для вращающихся дисков случайный ввод/вывод может оказаться очень дорогим, поскольку требует физических движений. С другой стороны, отказы у файловых страниц обычно менее случайны, поскольку файлы, относящиеся к работе одного запущенного приложения, обычно менее фрагментированы. Это может означать, что для вращающегося диска вы можете захотеть сместиться в сторону высвобождения файловых страниц вместо swapping’а анонимных страниц, но, опять же, необходимо протестировать и оценить, как будет соблюдаться баланс для вашей рабочей нагрузки.

Для пользователей ноутбуков/десктопов, желающих использовать swap для перехода в спящий режим [hibernate], этот факт также необходимо учитывать, поскольку swap-файл тогда должен как минимум соответствовать размеру физической оперативной памяти.

Какой должна быть настройка swappiness?

Это означает, что vm.swappiness — это по существу просто соотношение дорогой анонимной памяти, которую можно высвобождать и приводить к отказам, в сравнении с файловой памятью для вашего железа и рабочей нагрузки. Чем ниже значение, тем активнее вы сообщаете ядру, что редкие обращения к анонимным страницам дороги для перемещения в swap и обратно на вашем оборудовании. Чем выше это значение, тем вы больше говорите ядру, что стоимость swapping’а анонимных и файловых страниц одинакова на вашем оборудовании. Подсистема управления памятью будет по-прежнему пытаться решить, помещать в swap файловые или анонимные страницы, руководствуясь тем, насколько «горяча» память, однако swappiness склоняет подсчёт стоимости в пользу большего swapping’а или большего пропуска кэшей файловой системы, когда доступны оба способа. На SSD-дисках эти подходы практически равны по стоимости, поэтому установка vm.swappiness = 100 (т.е. полное равенство) может работать хорошо. На вращающихся дисках swapping может быть значительно дороже, т.к. в целом он требует случайного чтения, поэтому вы скорее всего захотите сместиться в сторону меньшего значения.

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

Источник

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

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