Обладатели встроенной видеокарты, возможно замечали, заходя в диспетчер задач или какую-нибудь игру, что количество выделенной видеопамяти составляет всего 1 или 2 ГБ, а то и вовсе 512 МБ. Многие наверняка задавались вопросами вроде "а не мало ли это?", "а как увеличить?", "а влияет ли на производительность?". Давайте разбираться.
Я пишу эту статью в основном для владельцев ноутбуков без дискретки, которые хотят иногда поиграть в несильно требовательные игры (владельцы, а не ноутбуки :)). Сразу оговорюсь, что не являюсь профессионалом в сфере компьютерных наук, устройство и работу вычислительных средств представляю на уровне "чуть выше среднего". Так что буду признателен за поправки и комментарии (конечно же конструктивные), если где-то ошибся. Также хочу обратить внимание на сноску со звёздочкой. Этот тезис требует дополнительных разъяснений.
Все манипуляции буду проводить на своём личном ноутбуке Lenovo IdeaPad Slim 5 14AHP9, он же XiaoXin 14 2024 с процессором Ryzen 7 8845H, встройкой у которого является Radeon 780M. Оперативной памяти в моём случае 16 ГБ стандарта LPDDR5X со скоростью 6400 MT/s. Если у вашего ноутбука оперативной памяти всего 8 ГБ, то настоятельно не рекомендую выделять встройке более 1 ГБ, особенно на системах с Windows 11.
Обратите внимание, что выделенная под видеобуфер память не сможет использоваться системой для других целей. Например, если у вас 16 ГБ ОЗУ и вы выделяется под видео 4 ГБ, то при загрузке ОС у вас будет доступно только 12 ГБ в качестве ОЗУ. Выбирайте размер этой области в зависимости от ваших задач. При этом ничего страшного не произойдёт, если вы оставите системе мало оперативки. Это не значит, что ваш ноутбук теперь навсегда лишится 4 гигов ОЗУ. Все изменения можно будет откатить.
Сначала немного теории. Затем я покажу, как выделить больше VRAM (видеопамяти) вашей встройке, ну и в конце сравним производительность в играх до/после, и ответим на вопрос, а стоит ли это того?
Разберёмся в чём главное отличие.
Небольшое отступление для тех, кто не сильно в теме. У обычной дискретной видеокарты есть своя собственная, физическая память (например, GDDR 5 или 6). Она быстрая и заточена именно под работу с графикой. А встроенная видеокарта своей памяти не имеет. Поэтому она просто забирает себе часть более медленной оперативной памяти (ОЗУ) компьютера. Как правило это DDR с цифрой 3/4/5 и без буквы G в начале. Ну, не совсем забирает. Правильнее сказать, что операционная система выделяет для неё определённую область, скажем, 2 ГБ, и встройка использует этот объём как видеопамять.
А что происходит, когда этих выделенных 2 ГБ не хватает? Например, в тяжёлой игре.
Видеокарта пытается использовать оперативную память дальше, но делает это медленнее. Данные начинают сбрасываться в другую область, которая физически хоть и относится к той же ОЗУ, но задержка при обращении к ним увеличивается*1. Примерно, как если бы вы работали за своим столом, и всё необходимое для работы было на нём, а теперь вам нужно бегать за какими-то бумагами в другой конец офиса. Может не очень удачный пример, но смысл, думаю, вы уловили.
Из-за этого начинаются тормоза. ФПС в игре проседает, изображение дёргается. Текстуры могут подгружаться с задержкой - сначала видишь расплывчатые объекты, которые через секунду-другую становятся чёткими. Всё потому, что видеокарте не хватает скорости доступа к данным, и она тратит время на их поиск в общей памяти.
Два верхних абзаца - это обобщённый пересказ процесса по данным из разных источников, в том числе авторитетных российских блогеров. Однако, как мы увидим далее, не всё так однозначно.
Переходим от слов к делу. Перед тем, как пользоваться специальной программой, проверьте - вдруг вы сможете выделить необходимое количество видеопамяти прямо из БИОС. Для этого необходимо при включении ноутбука, до начала загрузки операционной системы зайти в БИОС (спасибо кэп). Как правило, делается это с помощью клавиши F2 или Del, но лучше прогуглить в соответствии с моделью вашего ноутбука.
После того, как вы зашли в BIOS нужно найти пункт Configuration или Advanced (зависит от модели ноутбука). Там нам нужен параметр UMA Frame Buffer Size. В моём случае он находится здесь. Так как функции создания скриншотов у меня в биосе нет, далее будут фотографии шакального качества (на самом деле всё читаемо).
Как видим, на выбор предлагают 512 МБ, 1 или 2 ГБ. Что ж, не густо. В вашем случае список может быть больше или меньше. Если вас такой объём устраивает, выбираете его и сохраняете настройки, нажав клавишу F10. На этом статью можно закрывать, ну или хотя бы пролистывать до тестов.
Если же результат вас не устраивает, и вам нужно выделить 4/8/16 ГБ, либо такой опции нет, то идём более сложным путём. Нам потребуется программа Smokeless_UMAF. Скачать её можно с гитхаба набрав в поиске "UMAF".
ВНИМАНИЕ: Я не несу ответственности за любой ущерб, который может возникнуть в результате использования программы. ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК.
Вот, что пишет сам автор: Изменение настроек может привести к блокировке вашего устройства, поэтому обращайтесь с ними осторожно. Убедитесь, что сможете восстановить устройство, если что-то пойдет не так. Для большинства случаев подойдет очистка bios, однако для некоторых "наиболее опасных настроек" может потребоваться перепрошивка.
Предупреждён - значит вооружён. Идём дальше. Нажимаем на ссылку и попадаем на GitHub. Теперь нужно нажать на зелёную кнопку с надписью "<> Code".
После этого скачиваем zip-архив, щёлкнув по соответствующей иконке.
Открываем архив с помощью WinRAR, 7-ZIP или любого другого архиватора. (В Win11 можно это делать напрямую, может быть и в Win10 тоже). В архиве будет несколько файлов и папок. Нам нужна папка с названием UMAF_BETA. Открываем её и извлекаем содержимое в любое удобное место. Эти файлы понадобятся нам чуть позже.
Теперь нужно подготовить флэшку. В принципе, подойдёт любая. Нужно отформатировать её в файловую систему FAT32. Для этого необходимо открыть проводник, выбрать флэшку правой кнопкой мыши и в выпадающем окне нажать "форматировать".
Убедитесь, что выбрана файловая система FAT32, размер кластера можно выставлять любой, но я поставил стандартный. Называть флэшку как-то по особому не нужно, можете оставить своё название. После этого нажимаем "Начать". Внимание: форматирование удалит все файлы с накопителя. Так что, если необходимо, сделайте резервные копии.
Примечание (для интересующихся): схема разметки дисков (MBR или GPT) роли не играет.
После того, как флэшка отформатирована перекидываем на неё содержимое папки UMAF_BETA. Именно содержимое, саму папку перекидывать не нужно. Таким образом у вас должно получится что-то подобное, только без текстового файла SREP.
Теперь вставляем флэшку в ноутбук и перезагружаем его (или включаем питание, если он был выключен). Заходим в БИОС или сразу в менеджер загрузки (Boot manager). В моём случае это кнопка F12. Теперь выбираем в качестве загрузочного носителя свою флэшку.
В моём случае вот она.
Если у вас вдруг открывается чёрное окно, в котором есть вариант только загрузки Windows, значит нажмите Esc и попробуйте ещё раз нажать на F12/Del или другую клавишу, в зависимости от вашей модели ноутбука.
Не буду объяснять значение всех пунктов, оно нам здесь и не нужно. Просто переходим в любой из Device Manager. Разницы действительно нет. В открывшемся окне выбираем AMD CBS.
Теперь листаем стрелками до NBIO Common Options и нажимаем клавишу Enter.
Здесь нас интересует пункт GFX Configuration. Выбираем его.
Находим пункт iGPU Configuration и переводим его со значения Auto на UMA_SPECIFIED.
Почти готово, теперь выбираем необходимый объём буфера.
Для систем с 16 ГБ оперативной памяти лучше не выделять более 4 ГБ. Если у вас 32 ГБ ОЗУ, то смело можете выставлять 8 или даже 16 гигов. Конечно, в зависимости от того, для чего вы используете свой ноутбук.
После того, как вы выбрали нужный объём, несколько раз жмём Esc, пока программа не предложит сохранить новые значения. Нажимаем клавишу Y (сокращённо от Yes). Или, если вы передумали, нажмите N.
Снова попадаем в начальное меню и нажимаем Continue. После этого загрузится ваша система.
Поздравляю, теперь вы стали хакером (нет). Но научились выделять больше памяти, чем это было предусмотрено производителем вашего устройства. В этой программе есть множество других "скрытых" настроек, но лезть туда без соответствующих знаний не советую. В скором времени я разберу ещё одну, которая должна повысить производительность в играх, но об этом в следующий раз.
Теперь переходим к тестам.
Да простят меня гуру Overclockers и подобных сайтов за то, что нарушаю канон, но я не буду расписывать здесь всю методику тестирования, тестовый стенд и т.п. Нам ведь важен лишь ответ на вопрос "а есть ли профит?". В качестве тестовой игры выбрана Shadow of the Tomb Rider, вышедшая в 2018 году.
Почему именно она? Потому что в ней есть встроенный бенчмарк, который позволит произвести замеры в плюс-минус одинаковых условиях, да и системные требования не слишком высоки.
Так как ноутбук имеет разрешение экрана 1920x1200, то на нём и буду тестировать. Масштабирование отключено. Только натив, только хардкор. VSync вырублена, сглаживание SMAA.
В настройках графики выбран пресет "Максимальный", хотя некоторые параметры можно вручную докрутить до более высоких. Но я оставил как есть. Температура в комнате 23 градуса по Цельсию. Перед запуском бенча ноутбук в каждом случае сначала просто стоял в течении 5 минут, дабы устаканились все Windows-процессы, затем "прогревался" первым бенчмарком, чтобы исключить влияние запуска "на холодную" и только после этого я запускал второй тест.
Переходим к результатам. А они, признаюсь, меня удивили.
Казалось бы вот оно, эффект действительно есть - целых 1,5% к производительности! Однако, радость в данном случае преждевременна и весь выигрыш находится на уровне погрешности.
А может посмотрим на график времени кадра и P0.1% ФПС? Вдруг увеличение буфера избавило нас от микрофризов и статтеров? Обязательно посмотрим, только взгляните сначала на таблицу в бенчмарке. Несмотря на чуть большее количество отрисованных кадров в случае 4 GB VRAM, значение ГП Мин. на 7% выше именно в случае с буфером 0,5 ГБ (30 вместо 28 FPS). То есть минимальная частота кадров (не совсем понятно как именно игра её считает, скорее всего это P1%) получилась выше при использовании меньшего объёма видеобуфера.
Взглянем на график фреймтайма.
График получился ровный, никакой "пилы" не наблюдается. Как и в случае с 4 ГБ видеопамяти. При этом игра потребляет 3,5 ГБ VRAM (здесь этого скриншота нет), то есть нельзя придраться к тому, что в обоих случаях выделенного нами объёма ей хватает. Не хватает. И здесь напрашивается 2 вывода.
1. Windows умеет грамотно работать с памятью и динамически выделять недостающий массив адресов ОЗУ под VRAM, и это не приводит к увеличению задержек. В общем-то это не новость. Так оно и есть, как минимум с десятки, а то и раньше. Но где же обещанные микрофризы из-за обращения GPU в другие области памяти? Сомневаюсь, что версия Windows имеет большое значение, а потому считаю, что эти утверждения лишь байки, которые, если и были в старых системах, к современным не относятся.
2. Предположим, что ситуация с фризами реальна, однако я не смог её воспроизвести в данной игре и на данной системе. Вероятно, ключевым фактором является скорость "видеопамяти", а точнее ОЗУ. Всё-таки LPDDR5X с частотой 6400 MT/s гораздо быстрее той же DDR4 даже с настроенными таймингами. Поэтому никаких задержек и не было заметно.
Обладателей систем с 32 ГБ памяти и мощной встройкой, приглашаю поделится своими тестами в других играх. Или, если кому-то удалось добиться заметного снижения P1% FPS и поймать "пилу" на графике времени кадра, то также расскажите об этом. Желательно подкрепив вашими скриншотами.
А на этом у меня всё. Если вы не согласны с какими-то доводами или нашли фактическую ошибку в тексте, пожалуйста, напишите об этом и я отредактирую пост.