Независимый подрядчик Valve только что поставил перед собой самую сложную задачу на данный момент: сделать игры на 8 ГБ видеокартах жизнеспособными.
С помощью простого трюка подрядчик Valve обеспечил плавный игровой процесс на 8 ГБ видеокартах
Играть на бюджетных видеокартах, особенно с 8 ГБ видеопамяти (VRAM), становится всё сложнее. Поскольку большинство современных игр выпускаются в неоптимизированном состоянии, а подавляющее большинство геймеров ПК предпочитают бюджетное оборудование на фоне роста цен на комплектующие для ПК, ПК-гейминг становится труднее для широкой аудитории.
Но похоже, что человек, разделяющий чувства современных геймеров, разработал совершенно новый инструмент для управления VRAM, чтобы снова сделать бюджетные видеокарты жизнеспособными.
По словам Натали Вок, независимого подрядчика, сотрудничающего с Valve по RADV — открытому драйверу Vulkan для видеокарт AMD, — похоже, что игры на 8 ГБ видеокартах снова могут стать возможными. В своем сообщении в блоге Pixelcluster GPU разработчик делится тем, как ей удалось решить дилемму с видеопамятью GPU.
Некоторым это может показаться невероятным, но не у всех в настольных ПК установлены монстры с 128 ГБ видеопамяти. По всему миру ходят рассказы об особенно стойкой группе геймеров под Linux: тех, кто осмеливается пытаться играть в игры, имея всего 8 гигабайт видеопамяти или даже меньше. Поистине, требуется чрезвычайно сильная стойкость и решимость, чтобы столкнуться с заиканиями и замедлениями, которые неизбежно возникают, когда в системе начинает не хватать свободной видеопамяти. Внутри драйвера ядра начинается хаос, поскольку каждое приложение борется за то, чтобы удержать как можно больше памяти GPU. Любая игра, попавшая в эту битву за ресурсы, наверняка не останется невредимой.
По крайней мере, до сих пор. Потому что я это исправила.
Натали Вок — блог Pixelcluster GPU
Исследование начинается с анализа того, что происходит при запуске игры на бюджетной видеокарте с 8 ГБ видеопамяти. Утверждается, что на стандартном настольном ПК браузер с несколькими открытыми вкладками займет небольшую часть видеопамяти GPU вместе с несколькими другими приложениями. Еще до запуска игры четверть видеопамяти уже занята этими приложениями. А при запуске такой игры, как Cyberpunk 2077, потребляется почти весь бюджет в 8 ГБ видеопамяти.

Настольные ПК также разделяют ресурсы памяти между видеопамятью GPU и системной памятью, называемой GTT. Эта память доступна для GPU, но вместо работы на полной пропускной способности, предлагаемой GPU, данные, отправляемые в системную оперативную память, обрабатываются на гораздо более низкой скорости (256 ГБ/с против 16 ГБ/с в приведенном примере). Это вызывает замедление. И Cyberpunk 2077 выделяет 650 МБ для GTT, но, несмотря на это выделение, игра все равно запрашивала некоторые выделения памяти в VRAM, которые в итоге попадали в GTT. Этот процесс называется «вытеснением» (eviction).
Ответом на случаи вытеснения служат cgroups, которые полезны для организации случайных групп процессов в единое целое. Они могут устанавливать лимит для оперативной памяти и ЦП. Здесь в игру вступает следующий шаг cgroups — контроллер «dmem cgroup», написанный Маартеном, Максимом Рипардом из Red Hat и Натали. С его помощью ядро может обеспечить защиту памяти как средство защиты от вытеснения. Но потребовалась дополнительная настройка, и с патчами от Натали управление использованием памяти стало гораздо более агрессивным.
Результат можно увидеть, когда Cyberpunk 2077 запускается снова с примененными патчами. Даже при работе в фоновом режиме множества ресурсоемких приложений игра не выделяет дополнительные ресурсы в память. И это делает игровой процесс более плавным и легко управляемым на видеокартах с 8 ГБ или даже меньшим объемом памяти (6 ГБ).

Приоритизация через cgroups теперь позволяет игре использовать практически каждый байт видеопамяти для реальных игровых целей. Немного сложно точно сравнить цифры производительности, поскольку нехватка видеопамяти медленно развивается со временем, пока вы перемещаетесь по игре, но улучшение должно быть очевидным при сравнении ощущений от игры после некоторого времени. Вместо постепенного снижения производительности игры должны работать гораздо стабильнее — при условии, что сама игра не использует больше видеопамяти, чем у вас есть на самом деле. В целом, похоже, что даже современные игры остаются в пределах бюджета памяти около ~8 ГБ или чуть меньше, так что если у вас видеокарта с 8 ГБ видеопамяти, вы должны быть в порядке с сегодняшними играми.
Натали Вок — блог Pixelcluster GPU
В настоящее время dmem cgroups совместимы с видеокартами AMD и Intel. NVIDIA их не поддерживает из-за своих проприетарных модулей ядра. Также поддержка iGPU остается под вопросом, но основная проблема в том, что они не имеют выделенной памяти и полагаются на GTT (системную память). Но этот патч может принести некоторую пользу. Так что большая работа, которой поделилась Натали, и мы надеемся, что эти преимущества дойдут и до реальных игр на бюджетных видеокартах.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Hassan Mujtaba




