У тебя 32 ГБ ОЗУ, и какое-то руководство сказало, что файл подкачки — пережиток машин с меньшим объёмом памяти и его можно убрать. Или игра вылетела с ошибкой нехватки памяти, хотя диспетчер задач показывал много свободной ОЗУ. Или посреди матча Windows сообщила «Your computer is low on memory» (на компьютере недостаточно памяти) и попросила закрыть программы.
Все три случая возникают из-за одного и того же механизма, и это не тот механизм, из которого исходит совет «отключи его».
Зачем нужен файл подкачки
Windows выдаёт память в два шага. Сначала программа выделяет (commit) память — это обещание Windows, что место существует, — и только потом пишет в неё. Введение в файл подкачки от Microsoft определяет потолок этих обещаний: предел выделения памяти системы (commit limit) — это сумма физической памяти и всех файлов подкачки вместе.
Сумма всех обещаний — это выделенная память (commit charge), и это не то же самое, что используемая ОЗУ. Руководство Microsoft по производительности о выделенной памяти указывает, что в выделенную память не обязательно что-то записывали или к ней обращались, поэтому выделенная память может дойти до предела, пока физической памяти ещё много. Именно так игре может не хватить памяти, пока диспетчер задач показывает свободную ОЗУ.
У файла подкачки есть вторая задача: хранить память, которая была изменена, но редко используется, чтобы Windows могла убрать её из ОЗУ и отдать эту ОЗУ чему-то более занятому. Его третьей задаче, аварийным дампам, посвящён отдельный раздел ниже.
Что происходит без него
Без файла подкачки, как говорит руководство Microsoft по размеру файла подкачки, предел выделения становится немного меньше установленной физической памяти. Теперь обещания всех программ должны уместиться в ОЗУ, включая память, которую пообещали, но ещё не использовали.
Когда выделенная память доходит до предела, по словам того же введения, система и процессы могут не получить выделенную память, что может вызвать зависания, вылеты и другие сбои. Марк Руссинович, писавший о виртуальной памяти Windows в 2008 году, сказал прямо: когда предел выделения достигнут, запросы на выделение памяти завершаются неудачей. Игра, которая просит память в этот момент, её не получает.
Он ответил и на довод о скорости. Некоторые считают, что без файла подкачки производительность выше, писал он, и для некоторых нагрузок это может быть так; но в целом файл подкачки позволяет Windows выгружать страницы, которые активно не используются, и это оставляет системе больше полезной памяти. Введение Microsoft добавляет, что некоторым продуктам и службам файл подкачки необходим.
Он нужен и для аварийных дампов
Когда Windows падает с ошибкой остановки, запись о том, что сломалось, по умолчанию пишется через файл подкачки. Документация Microsoft о дампах говорит, что содержимое ОЗУ записывается в файл подкачки на разделе, где установлена Windows, что для работы дампов файл подкачки должен быть на загрузочном томе и что если его перенесли на другой том, его нужно вернуть обратно. При типе дампа по умолчанию, Автоматический дамп памяти, и файле подкачки в режиме «System managed size» (размер по выбору системы) Windows подбирает размер файла подкачки так, чтобы в большинстве случаев можно было сохранить дамп памяти ядра.
Окно настройки виртуальной памяти само предупреждает об этом: если отключить файл подкачки или задать его исходный размер меньше определённого числа мегабайт и произойдёт системная ошибка, Windows может не записать сведения, которые помогли бы определить проблему. Без этих сведений выяснить, почему вылетела игра, становится труднее.
Проверь, насколько ты близок к потолку
Открой диспетчер задач, перейди на вкладку Производительность и выбери «Memory» (память). Строка «Committed» (выделено) показывает два числа: выделенную память, а затем предел выделения. Если во время игры первое приближается ко второму, ты рядом с тем потолком, о котором эта страница, что бы ни показывала строка «In use (Compressed)» (используется (сжатая)).
Два руководства Microsoft дают для этого соотношения немного разные пороги. Руководство по производительности, на которое ссылка выше, считает всё, что выше 75%, близким к исчерпанию; актуальное руководство Microsoft по устранению проблем с производительностью называет от 0 до 50% нормой, от 60 до 80% — предупреждением, а от 80 до 100% — критическим уровнем.
Чтобы увидеть, какая программа держит обещания, на вкладке Подробности есть столбец «Commit size» (размер выделенной памяти) для каждого процесса; если он скрыт, его добавляет Выбрать столбцы. Если Windows уже не хватало памяти, она записывает событие 2004 от Microsoft-Windows-Resource-Exhaustion-Detector в журнал «Система» с сообщением, которое называет программы, потребившие больше всего виртуальной памяти. Эта команда PowerShell выводит последние пять:
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Resource-Exhaustion-Detector'; Id=2004} -MaxEvents 5 | Format-List TimeCreated, Message
Если она сообщает, что события не найдены, в журнале таких событий нет.
Каким должен быть размер
Оставь «System managed size» (размер по выбору системы). Руководство по размеру говорит, что по умолчанию размером файлов подкачки управляет система и что правильный размер зависит от настройки аварийного дампа и пиковой выделенной памяти, уникален для каждой системы и не поддаётся обобщению. Руссинович по той же причине называл старые формулы с множителем ОЗУ бесполезными.
Файл подкачки, размером которого управляет система, растёт сам. Когда выделенная память превышает 90 процентов предела, он растёт до трёхкратного объёма ОЗУ или до 4 ГБ, смотря что больше, но не больше восьмой части тома и только если на диске есть свободное место. Оставляй немного свободного места на диске, где он лежит.
Есть одно задокументированное исключение. В KB 4055223, которая относится к Windows 10 и Windows 11, Microsoft описывает случайные ошибки нехватки памяти в программах, которые часто выделяют память; они могут возникать из-за задержки, пока автоматический файл подкачки растёт. Обходной путь оттуда — заданный вручную размер с исходным значением в 1,5 раза больше объёма ОЗУ, а если ошибки продолжаются — ещё больше. Это противоречит сказанному выше о том, что размер не поддаётся обобщению, и Руссиновичу, так что считай это исправлением одного этого симптома, а не правилом.
Чтобы изменить настройку, нажми Win+R и выполни SystemPropertiesAdvanced. В разделе «Performance» (быстродействие) нажми Параметры..., открой вкладку Дополнительно и нажми Изменить... в разделе Виртуальная память. Верхний флажок — «Automatically manage paging file size for all drives» (автоматически выбирать объём файла подкачки). Под ним для каждого диска есть «Custom size» (указать размер), «System managed size» (размер по выбору системы) и «No paging file» (без файла подкачки). «Set» (задать) применяет выбор к этому диску; затем нажми OK и перезагрузи ПК.
Износ SSD
Другая причина, которую приводят для его удаления, — износ SSD. Инженерный блог Windows 7 от Microsoft сообщал, что по телеметрии 2009 года чтений файла подкачки было примерно в 40 раз больше, чем записей, и пришёл к выводу, что мало найдётся файлов, которые подходят для размещения на SSD лучше, чем файл подкачки. Это цифры 2009 года, так что воспринимай их как закономерность, а не как сегодняшние числа.
Для масштаба на более новом накопителе: техническая спецификация 990 PRO от Samsung 2022 года рассчитывает модель на 1 ТБ на 600 ТБ записи в рамках пятилетней ограниченной гарантии — в зависимости от того, что наступит раньше. Если распределить равномерно, это около 330 ГБ записи в день в течение пяти лет; это деление наше, а не Samsung.
Что не помогает
- Отключать его, потому что ОЗУ много. Тогда предел оказывается чуть ниже объёма ОЗУ, и каждое обещание должно в него уместиться, используется оно или нет.
- Маленький фиксированный размер. Предел — это ОЗУ плюс файл подкачки, поэтому файл подкачки меньше твоих пиковых потребностей точно так же опускает потолок, только не так сильно.
- Переносить его с диска Windows. Аварийным дампам нужен файл подкачки на загрузочном томе, как сказано выше.
- Программы для оптимизации памяти. Руководство Microsoft по производительности говорит, что так называемые оптимизаторы памяти заставляют ядро удалять свой дисковый кэш и урезать рабочие наборы процессов, что вызывает много ненужного дискового ввода-вывода.
Похожие статьи
- Почему вылетела игра?
- Диспетчер задач для геймеров
- Не хватает видеопамяти (VRAM)
- Почему игры фризят на Windows 11
- SSD или HDD для игр
Эта страница помогла?
Чего не хватило или что не сработало? Мы читаем каждый такой ответ.
Если эта страница не решила проблему, напиши нам — скажи, какую статью ты читал, и мы её исправим.