Как я могу прочитать используемую полосу пропускания по шине PCIe? - PullRequest
3 голосов
/ 21 сентября 2010

Я работаю над приложением потокового мультимедиа, которое при запуске передает много данных на видеокарту.Процессор делает очень мало в момент, когда данные передаются, он работает на холостом ходу при почти нулевом проценте использования.

Я хотел бы отслеживать, какие машины испытывают трудности при отправке исходных данных, а какиеможет справиться, чтобы я смог получить минимальную рекомендованную спецификацию для аппаратного обеспечения наших клиентов.

Я обнаружил, что ПК с разъемами PCIe 1.1 x16 борются с исходными данными, передаваемыми по графической карте.

Мой ПК для разработки имеет слот PCIe 2.0 x16, и у него нет проблем с обработкой большого объема данных, которые первоначально отправляются на видеокарту.

Мне нужны цифры для подтверждения (или опровержения)моя точка зрения.

Что я хотел бы, чтобы иметь возможность определить:

На каком типе слотов установлена ​​видеокарта?Какова скорость этого слота?Имя карты Gfx Версия драйвера карты Gfx

Но самое главное, поток данных через слот PCIe - например, если я могу показать, что шина PCIe перегружена данными, я могу указать на это как на горлышко бутылки.

Я знаю, что здесь также учитывается скорость системной памяти, например, данные передаются из ОЗУ по шине PCIe на графическую карту, так есть ли способ определить скорость системной памяти?

Наконец, я пишу на неуправляемом C ++, поэтому доступ к библиотекам .NET не возможен.

Ответы [ 2 ]

1 голос
/ 07 октября 2016

Для графических процессоров Nvidia вы можете попробовать использовать NvAPI_GPU_GetDynamicPstatesInfoEx:

Nvidia через драйвер GeForce предоставляет программный интерфейс («NVAPI»), который, помимо прочего, позволяет собирать производительность измерения. Для технически склонных, вот соответствующий раздел в заголовочном файле nvapi.h:

ИМЯ ФУНКЦИИ: NvAPI_GPU_GetDynamicPstatesInfoEx

ОПИСАНИЕ: этот API получает NV_GPU_DYNAMIC_PSTATES_INFO_EX структура для указанного физического графического процессора. Информация каждого домена индексируется в массиве. Например:

  • pDynamicPstatesInfo-> utilization [NVAPI_GPU_UTILIZATION_DOMAIN_GPU] содержит информацию для домена GPU. В настоящее время есть четыре домена для которых могут быть использованы пороги использования GPU и динамические P-состояния извлечено: графический движок (GPU), кадровый буфер (FB), видео движок (VID) и интерфейс шины (BUS).

Помимо этого заголовка комментария, специфическая функциональность API не документированы. Информация ниже - наша лучшая интерпретация работы, хотя это зависит от многих догадок.

  • Показатель графического движка ("GPU"), как ожидается, станет вашим узким местом в большинстве игр. Если вы не видите это на уровне или близко к 100%, что-то иначе (например, ваш процессор или подсистема памяти) ограничивает производительность.
  • Показатель кадрового буфера ("FB") интересен, если он работает как задумано. Исходя из названия, вы ожидаете, что он будет измерять графическую память использование (процент используемой памяти). Это не то, что это, хоть. Скорее всего, это использование контроллера памяти в процентах. Если это правильно, он будет измерять фактическую пропускную способность используется контроллером, который иначе недоступен как измерение любым другим способом.
  • Нас не так интересует видео движок ("VID"); Обычно он не используется в играх и обычно фиксирует 0%. Вы хотите видеть перемещение диска только в том случае, если вы кодируете видео через ShadowPlay или стекает на щит.
  • Метрика интерфейса шины («BUS») относится к использованию контроллера PCIe , опять же, в процентах. Соответствующее измерение, который вы можете отследить в EVGA PrecisionX и MSI Afterburner, называется "Использование шины графического процессора".

Мы попросили Nvidia пролить свет на внутреннюю работу NVAPI. это ответ подтвердил, что метрика FB измеряет графическую память использование полосы пропускания, но Nvidia отклонила метрику BUS как "рассмотренную быть ненадежным и, следовательно, не использоваться внутри ".

Мы спросили AMD, есть ли у нее какой-либо API или функция, которая допускает аналогичные измерения. После внутренней проверки представители компании подтвердили, что не сделали. Столько, сколько мы хотели бы, мы невозможно провести аналогичные тесты на оборудовании AMD.

1 голос
/ 21 сентября 2010

Вы получаете ошибки, толкающие ваши огромные объемы данных, или вас "просто" беспокоит медленная скорость?

Я сомневаюсь, что есть какой-либо простой способ контролировать использование пропускной способности PCI-e, если это вообще возможно. Но должна быть возможность запрашивать тип шины, к которой видеоадаптер подключен через WMI и / или SetupAPI - у меня нет личного опыта или полезных ссылок, извините.

...