О неочевидных особенностях использования видеопамяти в Windows
Краткое содержание поста: при отсутствии файла подкачки максимальный объём использующейся видеопамяти ограничивается "свободной" (не зарезервированной) оперативной памятью, размер которой в Windows может падать практически до нуля.
А теперь чуть более подробное, но по возможности всё ещё краткое описание ситуации. Сразу обмолвлюсь, что я не являюсь супер-специалистом в компьютерном железе и, возможно, рассказываю о каких-то супер-очевидных вещах, но лично для меня и нескольких моих знакомых это было открытием, так что, думаю, не помешает сделать на эту тему пост)
Некоторое время назад у меня иногда стали вылетать игры с ошибками о невозможности подгрузки текстур или карты теней. Обычно такое может случаться при нехватке видеопамяти (текстуры просто физически туда не помещаются), но проблема заключалась в том, что из моих 6 Гб оказывались заполненными ну максимум 4 Гб. Начал уже думать о частичном повреждении памяти и решил попробовать полностью её загрузить через MSI Kombustor:
По мониторингу в диспетчере задач и MSI Afterburner было выяснено, что действительно загрузка памяти прекращается по достижению определённого значения и не доходит до максимальных 6 Гб. Подозрителен был тот факт, что значение это всегда разное, чего не могло быть, если бы просто повредился один блок памяти.
Опытным путём было установлено, что момент прекращения загрузки совпадает с окончанием "свободной" части оперативной памяти. Слово "свободной" написано в кавычках, т.к. фактически Windows считает доступной всю оперативную память, которая не используется. Хотя большая часть остатка оперативки при этом может быть забита кэшированными данными (что полезно для ускорения работы), в случае необходимости Windows просто выкинет эти данные и запишет поверх информацию, необходимую для работы программ. В Диспетчере задач эта часть "зарезервированной" памяти обозначается белым прямоугольником:
Проблема в том, что при работе с графикой этот принцип почему-то не работает. Перед загрузкой данных в видеопамять Windows нужно сначала загрузить их в оперативку, и для этого она может использовать только тот "по-настоящему свободный" остаток памяти, что на рисунке я обозначил "доступно". Кэшированные (зарезервированные) данные почему-то не затираются, а должны быть предварительно сброшены в файл подкачки (если вдруг кто-нибудь в комментариях объяснит мне, почему, буду рад). Соответственно, если у вас не используется файл подкачки (а я при своих 16 гигах оперативки так и сделал), объём используемой видеопамяти будет ограничен только "свободной" (в понимании винды) оперативкой. Иногда этот объём может падать практически до нуля. Например, сейчас, когда я пишу этот пост, у меня там всего лишь 180 Мб)
Вывод: для корректного функционирования видеопамяти крайне желательно иметь файл подкачки (желательно по размеру самой видеопамяти), куда при загрузке текстур, карт теней и т.п. из оперативной памяти смогут сбрасываться кэшированные данные. Иначе возможны внезапные вылеты из игр даже при наличии свободной видеопамяти. Если у вас нет файла подкачки, советую попробовать загрузить всю видеопамять хоть через тот же бесплатный Комбустор)
P.S.: видеокарта NVIDIA GeForce GTX 1060


Лига Геймеров
55.4K пост91.8K подписчиков
Правила сообщества
Ничто не истинно, все дозволено, кроме политоты, за нее пермач, идите на ютуб
Помни!
- Новостные/информационные публикации постим в pikabu GAMES
- Развлекательный контент в Лигу Геймеров
Нельзя:
Попрошайничать;
Рекламировать;
Оскорблять участников сообщества;
Нельзя оценивать Toki Tori ниже чем на 10 баллов из 10;
Выкладывать ваши кулвидосы с только что зареганных акков - пермач
За неэтичное использование сообщества - тоже бан. Если ты выкладываешь пост в наше сообщество и получаешь стартовые плюсы от наших подписчиков, не думай, что вытаскивать потом пост в своё личное сообщество будет умным поступком.