ПОСІБНИКИ

Файл підкачки та ігри: чому його вимкнення обертається проти тебе

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

У тебе 32 ГБ оперативної пам'яті, тож якийсь посібник сказав, що файл підкачки — пережиток машин із меншою пам'яттю і його можна прибрати. Або гра вилетіла з помилкою нестачі пам'яті, хоча диспетчер завдань показував багато вільної RAM. Або посеред матчу Windows вивела повідомлення «Your computer is low on memory» (на комп'ютері мало пам'яті) і попросила закрити програми.

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

Для чого потрібен файл підкачки

Windows видає пам'ять у два кроки. Спершу програма виділяє пам'ять (commit), тобто Windows обіцяє, що це місце існує, і лише згодом програма в нього пише. Вступ Microsoft до файлу підкачки визначає стелю для цих обіцянок: системний ліміт виділення (commit limit) — це сума фізичної пам'яті та всіх файлів підкачки разом.

Сума всіх обіцянок — це обсяг виділеної пам'яті (commit charge), і він не те саме, що використана RAM. Посібник Microsoft із продуктивності щодо виділеної пам'яті зазначає, що у виділену пам'ять не обов'язково щось записували чи взагалі до неї зверталися, тож обсяг виділеної пам'яті може дійти до ліміту, поки фізичної пам'яті ще вдосталь. Ось так гра може залишитися без пам'яті, поки диспетчер завдань показує вільну RAM.

Файл підкачки має й друге завдання: тримати пам'ять, яку змінили, але рідко використовують, щоб Windows могла забрати її з RAM і віддати цю RAM чомусь активнішому. Його третьому завданню, дампам збоїв, присвячено окремий розділ нижче.

Що відбувається без нього

Без файлу підкачки, за посібником Microsoft щодо розміру файлу підкачки, ліміт виділення стає трохи меншим за встановлену фізичну пам'ять. Тепер обіцянки всіх програм мусять уміститися в RAM, зокрема пам'ять, яку пообіцяли, але ще не використали.

Коли обсяг виділеної пам'яті доходить до ліміту, система й процеси, за словами того вступу, можуть не отримати виділеної пам'яті, а це здатне спричинити зависання, вильоти та інші збої. Марк Руссинович, пишучи про віртуальну пам'ять Windows у 2008 році, сказав прямо: коли ліміт виділення досягнуто, запити на виділення пам'яті завершуються невдачею. Гра, яка просить пам'ять саме в цю мить, її не отримує.

Він же відповів і на аргумент про швидкість. Дехто вважає, що без файлу підкачки продуктивність краща, писав він, і для деяких навантажень так може бути; але загалом файл підкачки дає Windows змогу вивантажити на диск сторінки, які активно не використовуються, і так у системи лишається більше доступної пам'яті. Вступ Microsoft додає, що деяким продуктам і службам файл підкачки потрібен.

Дампам збоїв він теж потрібен

Коли Windows падає зі стоп-помилкою, запис про те, що збоїло, за замовчуванням пишеться через файл підкачки. Документація Microsoft про дампи каже, що вміст RAM записується у файл підкачки на розділі, де встановлено Windows, що для роботи функції дампів файл підкачки має бути на завантажувальному томі і що, якщо його перенесли на інший том, його треба повернути. З типовим видом дампу, «Automatic memory dump» (автоматичний дамп пам'яті), і файлом підкачки в режимі «System managed size» (розмір за вибором системи) Windows задає розмір файлу підкачки так, щоб здебільшого вдавалося зберегти дамп пам'яті ядра.

Вікно «Virtual Memory» (віртуальна пам'ять) саме попереджає про це: якщо вимкнути файл підкачки або задати його початковий розмір меншим за певну кількість мегабайтів і станеться системна помилка, Windows може не записати відомостей, які допомогли б визначити проблему. Без цих відомостей з'ясувати, чому вилетіла гра, складніше.

Перевір, наскільки ти близько до стелі

Відкрий диспетчер завдань, перейди на Продуктивність і вибери «Memory» (пам'ять). Рядок «Committed» (виділено) показує два числа: обсяг виділеної пам'яті, а потім ліміт виділення. Якщо під час гри перше наближається до другого, ти біля тієї стелі, про яку ця сторінка, хоч би що показував рядок «In use (Compressed)» (використовується, стиснуто).

Два посібники Microsoft дають для цього співвідношення трохи різні пороги. Посібник із продуктивності, на який є посилання вище, називає все, що понад 75%, близьким до вичерпання; чинний посібник Microsoft з усунення проблем із продуктивністю вважає від 0 до 50% нормою, від 60 до 80% — попередженням, а від 80 до 100% — критичним станом.

Щоб побачити, яка програма тримає обіцянки, на вкладці Подробиці є стовпець «Commit size» (розмір виділеної пам'яті) для кожного процесу; якщо його приховано, його додає «Select columns» (вибрати стовпці). Якщо Windows уже бракувало пам'яті, вона записує подію 2004 від Microsoft-Windows-Resource-Exhaustion-Detector у журнал System із повідомленням, яке називає програми, що спожили найбільше віртуальної пам'яті. Ця команда PowerShell показує останні п'ять:

Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Resource-Exhaustion-Detector'; Id=2004} -MaxEvents 5 | Format-List TimeCreated, Message

Якщо вона повідомляє, що подій не знайдено, у журналі такої події немає.

Яким має бути розмір

Лиши «System managed size». Посібник щодо розміру каже, що за замовчуванням файлами підкачки керує система і що правильний розмір залежить від налаштування дампів збоїв і пікового обсягу виділеної пам'яті, унікальний для кожної системи й не піддається узагальненню. Руссинович із тієї ж причини назвав марними старі формули, які множать обсяг RAM.

Файл підкачки, яким керує система, росте сам. Коли обсяг виділеної пам'яті перевищує 90 відсотків ліміту, файл збільшується до трикратного обсягу RAM або до 4 ГБ, залежно від того, що більше, але не більше восьмої частини тому і лише тоді, коли на диску є вільне місце. Тримай трохи вільного місця на диску, де він лежить.

Є один задокументований виняток. У KB 4055223, що стосується Windows 10 і Windows 11, Microsoft описує випадкові помилки нестачі пам'яті в програмах, які часто виділяють пам'ять; їх може спричиняти затримка, поки автоматичний файл підкачки росте. Обхідне рішення там — власний розмір із початковим розміром у 1,5 раза більшим за RAM, а якщо помилки не зникають, ще більшим. Це суперечить сказаному вище про те, що розмір не піддається узагальненню, і Руссиновичу, тож вважай це виправленням саме цього симптому, а не правилом.

Щоб змінити налаштування, натисни Win+R і виконай SystemPropertiesAdvanced. У розділі «Performance» (продуктивність) вибери «Settings...» (параметри), відкрий вкладку «Advanced» (додатково) і в розділі «Virtual memory» (віртуальна пам'ять) вибери «Change...» (змінити). Верхній прапорець — «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.

Що не допомагає

Пов'язане

Ця сторінка допомогла?

Чого бракувало або що не спрацювало? Ми читаємо кожну таку відповідь.

Якщо ця сторінка не розв'язала проблему, напиши нам — скажи, яку статтю ти читав, і ми виправимо статтю.