Fb usage в видеокарте что это такое
Память компьютера играет жизненно важную роль в быстром доступе к приложениям и программам. Компьютерная память или оперативная память используются системным процессором для хранения данных. Это энергозависимая память на материнской плате, которая хранит операционную систему и программы для быстрого доступа. Ваш системный процессор непрерывно загружает данные с жесткого диска в ОЗУ перед выполнением. Но иногда вам может понадобиться буфер для высокого качества видео, видео редакторов, 3D-структур и новой игры на вашем ПК.
Как увеличить Video RAM из BIOS
Это рекомендуемый метод перераспределения VRAM. Однако это не работает на всех материнских платах, и вам не разрешается перераспределять память на вашем ПК самостоятельно. Тем не менее, вы можете попробовать изменить настройки BIOS и проверить, есть ли у вас достаточно прав для изменения объема выделенной видеопамяти на вашем ПК.
Шаг 1. Перезагрузите ПК, ноутбук и войдите в BIOS, нажимая — F2 или клавишу Del во время загрузки. Можете посмотреть, как зайти в BIOS от разных производителей материнских плат. В BIOS вам нужно перейти Advanced > video/Graphics settings или VGA Share Memory Size или UMA Frame Buffer Size или Share Memory и выбрать значение. Ниже на картинках я привел два примера, первый — это мой UEFI Asrock на ПК, а второй — это старый ноутбук BENQ с обычным BIOS.
Вы должны понимать, что параметры BIOS у всех разные, и иногда в БИОСах есть расширенные настройки, которые по умолчанию не показывают всех параметров. Воспользуйтесь Google или Yandex "поиск по картинкам", вбив туда модель материнской платы.
Шаг 2. Как только вы выбрали значение, которое вам нужно, обязательно сохраните параметры БИОС, нажав F10.
Память компьютера играет важную роль в быстром доступе к приложениям и программам. Память компьютера или ОЗУ используется системным процессором для хранения данных. Это энергозависимая память на материнской плате, в которой хранятся операционная система и программы системы для быстрого доступа. Ваш системный процессор непрерывно загружает данные с жесткого диска в оперативную память перед выполнением. Но иногда вам может понадобиться буферизовать высококачественное видео, видеоредакторы, 3D-структуры и новую игру на вашем ПК.
Увеличьте выделенную видео память на вашей видеокарте из BIOS
Это рекомендуемый метод для перераспределения памяти выделения памяти VRAM. Тем не менее, это не работает для всех материнских плат, и вам может быть запрещено перераспределять память на вашем ПК в одиночку. Тем не менее, вы можете попытаться изменить настройки BIOS и проверить, достаточно ли у вас прав для изменения объема выделенной видеопамяти на вашем ПК.
Перезагрузите компьютер и несколько раз нажмите клавишу BIOS — клавиши F2, F5, F8 или Del во время загрузки.
В меню BIOS перейдите в раздел Расширенные функции или аналогичный.
Теперь нажмите Настройки видео/графики или Размер общей памяти VGA . Если вы не можете найти эти варианты, найдите категорию с похожим вариантом.
Настройте параметр, который лучше всего подходит для вашей задачи. Объем памяти по умолчанию, выделяемой для графического процессора, обычно составляет 128 МБ. Вы можете увеличить предварительно выделенную VRAM до 256 МБ или 512 МБ.
Сохраните изменения и перезапустите систему.
Выводы
В RDP протоколе частота кадров ограничена 30-ю кадрами в секунду. Со стороны сервера увеличить лимит FPS можно, но бессмысленно: на практике терминальная сессия перестала отрисовывать окно и реагировать на действия как раз при проигрывании "того самого" видеофайла :).
Итоги в цифрах:
Частота кадров стабилизируется почти на максимально возможном для протокола уровне: 29-30 FPS в среднем вместо 25 или даже 15 FPS
Отзывчивость удалённого рабочего стола также стабилизируется, при этом возрастая в несколько раз
Заметно, на 20-50 %, разгружается центральный процессор
Немного возрастает утилизация канала связи, на 3-6 Мбит/сек
Утилизация GPU составила до 20%
Результат действительно очень хороший: RemoteFX значительно увеличивает качество работы в терминальной сессии — плавность отрисовки окна и отклик на действия пользователя сравнимы с локальным режимом. Даже "тяжёлые" сценарии показывают в этом плане заметный прирост.
Тесты, конечно, носят искусственный характер: выбором способа нагрузки на кодек RemoteFX можно как "завалить" так и "подтянуть" его результаты. Возможно, более релевантным было бы проведение чего-то вроде "конфетти-теста", например, такого.
Зачем увеличивать объем видеокарты?
Увеличение объема видеопамяти в интегрированных решениях обычно выполняется с целью запуска приложений, которые не могут работать при текущей конфигурации компьютера, а именно — из-за нехватки памяти видеокарты. В большинстве случаев это делается в попытке запуска какой-нибудь компьютерной игры. От объема видеопамяти также может зависеть скорость выполнения задач различными графическими редакторами (как, например, Photoshop), видеоредакторами, видеопроигрывателями и т.д.
Здесь важно понимать один момент. Объем оперативной памяти, отдаваемый под нужды видеоадаптера, не сможет использоваться компьютером для выполнения других задач (до тех пор, пока не будут применены другие настройки). Допустим, для работы какого-либо приложения требуется 512 Мб видеопамяти и 1 Гб ОЗУ. Если 1 Гб — это весь объем ОЗУ компьютера, то после его "передачи" под нужды видеокарты останется всего 512 Мб. Т.е. характеристик ПК может по-прежнему не хватать для запуска приложения, но уже по причине нехватки бортовой оперативной памяти.
Конфигурация тестовой среды
Сервер
2 vCPU Intel(R) Xeon(R) CPU E5-2696 v4 @ 2.20GHz
GPU NVIDIA GRID M60-1Qб, Dedicated Memory 929 MB, Shared Memory 4095 MB
гостевая ОС Windows Server 2019 Standart x64 1809 (Version 10.0.17763.1577), DirectX 12
network in/out rate limit 50 Mbps
Клиент
Intel(R) Core(TM) i5-7600K CPU @ 3.80GHz, 3801 МГц, ядер: 4, логических процессоров: 4
network in/out rate limit 100 Mbps
OS Windows 10 Pro 2004 (Version 10.0.19041.685), DirectX 12
1920 x 1080 (32 bit) (32Hz)
на вкладке "Взаимодействие" выбрано "Локальная сеть (10 Мбит/с и выше)"
Проверьте количество VRAM на вашей видеокарте
Прежде чем опробовать способы увеличения VRAM, вам нужно сначала проверить, сколько выделенной видеопамяти у вашей видеокарты в Windows 10.
Перейдите в меню Пуск и нажмите Настройки. Перейдите в Система и нажмите Показать на левой боковой панели Системных настроек.
Прокрутите меню «Дисплей» вниз и выберите параметр Свойства адаптера дисплея в нижней части окна.
В новом всплывающем окне вы увидите тип адаптера, используемого в вашей системе, и другую графическую информацию на вкладке Адаптер . Проверьте общий объем выделенного пространства для выделенной видеопамяти в разделе Информация об адаптере .
Кратко о RemoteFX
Традиционный RDP работает так, чтобы как можно больше работы по отрисовке окна удалённого рабочего стола переложить на клиента: по сети передаются графические примитивы и инструкции, которые должна выполнить клиентская видеокарта. Такой подход, в случае показа видео или использования интерфейса Windows Aero, требует поддержки со стороны клиента. Иначе вместо Aero будет использована упрощённая схема, а обработанный CPU сервера видеопоток передан клиенту в виде растровой графики, производительность отрисовки при этом может оказаться просто неприемлемой. Поэтому приходилось выбирать: либо использовать традиционный RDP только в связке с достаточно производительным клиентским железом, либо отказываться от сложной графики.
При включении RemoteFX клиенту по сети по прежнему передаются растровые кадры. Но есть два существенных отличия от традиционного RDP. Во-первых, вся подготовка и обработка графики перекладывается на GPU сервера, это происходит намного быстрее и разгружает CPU. А во-вторых, используется сжатие кадра, которое выполняет кодек RemoteFX. Это существенно снижает объём передаваемых по сети данных, тем самым разгружая канал связи. Это существенно снижает требования к клиентскому железу, но сохраняет достаточный уровень отрисовки и отзывчивости удалённого рабочего стола.
Можно ли увеличить видеопамять на моем компьютере?
За некоторым исключением функция увеличения объема видеопамяти доступна только на компьютерах с интегрированной видеокартой. Это может быть, как любой мобильный, так и стационарный компьютер. Т.е. если на ПК установлена дискретный (внешний) видеоадаптер, увеличить объем ее памяти, скорее всего, не получится — данная функция доступна на довольно малом количестве видеокарт.
Многие владельцы ноутбуков часто ошибочно полагают, что в их компьютере установлен встроенный графический адаптер. На самом деле, в современных мобильных ПК чаще всего используются дискретные решения. Просто физический размер таких видеокарт очень мал, потому что они в целях экономии пространства встраиваются в материнскую плату.
Чтобы точно определить, является ли используемая видеокарта интегрированной, потребуется ознакомиться с ее описанием в интернете. Первым делом нужно узнать название видеоадаптера. В Windows это можно сделать через стандартное системное приложение "Диспетчер устройств":
- Нажмите клавиши "Win + R", в открывшееся окошко "Выполнить" впишите без кавычек команду "devmgmt.msc", затем нажмите "ОК". Откроется "Диспетчер устройств".
- Далее раскройте раздел "Видеоадаптеры". Если в компьютере задействована только одна видеокарта, то ее название будет отображено в данном разделе. Например:
- Далее откройте сайт любой поисковой системы и впишите в поисковую строку название видеокарты вместе с производителем (например — "NVIDIA GeForce GT 220").
В нашем примере NVIDIA GeForce GT 220 — это дискретная видеокарта, у которой невозможно увеличить объем имеющейся видеопамяти.
Если установленный в ПК графический адаптер является встроенным или по каким-либо причинам не получается определить это, переходите к следующему разделу.
ШАГ 1: зачем это нужно
Вообще, если у вас все корректно работает, нет притормаживаний, ничего не зависает и не вылетает с ошибками — то вам, скорее всего, это и не нужно.
Однако, есть ситуации, когда без этого никак:
- низкая производительность видеокарты в играх: обратите внимание на скрин ниже (👇). Vega 11 при видеопамяти в 512 МБ работает раза в 2-3 медленнее, чем при 1024 МБ! (3D Mark). Кстати, если увеличить видеопамять с 1024 МБ до 2048 МБ — прирост в производительности будет уже далеко не такой большой, всего 2-3%;
- при ошибках во время запуска игр : некоторые приложения проверяют размер доступной видеопамяти, и если ее не хватает — вылетают с ошибкой (даже в том случае, когда интегрированная карта смогла бы потянуть игру);
- если у вас мало ОЗУ и видеокарта "оттяпала" слишком много памяти (в этом случае требуется вручную уменьшить кол-во выделяемой памяти, т.е. сделать обратную операцию).
3DMark Sky Driver (8GB Ram, dual) — производительность в зависимости от выделенной памяти для интегрированной видеокарты AMD Ryzen Vega 11 (Ryzen 5 2400G)
Примечание!
👉 Если у вас количество ОЗУ 8 ГБ (и более) — то большинство современных материнских плат по умолчанию устанавливают для встроенной видеокарты номинальные 1024 МБ (которых пока достаточно для норм. работы).
👉 Не могу не отметить, что если у вас на борту меньше 6 ГБ ОЗУ — то выставлять для интегрированной карты больше 1 ГБ памяти крайне не рекомендуется! Это отрицательно сказывается на общей производительности ПК/ноутбука.
Увеличение выделенного видео RAM в Windows 10
Далее мы объясним, как изменить объем видеопамяти в вашей системе Windows 10. Вы можете перераспределить системную оперативную память как выделенную видеопамять на ПК с Windows либо через настройки BIOS, либо через настройки реестра.
Увеличиваем объем видеопамяти через BIOS
Первое, что требуется сделать — войти в пользовательский интерфейс (настройки) BIOS. На большинстве компьютеров это делается следующим образом:
- Выключите, а затем вновь включите компьютер.
- Как только на экране появится информация POST (текст на черном фоне), нажимайте на клавишу "F2", "F12" или "Delete". Это стандартные клавиши, служащие для запуска пользовательского интерфейса BIOS. Но многие производители ноутбуков и материнских плат могут изменять клавиши для входа в настройки BIOS. Информацию об этом можно почитать в разделе поддержки на сайте производителя техники.
- Если все прошло хорошо, пользовательский интерфейс BIOS будет запущен.
Далее в настройках BIOS требуется найти параметр, отвечающий за распределение оперативной памяти под нужды видеоадаптера. В зависимости от модели компьютера или версии прошивки BIOS, данный параметр может иметь разные названия. Он может иметь и разное расположение в структуре пользовательского интерфейса BIOS. Например, взгляните на это изображение:
Зеленым выделено название раздела BIOS ("Advanced Chipset Setup"), в котором расположен параметр распределения ОЗУ — "Share Memory Size". По умолчанию значение этого параметра всегда — "Auto". Т.е. при работе компьютера память под нужды видеокарты будут устанавливаться в зависимости от текущей нагрузки. Но такое решение даст меньшую производительность встроенной видеокарты, чем, если бы в ее распоряжении был объем ОЗУ, к которому не имеют доступ другие приложения и даже операционная система.
Чтобы изменить объем выделенной видеопамяти, просто выставите в параметре "Share Memory Size" требуемое значение. В данном конкретном случае максимально возможный объем перераспределяемой памяти ОЗУ составляет 512 Мб, на других компьютерах эти значения могут различаться. После установки объема памяти нажмите на клавиатуре кнопку "F10" для сохранения изменений и перезагрузки компьютера. При последующем включении ПК объем видеопамяти будет установлен согласно выставленным настройкам.
В данном случае раздел называется "Chipset Configuration", а параметр, отвечающий за распределение памяти — "Graphics Aperture Size". Действия по перераспределению ОЗУ такие же, как и в предыдущем примере.
И еще один пример:
В этой версии BIOS распределение объема ОЗУ производится в разделе "Advanced BIOS Features" путем установки требуемого значения в параметре "UMA Frame Buffer Size". В этих BIOS данный параметр также может называться как "Video Memory Size" и "On-Chip Frame Buffer Size".
Анализ результатов и наиболее интересные графики
Задержки при обработке ввода от пользователя
До включения групповых политик сильнее всего на обработке ввода сказалось проигрывание локальных видеофайлов: в среднем 45 мс при рекомендованных 33 мс.
Включение отрисовки через GPU в групповых политиках стабилизировало этот показатель во всех сценариях.
Частота кадров
После включения GPU ускорения ситуация явно становится лучше, особенно в 3D тесте. Результаты двух других тестов хоть и демонстрируют улучшение, но недостаточно: провалы на графиках соответствуют визуальным "рывкам" при просмотре.
Воспроизведение "Flying Through Forest 1" (1920 x 1088, 48072 кбит/с, 9 секунд, 25 fps): от запуска к запуску на вход кодека RеmoteFX поступало либо повышенное либо пониженное количество кадров. Возможно, причина в перекодировке из формата QuickTime, "лишних" 8 пикселях ширины кадра или битрейте.
"Коста-Рика" также вызвал "проседание" FPS у RemoteFX: его проигрывание в браузере в 1080p60 ложилось на центральный процессор. Возможно, он просто не успевал перекодировать из 60fps и подготовить нужный кадр для RemoteFX.
Общие сетевые метрики
При включении GPU ускорения происходит рост сетевого трафика, который зависит от сценария теста.
Видно, что самым тяжёлым для кодека RemoteFX опять оказался тот же самый видеофайл, "Flying Through Forest 1". Первый запуск этого теста, когда наблюдается провал входящих кадров, также видим скачки трафика до 60 Мбит/с и потери до 30% - 40%.
Загрузка центрального процессора
Включение GPU ускорения практически вдвое разгружает центральный процессор, за исключением youtube-теста. И даже здесь удалось уйти от периодической 100% загрузки.
Загрузка видеокарты
Возможно, разгадка странного поведения второго ролика кроется в графике 17: входящих для RemoteFX кадров было больше, когда видеокарта была больше загружена кодированием.
Что такое VRAM
Приложения и программы с интенсивной графикой используют большое пространство системной памяти для визуализации графических данных с высоким качеством, цветом, четкостью и определением. В этих случаях ваша система может попасть в нехватку оперативной памяти и бороться за буферизацию высокоинтенсивных графических программ, так как ваша видеокарта разделяет системную память. Если вам не нужно буферизовать высококачественные видео приложения, ваш ПК работает нормально с ОЗУ. В противном случае для буферизации высококачественного визуального отображения на монитор вам понадобится специальный тип памяти, называемый V >
Видеопамять предназначена для специальной обработки видео высокой интенсивности быстрее, чем оперативная память системы. Графические карты или графический процессор используют видеопамять (VRAM), встроенную в нее для хранения изображений и видеоданных. VRAM также называется виртуальной оперативной памятью и используется как память GPU для легкой обработки графических приложений, игр, сложных текстур и 3D-графики.
В последних игр и видео, может потребоваться воспроизведение видео с разрешением 1080p или 4k, которое требует большого количества VRAM. Кроме того, VRAM обрабатывает больше пикселей для изображений с более высоким разрешением, чтобы отображать их лучше. При этом современные игры требуют более подробной детализации и точных системных требований для их запуска на вашем мониторе, а наличие недостаточного количества VRAM приведет к большой перегрузке графического процессора.
Если у вас недостаточно VRAM, вы не сможете запускать современные игры. В таком случае вам потребуется графическая карта с большими характеристиками, чтобы легко загружать сложные текстуры с изображениями в высоком разрешении.
ШАГ 2: как узнать текущий объем видеопамяти
👉 Вариант 1
Это универсальный вариант, работающий во всех популярных версиях Windows 7/8/10.
Сначала необходимо нажать сочетание кнопок Win+R — в окне "Выполнить" ввести команду dxdiag и кликнуть по OK.
Далее откроется средство диагностики DirectX — во вкладке "Экран" среди прочих характеристик устройства вы найдете размер видеопамяти (👇).
Видеопамять 1009 МБ
👉 Вариант 2
Нажать сочетание Win+i — откроется окно с параметрами Windows. Необходимо перейти в раздел "Система / дисплей" и открыть вкладку "Дополнительные параметры дисплея" .
Доп. параметры дисплея
В ней будет заветная ссылка — "Свойства видеоадаптера" .
Во вкладке "Адаптер" представлена строка "Используется видеопамяти" (в моем примере ниже - 1024 МБ).
👉 Вариант 3
Этот вариант также актуален для ОС Windows 10.
Достаточно открыть диспетчер задач (Ctrl+Alt+Del) и перейти во вкладку "Производительность" . В ней можно будет просмотреть часть свойств и характеристик видеокарты (👇).
Диспетчер задач - Windows 10
Увеличьте выделенную видеопамять на вашей видеокарте с помощью редактора реестра
В зависимости от приложений, которые вы запускаете, система автоматически регулирует необходимый объем видеопамяти. И поэтому адаптированная информация, показывающая количество VRAM, используемого на вашей видеокарте, не всегда достоверна. Однако для запуска некоторых приложений вам потребуется больше VRAM.В таком случае вы можете просто скопировать количество VRAM, чтобы заменить количество VRAM, необходимое вашей системе для запуска приложения. Вы не увеличиваете значение для реального, но вы увеличиваете количество VRAM до значения, которое будет заменять требования к памяти для запуска игры или приложения.
Выполните следующие шаги, чтобы перераспределить ОЗУ как VRAM для встроенных видеокарт Intel .
Откройте Запустить и введите regedit. Перейдите по следующему пути:
Щелкните правой кнопкой мыши папку Intel . Выберите Новый и нажмите Ключ . Назовите ключ как GMM.
Выберите новую папку GMM на левой боковой панели.
Нажмите правой кнопкой мыши в правой части окна и выберите Новый в раскрывающемся меню.
Выберите Dword (32-bit) и назовите его DedicatedSegmentSize.
Дважды нажмите на DedicatedSegmentSize и нажмите переключатель с параметром Десятичный , чтобы установить базовое значение в десятичное число.
Введите количество мегабайт ОЗУ, которое вы хотите выделить как VRAM, в значение данных . Убедитесь, что вы вводите число в диапазоне от 0 до 512.
Сохранить , чтобы применить изменения, и перезагрузить систему.
Материнские платы многих ноутбуков и стационарных компьютеров оборудуются встроенной (интегрированной) графической картой. Такое решение предполагает использование некоторой части оперативной памяти компьютера в качестве видеопамяти, выделяемой под работу видеоадаптера. В большинстве случаев материнские платы с интегрированной видеокартой обеспечивают пользователя возможностью регулировки объема ОЗУ, выделяемого под нужды обработки графики.
Видеокарта и типы памяти
При использовании GPU разработчику доступно несколько видов памяти: регистры, локальная, глобальная, разделяемая, константная и текстурная память. Каждая из этих типов памяти имеет определенное назначение, которое обуславливается её техническими параметрами (скорость работы, уровень доступа на чтение и запись). Иерархия типов памяти представлена на рис. 1.
- Регистровая память (register) является самой быстрой из всех видов. Определить количество регистров доступных GPU можно с помощью уже хорошо известной функции cudaGetDeviceProperties. Рассчитать количество регистров, доступных одной нити GPU, так же не составляет труда, для этого необходимо разделить общее число регистров на произведение количества нитей в блоке и количества блоков в гриде. Все регистры GPU 32 разрядные. В CUDA нет явных способов использования регистровой памяти, всю работу по размещению данных в регистрах берет на себя компилятор.
- Локальная память (local memory) может быть использована компилятором при большом количестве локальных переменных в какой-либо функции. По скоростным характеристикам локальная память значительно медленнее, чем регистровая. В документации от nVidia рекомендуется использовать локальную память только в самых необходимых случаях. Явных средств, позволяющих блокировать использование локальной памяти, не предусмотрено, поэтому при падении производительности стоит тщательно проанализировать код и исключить лишние локальные переменные.
- Глобальная память (global memory) – самый медленный тип памяти, из доступных GPU. Глобальные переменные можно выделить с помощью спецификатора __global__, а так же динамически, с помощью функций из семейства cudMallocXXX. Глобальная память в основном служит для хранения больших объемов данных, поступивших на device с host’а, данное перемещение осуществляется с использованием функций cudaMemcpyXXX. В алгоритмах, требующих высокой производительности, количество операций с глобальной памятью необходимо свести к минимуму.
- Разделяемая память (shared memory) относиться к быстрому типу памяти. Разделяемую память рекомендуется использовать для минимизации обращение к глобальной памяти, а так же для хранения локальных переменных функций. Адресация разделяемой памяти между нитями потока одинакова в пределах одного блока, что может быть использовано для обмена данными между потоками в пределах одного блока. Для размещения данных в разделяемой памяти используется спецификатор __shared__.
- Константная память (constant memory) является достаточно быстрой из доступных GPU. Отличительной особенностью константной памяти является возможность записи данных с хоста, но при этом в пределах GPU возможно лишь чтение из этой памяти, что и обуславливает её название. Для размещения данных в константной памяти предусмотрен спецификатор __constant__. Если необходимо использовать массив в константной памяти, то его размер необходимо указать заранее, так как динамическое выделение в отличие от глобальной памяти в константной не поддерживается. Для записи с хоста в константную память используется функция cudaMemcpyToSymbol, и для копирования с device’а на хост cudaMemcpyFromSymbol, как видно этот подход несколько отличается от подхода при работе с глобальной памятью.
- Текстурная память (texture memory), как и следует из названия, предназначена главным образом для работы с текстурами. Текстурная память имеет специфические особенности в адресации, чтении и записи данных. Более подробно о текстурной памяти я расскажу при рассмотрении вопросов обработки изображений на GPU.
Методика тестирования
Чтобы оценить эффективность использования выделенной видеокарты на облачным сервере, нужно провести две серии одинаковых тестов: до и после включения отрисовки удалённого рабочего стола на GPU.
В каждой серии выполним следующие тесты:
ввод текста + 3D BenchMark
ввод текста + просмотр локальных видеофайлов
ввод текста + просмотр youtube-ролика
Для оценки влияния теста на задержку обработки ввода от пользователя поверх основной программы открывается стандартный Блокнот и зажимается произвольная клавиша. Окно редактора на протяжении теста будет постоянной частью всех кадров, поэтому исказит результат в лучшую сторону. Чтобы снизить эффект, размер окна уменьшим до 122*156% 99% кадра будут меняться и визуально будет видно, что имитация активности пользователя работает.
В качестве тестов рекомендуется "использовать любые приложения, которые плотно работают с графикой (например, потоковое видео), приложения, использующие DirectX". Результаты первого теста, с точки зрения пользователя (частота кадров и задержка ввода), практически одинаковые. Поэтому строить графики и анализировать их нет особого смысла. Такой тест больше пригодится для диагностики RemoteFX.
Выполнялся при помощи FurMark в полноэкранном режиме.
Локальные видеофайлы воспроизводились в Windows Media Player, равёрнутом на весь экран, без установки каких-либо дополнительных кодеков, по кругу в следущем порядке:
"Ants carrying dead spider": 1920 x 1080, 10667 кбит/с, 19 секунд, 29.97 fps
"Flying Through Forest 1": 1920 x 1088, 48072 кбит/с, 9 секунд, 25 fps
Единственным критерием отбора была динамичность ролика: видеоряд должен был как можно сильнее нагрузить кодек RemoteFX. Но ролик "Flying Through Forest 1" оказался в этом плане интересной находкой: выходной FPS заметно проседал, а входной от запуска к запуску был сильно выше или ниже среднего! Его влияние на различные метрики будет заметно на графиках, которые будут ниже.
В качестве youtube-теста был выбран чудесный ролик "Коста-Рика", который проигрывался в качестве 1080p60 в браузере Firefox, режим "киоск".
Проверить количество VRAM на видеокарте
Шаг 1. Откройте "Параметры" > "Система" > "Дисплей" и справа выберите "Дополнительные параметры дисплея".
Шаг 2. В новом окне выберите "Свойства видеоадаптера для дисплея".
Шаг 3. В новом окне вы увидите тип адаптера, используемый в вашей системе, и другую графическую информацию на вкладке "Адаптер". Запомните её или сделайте скриншот , чтобы сравнить память после увеличения.
Как увеличить видеопамять: по шагам
ШАГ 3: как вручную установить размер выделения памяти под встроенную видеокарту
Через BIOS/UEFI
Только через настройки BIOS (в принципе) и можно изменить размер выделяемой памяти для интегрированной карты (в редких случаях можно попытаться "обмануть" игры через реестр).
Здесь универсальных инструкций со стрелками дать нельзя, т.к. у каждого производителя - "свой" BIOS. Но несколько характерных примеров я приведу (по ним можно будет сориентироваться!).
И так, сначала необходимо 👉 войти в BIOS (ссылка на инструкцию в помощь).
Далее нужно перейти в раздел "Configuration" (в некоторых BIOS за это отвечает раздел "Advanced" ).
Lenovo Setup Utility - главное окно
Затем нам нужно найти один из следующих параметров (прим.: в разных версиях BIOS он называется по-своему) :
- UMA Frame Buffer Size;
- iGPU Configuration;
- DVMT (Fixed Memory);
- Share Memory Size;
- Video Memory Size;
- On-Chip Frame Buffer Size.
На скриншоте ниже приведен параметр "iGPU Configuration" — необходимо отключить авто-режим!
Отключаем Auto режим
А после вручную задать параметр "UMA Frame Buffer Size" — это и есть размер выделяемой видеопамяти (в моем примере можно выбрать от 256 МБ до 2 ГБ 👇).
UMA Frame Buffer Size — ставим 2 GB
Кстати, в версии BIOS от American Megatrends для изменения выделяемой памяти — нужно во вкладке "Advanced" изменить параметр "DVMT" .
Advanced / настройки BIOS / American Megatrends
DVMT ставим на Maximum
Еще один пример для более старой версии American Megatrends см. ниже. 👇
Share Memory Size - выделение памяти видеосистеме
Разумеется, после выставления размера выделяемой памяти — не забудьте сохранить настройки (в большинстве версий BIOS - используется клавиша F10 / Save and Exit) и перезагрузить компьютер/ноутбук.
Через настройки реестра (опционально для IntelHD)
Этот способ поможет только "перехитрить" некоторые игры, которые могут вылетать с ошибками после запуска (т.к. у вас якобы недостаточно видеопамяти). Т.е. игра будет "считать", что размер памяти видеокарты у вас больше, чем есть на самом деле.
Причем, хочу отметить, что срабатывает он не всегда (но всё же, вдруг. ).
И так, для начала нужно 👉 открыть редактор реестра — нажать Win+R, и использовать команду regedit.
regedit — открыть редактор реестра
Далее в редакторе нужно создать раздел "GMM" в нижеприведенной ветке:
Создать раздел GMM
После, в разделе "GMM" создать строковый параметр с именем "DedicatedSegmentSize" (без кавычек).
Создать строковый параметр
Далее открыть его и задать значение выделяемой памяти (судя по тестам, способ актуален и работает для значений от 0 до 512).
Приложения
Заголовки столбцов содержат различные уникальные данные (id терминальной сессии или оборудования), которые будут несовпадать из-за применения групповых политик и выхода-входа на терминальный сервер. Приводим к единому виду с помощью PowerShell-скрипта:
Общая ось X на все графики: метрики тестов располагаются строго друг под другом - удобно сопоставлять разные метрики между собой.
Продолжение истории будет на следующей неделе. Спасибо за внимание!
Что ещё интересного есть в блоге Cloud4Y
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.
В процессе работы с CUDA я практически не касался вопросов об использовании памяти видеокарты. Настало время убрать этот пробел.
Так как тема весьма объемная, то я решил разделить её на несколько частей. В этой части я расскажу об основных видах памяти, доступных на видеокарте и приведу пример, как влияет выбор типа памяти на производительность вычислений на GPU.
Что дальше
Так как на этом этапе тесты проводились для одной сессии и при включении лишь рекомендованных настроек, то далее имеет смысл протестировать производительность:
при одновременной работе нескольких пользователей
при включении в групповых политиках различных дополнительных настроек кодека
Рекомендация по тестированию взята из хоть и старого, но очень подробного описания RemoteFX
Как сделать работу с Microsoft Remote Desktop лучше. Ветка комментариев про UDP, TCP, потери и т.д. В самой статье есть ссылки на спецификации мультитранспортного расширения для протокола RDP
Заключение
В процессе тестирования я использовал матрицы размерностью 2048 * 1536= 3145728 элементов и 20 итераций в нагрузочных циклах. После результатов замеров у меня получились следующие результаты (рис. 2).
Рис. 2. Время расчетов. (меньше –лучше).
Как видно, GPU версия с разделяемой памятью выполняется почти в 20 раз быстрее, чем версия на CPU. Так же стоит отметить, что при использовании разделяемой памяти расчет выполняется примерно в 4 раза быстрее, чем без неё.
В своем примере я не учитываю время копирования данных с хоста на девайс и обратно, но в реальных приложениях их так же необходимо брать в расчет. Количество перемещений данных между CPU и GPU по-возможности необходимо свести к минимуму.
P.S. Надеюсь, вам понравился прирост производительности, который можно получить с помощью GPU.
ВНИЗУ МНОГО ВОДЫ! МНОГО ТЕКСТА! для детального погружения в вопрос!
Сейчас коротко о сути.
Новая видеокарта.
В простое 0. Всё норм ОК.
Запускаю игру. Начинает скакать график загруженности процессора видеокарты!
Верх вниз вверх вниз каждую. 1-2 секунды. 0-100-0-100-0-100.
Питание видеокарты тоже плавает от 90 - до 125 в разных играх по разному
чужой скрин с просторов сети
НИЖЕ ВСЕ НАЧАЛИ ПИСАТЬ ДА ЛАДНО ЧЕЛ ЭТО НОРМАЛЬНО.
НЕТ.
ВОТ НОРМАЛЬНО!
А вот это отклонение
.
Видеокарта Sapphire AMD Radeon RX 570 NITRO+ OC [1.
Знакомтесь. Виновник торжества.
Купили 3 дня назад.
Сразу как приобрелась и воткнулась обратил внимание что очень ярко баланс белого. открываешь мой компьютер и прям светиться. Очень белый - белый цвет. В сравнении со старой видяхой. Прям дичь как ярко аж раздражает. но мы тут не из-за этого.
коротко о компе
fx6300 (Да! очень древний очень конченный я в курсе мы не об этом)
8 Гб озу
Блок питания корсар 550 W с двумя 8 пиновыми кабелями питания видеокарты. так что видеокарта запитана от блока питания без переходников
У меня видяха торчит в pci-e 2.0
Во время игр сильно скачет загрузка ГП от 0% до 100%.
График питания видеокарты тоже плавает от 90 до 125.
СРАЗУ ХОЧУ ОТМЕТИТЬ ПРИ ОБРЕЛОСЬ 2 экземпляра этой видеокарты.
У меня и у друга. Одинаковые. Проблемы тоже одинаковые. Системы в остальном абсолютно разные
У меня амд у него интел
У меня 8 гиг озу у него 16 гиг озу.
И ещё очень важный момент у меня pci-e 2.0 у него pci-e 3.0
В интернете людей с такой проблемой тысячи. Толковых решений нет.
Кто-то говорит что дело в MSI Afterbuner. НЕТ НЕ В НЁМ. Проверял через FPS Monitor и через родной драйвер alt+R.
Даже через родной драйвер показывает пики 0-100%.
В разных играх интенсивность пиков различается. В DIVISION2 много резких частых дерзких. В MetroEx чуть получше не такие густые пики.
В FURMARk всё идеально. ВОТ ВСЁ ИДЕАЛЬНО ПОКАЗЫВАЕТ. Ровная нагрузка. Ровное питание видеокарты. Ровный FPS.
Как это отражается на играх? ну сложно сказать. не так очевидно.
WOT
Зашёл в WOT. Загрузилась карта идёт отсчёт до начала боя 10 сек. 120fps. начинается бой. я на светляке летаю в центре карты. 90-105 в зависимости куда смотришь. не чувствуется бешеных скачков.
На ультра 40-50 fps. фпс скачет 5-7 фпс почти постоянно. но рывков вроде бы не заметил. вроде как плавно(но это не точно)
Питание видеокарты держится больше чем в DIVISION 2 в районе 115-125 вт.
Вот тут всё веселей. включил все ядра процессора CPU. загрузка процессора скакала 70-90. не знаю как должно было быть. но все ядра одновременно загружены и на всех ядрах скакало по разному от 70 до 90.
Ещё питание видеокарты от 90 до 102 - 115 плавненько так бегало туда сюда в графике, без рывков в зависимости от сцены разные улицы разное потребление.
Сама игра ну 45-50 фпс тоже скакал. очевидных рывков визуально не наблюдал
Final Fantasy 15 benchMark
Всё те же рывки в графическом процессоре. Но ещё странность ОЗУ жрало 4 гига хотя у меня 8.
У кента 16 стоит и во время теста жрало 6. наверно скорее с объёмом связано чем с данной проблемой
В всё том же msi aftbur есть пресловутая галочка Unified GPU usage/// использовать универсальный что-то там.
Если её поставить ДА! в msi пики визуально пропадают а загрузка GP граф. проц. становиться 60 % НО. НО!
Вроде бы начинает врать по загруженности видеопамяти. Проверю ещё раз уточню.
Но в FPS Monitor нет такой галочки. В родном оверлее от драйвера amd нет такой галочки.
чужой скрин с просторов сети
Доброго времени!
В последнее время снискали большую популярность интегрированные (их еще называют встроенными ) видеокарты IntelHD, Intel Iris Xe, и AMD Ryzen Vega. Последних версий уже с лихвой хватает для многих не слишком требовательных игр (что, конечно, радует — т.к. получается хорошая такая экономия на покупке внешней видеокарты)!
Однако, есть один нюанс : видеопамять для этих карт выделяется из ОЗУ (RAM). По умолчанию эта операция "выделения" происходит автоматически (без вашего участия), что не во всех случаях оптимально (например, вы можете столкнуться с ошибками во время запуска игр. ).
Разумеется, было бы не плохо вручную отрегулировать выделение памяти под интегрированную карту (в большинстве случаев стоит вопрос ее увеличения ).
И так, перейдем ближе к теме.
👉 Рекомендую!
Можно ли разогнать встроенные видеокарты Intel HD и AMD Radeon? За счет чего поднять их производительность
Обработка данных и построение графиков
Файлы журналов - blg - имеют двоичный формат: легко открываются в родной программе, графики всех счётчиков на одной шкале, можно выключать/включать/масштабировать/etc. Но чтобы работать с данными из нескольких файлов, нужно другое решение.
Сначала конвертируем двоичные файлы в csv (см. Приложение) с помощью стандартной утилиты reglog и очистим их заголовки (см. Приложение).
Затем в Jupiter -блокноте при помощи библиотек pandas и matplotlib прочитаем csv (см. Приложение, Jupiter Notebook: импорт) и построим графики (см. Приложение, Jupiter Notebook: одна метрика — одна диаграмма).
Зачем вам VRAM?
Если у вас недостаточно VRAM, вы не сможете запускать современные игры. В таком случае вам потребуется видеокарта с большим количеством видеопамяти. Чтобы легко загружать сложные текстуры с изображениями высокого разрешения, вам может потребоваться увеличить объем выделенной видеопамяти на вашей видеокарте.
Пример использования разделяемой памяти
Чуть выше я вкратце рассказал о различных типах памяти, которые доступны при программировании GPU. Теперь я хочу привести пример использования разделяемой памяти при операции транспонирования матрицы.
Перед тем, как приступить к написанию основного кода, приведу небольшой способ отладки. Как известно, функции из CUDA runtime API могут возвращать различные коды ошибок, но в предыдущий раз я ни как это не учитывал. Чтобы упростить себе жизнь можно использовать следующий макрос для отлова ошибок:
Как видно, в случае, если определена переменная среды CUDA_DEBUG, происходит проверка кода ошибки и выводиться информация о файле и строке, где она произошла. Эту переменную можно включить при компиляции под отладку и отключить при компиляции под релиз.
Приступаем к основной задаче.
Для того чтобы увидеть, как влияет использование разделяемой памяти на скорость вычислений, так же следует написать функцию, которая будет использовать только глобальную память.
Пишем эту функцию:
// Функция транспонирования матрицы без использования разделяемой памяти
//
// inputMatrix - указатель на исходную матрицу
// outputMatrix - указатель на матрицу результат
// width - ширина исходной матрицы (она же высота матрицы-результата)
// height - высота исходной матрицы (она же ширина матрицы-результата)
//
__global__ void transposeMatrixSlow( float * inputMatrix, float * outputMatrix, int width, int height)
int xIndex = blockDim.x * blockIdx.x + threadIdx.x;
int yIndex = blockDim.y * blockIdx.y + threadIdx.y;
if ((xIndex < width) && (yIndex < height))
//Линейный индекс элемента строки исходной матрицы
int inputIdx = xIndex + width * yIndex;
//Линейный индекс элемента столбца матрицы-результата
int outputIdx = yIndex + height * xIndex;
outputMatrix[outputIdx] = inputMatrix[inputIdx];
>
>
* This source code was highlighted with Source Code Highlighter .
Данная функция просто копирует строки исходной матрицы в столбцы матрицы-результата. Единственный сложный момент – это определение индексов элементов матриц, здесь необходимо помнить, что при вызове ядра может быть использованы различные размерности блоков и грида, для этого и используются встроенные переменные blockDim, blockIdx.
Пишем функцию транспонирования, которая использует разделяемую память:
// Функция транспонирования матрицы c использования разделяемой памяти
//
// inputMatrix - указатель на исходную матрицу
// outputMatrix - указатель на матрицу результат
// width - ширина исходной матрицы (она же высота матрицы-результата)
// height - высота исходной матрицы (она же ширина матрицы-результата)
//
__global__ void transposeMatrixFast( float * inputMatrix, float * outputMatrix, int width, int height)
__shared__ float temp[BLOCK_DIM][BLOCK_DIM];
int xIndex = blockIdx.x * blockDim.x + threadIdx.x;
int yIndex = blockIdx.y * blockDim.y + threadIdx.y;
if ((xIndex < width) && (yIndex < height))
// Линейный индекс элемента строки исходной матрицы
int idx = yIndex * width + xIndex;
//Копируем элементы исходной матрицы
temp[threadIdx.y][threadIdx.x] = inputMatrix[idx];
>
//Синхронизируем все нити в блоке
__syncthreads();
xIndex = blockIdx.y * blockDim.y + threadIdx.x;
yIndex = blockIdx.x * blockDim.x + threadIdx.y;
if ((xIndex < height) && (yIndex < width))
// Линейный индекс элемента строки исходной матрицы
int idx = yIndex * height + xIndex;
//Копируем элементы исходной матрицы
outputMatrix[idx] = temp[threadIdx.x][threadIdx.y];
>
>
* This source code was highlighted with Source Code Highlighter .
В этой функции я использую разделяемую память в виде двумерного массива.
Как уже было сказано, адресация разделяемой памяти в пределах одного блока одинакова для всех потоков, поэтому, чтобы избежать коллизий при доступе и записи, каждому элементу в массиве соответствует одна нить в блоке.
После копирования элементов исходной матрицы в буфер temp, вызывается функция __syncthreads. Эта функция синхронизирует потоки в пределах блока. Её отличие от других способов синхронизации заключаеться в том, что она выполняеться только на GPU.
В конце происходит копирование сохраненных элементов исходной матрицы в матрицу-результат, в соответствии с правилом транспонирования.
Может показаться, что эта функция должна выполняться медленне, чем её версия без разделяемой памяти, где нет никаких посредников. Но на самом деле копирование из глобальной памяти в глобальную работает значительно медленее, чем связка глобальная память – разделяемая память – глобальная память.
Хочу заметить, что проверять границы массивов матриц стоит вручную, в GPU нет аппаратных средств для слежения за границами массивов.
Ну и напоследок напишем функцию транспонирования, которая исполняется только на CPU:
// Функция транспонирования матрицы, выполняемая на CPU
__host__ void transposeMatrixCPU( float * inputMatrix, float * outputMatrix, int width, int height)
for ( int y = 0; y < height; y++)
for ( int x = 0; x < width; x++)
outputMatrix[x * height + y] = inputMatrix[y * width + x];
>
>
>
* This source code was highlighted with Source Code Highlighter .
Теперь необходимо сгенерировать данные для расчетов, скопировать их с хоста на девайс, в случае использования GPU, произвести замеры производительности и очистить ресурсы.
Так как эти этапы примерно такие же, что я описывал в предыдущий раз, то привожу этого фрагмента сразу:
__host__ int main()
<
int width = 2048; //Ширина матрицы
int height = 1536; //Высота матрицы
int matrixSize = width * height;
int byteSize = matrixSize * sizeof ( float );
//Выделяем память под матрицы на хосте
float * inputMatrix = new float [matrixSize];
float * outputMatrix = new float [matrixSize];
//Заполняем исходную матрицу данными
for ( int i = 0; i < matrixSize; i++)
inputMatrix[i] = i;
>
//Выбираем способ расчета транспонированной матрицы
printf( "Select compute mode: 1 - Slow GPU, 2 - Fast GPU, 3 - CPU\n" );
int mode;
scanf( "%i" , &mode);
//Записываем исходную матрицу в файл
printMatrixToFile( "before.txt" , inputMatrix, width, height);
if (mode == CPU) //Если используеться только CPU
<
int start = GetTickCount();
for ( int i = 0; i < ITERATIONS; i++)
transposeMatrixCPU(inputMatrix, outputMatrix, width, height);
>
//Выводим время выполнения функции на CPU (в миллиекундах)
printf ( "CPU compute time: %i\n" , GetTickCount() - start);
>
else //В случае расчета на GPU
float * devInputMatrix;
float * devOutputMatrix;
//Выделяем глобальную память для храния данных на девайсе
CUDA_CHECK_ERROR(cudaMalloc(( void **)&devInputMatrix, byteSize));
CUDA_CHECK_ERROR(cudaMalloc(( void **)&devOutputMatrix, byteSize));
//Копируем исходную матрицу с хоста на девайс
CUDA_CHECK_ERROR(cudaMemcpy(devInputMatrix, inputMatrix, byteSize, cudaMemcpyHostToDevice));
//Конфигурация запуска ядра
dim3 gridSize = dim3(width / BLOCK_DIM, height / BLOCK_DIM, 1);
dim3 blockSize = dim3(BLOCK_DIM, BLOCK_DIM, 1);
cudaEvent_t start;
cudaEvent_t stop;
//Создаем event'ы для синхронизации и замера времени работы GPU
CUDA_CHECK_ERROR(cudaEventCreate(&start));
CUDA_CHECK_ERROR(cudaEventCreate(&stop));
//Отмечаем старт расчетов на GPU
cudaEventRecord(start, 0);
if (mode == GPU_SLOW) //Используеться функция без разделяемой памяти
for ( int i = 0; i < ITERATIONS; i++)
transposeMatrixSlow>>(devInputMatrix, devOutputMatrix, width, height);
>
>
else if (mode == GPU_FAST) //Используеться функция с разделяемой памятью
for ( int i = 0; i < ITERATIONS; i++)
transposeMatrixFast>>(devInputMatrix, devOutputMatrix, width, height);
>
>
//Отмечаем окончание расчета
cudaEventRecord(stop, 0);
float time = 0;
//Синхронизируемя с моментом окончания расчетов
cudaEventSynchronize(stop);
//Рассчитываем время работы GPU
cudaEventElapsedTime(&time, start, stop);
//Выводим время расчета в консоль
printf( "GPU compute time: %.0f\n" , time);
//Копируем результат с девайса на хост
CUDA_CHECK_ERROR(cudaMemcpy(outputMatrix, devOutputMatrix, byteSize, cudaMemcpyDeviceToHost));
//
//Чистим ресурсы на видеокарте
//
//Записываем матрицу-результат в файл
printMatrixToFile( "after.txt" , outputMatrix, height, width);
//Чистим память на хосте
delete[] inputMatrix;
delete[] outputMatrix;
* This source code was highlighted with Source Code Highlighter .
В случае если расчеты выполняются только на CPU, то для замера времени расчетов используется функция GetTickCount(), которая подключается из windows.h. Для замера времени расчетов на GPU используеться функция cudaEventElapsedTime, прототип которой имеет следующий вид:
- time – указатель на float, для записи времени между event’ами start и end (в миллисекундах),
- start – хендл первого event’а,
- end – хендл второго event’а.
- cudaSuccess – в случае успеха
- cudaErrorInvalidValue – неверное значение
- cudaErrorInitializationError – ошибка инициализации
- cudaErrorPriorLaunchFailure – ошибка при предыдущем асинхронном запуске функции
- cudaErrorInvalidResourceHandle – неверный хендл event’а
Так же я записываю исходную матрицу и результат в файлы через функцию printMatrixToFile. Чтобы удостовериться, что результаты верны. Код этой функции следующий:
__host__ void printMatrixToFile( char * fileName, float * matrix, int width, int height)
FILE* file = fopen(fileName, "wt" );
for ( int y = 0; y < height; y++)
for ( int x = 0; x < width; x++)
fprintf(file, "%.0f\t" , matrix[y * width + x]);
>
fprintf(file, "\n" );
>
fclose(file);
>
* This source code was highlighted with Source Code Highlighter .
Если матрицы очень большие, то вывод данных в файлы может сильно замедлить выполнение программы.
Увеличил видеопамять, но программа/игра все равно не запускается или тормозит
У интегрированных видеокарт множество недостатков перед дискретными графическими адаптерами. Максимум, что они способны обеспечить — обработку несложной (в т.ч. и трехмерной) графики. Дело в том, что у встроенных карт отсутствует функционал, присущий внешним видеоадаптерам. Они работают не только при использовании бортовой памяти ОЗУ, но и задействует мощности центрального процессора. Все это говорит о низкой производительности интегрированных решений, но для выполнения простых задач на компьютере — это самый дешевый вариант.
Достаточный объем видеопамяти еще не говорит, что видеокарта сможет потянуть ту или иную игру или сложный графический редактор. Большую роль играют и другие характеристики, которые попросту отсутствуют у интегрированных карт. Мы не будем их перечислять, т.к. это совершенно другая тема.
О технологии RemoteFX от Майкрософт, которая повышает качество работы в режиме удалённого рабочего стола, известно давно. В интернете хватает материалов, демонстрирующих её эффективность. Но большинство оценок носят качественный характер: "вот играем в %game_name%, fps в норме", "вот запустили 3D софт, как будто локально работает! Скриншот здесь, видео там".
В данном исследовании мы разберёмся, как перейти от "попугаев" к конкретным метрикам, чтобы количественно оценить эффективность технологии и объективно сравнить её использование с обычным режимом RDP.
Кратко о RemoteFX
Конфигурация тестовой среды
Выбор показателей для измерений
Обработка данных и построение графиков
Анализ результатов и наиболее интересные графики
Задержки при обработке ввода от пользователя
Общие сетевые метрики
Загрузка центрального процессора
Переопределение групп сбора данных: _1_task_define.cmd
Принудительная остановка записи данных: _1_task_breake.cmd
Конвертация двоичных данных в CSV: blg2csv.cmd
Нормализация заголовков CSV: blg2csv.ps1
Jupiter Notebook: импорт данных
Jupiter Notebook: отрисовка одной метрики на диаграмму
Jupiter Notebook: отрисовка всех метрик на одной диаграмме
Диаграмма со всеми графиками
Выбор показателей для измерений
Качество и производительность удалённого рабочего стола нужно оценить с точки зрения как пользователя, так и потребления облачных ресурсов. Будем собирать данные о частоте кадров отрисовки, задержках отклика на ввод данных, сетевом трафике и загрузке CPU/GPU/RAM. Метрики выбраны с учётом официальных рекомендаций по диагностике.
Замеры выполним с помощью стандартного средства Системный монитор . Для этого на каждый тест определим свой сборщик данных, который в течении двух минут будет каждую секунду фиксировать в двоичном blg-файле журнала показания счётчиков:
\Графика RemoteFX(*)\Качество кадра
\Графика RemoteFX(*)\Исходящих кадров в секунду
\Графика RemoteFX(*)\Среднее время кодирования
\Графика RemoteFX(*)\Коэффициент сжатия графических данных
\Графика RemoteFX(*)\Пропущено кадров в секунду — у сервера недостаточно ресурсов
\Графика RemoteFX(*)\Пропущено кадров в секунду — недостаточно сетевых ресурсов
\Графика RemoteFX(*)\Пропущено кадров в секунду — у клиента недостаточно ресурсов
\Задержка ввода данных пользователем на сеанс(Max)\Максимальная задержка ввода
\Сведения о процессоре(_Total)\% загруженности процессора
\NVIDIA GPU(*)\% Video Decoder Usage
\NVIDIA GPU(*)\% Video Encoder Usage
\NVIDIA GPU(*)\% GPU Memory Usage
\NVIDIA GPU(*)\% GPU Usage
\NVIDIA GPU(*)\% FB Usage
\Сеть RemoteFX(*)\Общая скорость отправки
\Сеть RemoteFX(*)\Общая скорость приема
\Сеть RemoteFX(*)\Скорость отправки TCP-данных
\Сеть RemoteFX(*)\Скорость отправки UDP-данных
\Сеть RemoteFX(*)\Общая скорость приема
\Сеть RemoteFX(*)\Скорость получения TCP-данных
\Сеть RemoteFX(*)\Скорость получения UDP-данных
\Сеть RemoteFX(*)\Пропускная способность текущего TCP-подключения
\Сеть RemoteFX(*)\Пропускная способность текущего UDP-подключения
\Память\% использования выделенной памяти
PS. По непонятной причине данные по оперативной памяти не сохранялись в журнал при выполнении задания группы сбора, хотя "вживую" Системный монитор нормально строил графики по обоим показателям. Сброс кэша счётчиков не помог.
Чем посвящен VRAM
Приложения и программы, интенсивно использующие графику, используют большой объем системной памяти для отображения графических данных с высоким качеством, цветом, четкостью и четкостью на дисплее. В этих случаях ваша система может столкнуться с нехваткой оперативной памяти и из-за проблем с буферизацией графических программ высокой интенсивности, поскольку ваша видеокарта разделяет системную память. Если вам не нужно буферизовать высококачественные видеоприложения, ваш компьютер нормально работает с оперативной памятью. В противном случае для буферизации высококачественного визуального дисплея на системном мониторе вам потребуется специальный тип памяти, называемый видеопамять (VRAM) .
Видеопамять предназначена для специальной обработки видео высокой интенсивности быстрее, чем системная память. Видеокарты или графические процессоры используют встроенную на нем видеопамять (VRAM) для хранения изображений и видеоданных. VRAM также называется виртуальной оперативной памятью и используется в качестве памяти графического процессора для простой обработки графических приложений, игр, сложных текстур и трехмерной графики.
Однако в некоторых приложениях, таких как новейшие игры и видеоролики, может потребоваться воспроизведение видео с разрешением 1080p или 4k, для которого требуется много видеопамяти. Кроме того, VRAM обрабатывает больше пикселей для изображений с более высоким разрешением, чтобы лучше их отображать. При этом современные игры требуют повышенной детализации и точных системных требований для их запуска на системном мониторе, а недостаток VRAM приведет к большой перегрузке графического процессора.
Читайте также: