2010-09-21 4 views
3

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

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

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

У моего компьютера разработки есть слот PCIe 2.0 x16, и у него нет проблем с копированием большого количества данных, которые первоначально были перенесены на графическую карту.

Мне нужны цифры, чтобы доказать (или опровергнуть) мою мысль.

То, что я хотел бы, чтобы быть в состоянии определить:

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

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

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

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

ответ

1

Получаете ли вы ошибки, подталкивающие ваши огромные объемы данных, или вы просто «обеспокоены» медленной скоростью?

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

+0

Ошибок нет, потоковое видео просто останавливается и заикается. – 2010-09-21 10:16:08

+1

кажется, что нет возможности отслеживать использование полосы пропускания PCIe ... – 2011-02-15 12:23:10

0

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

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

FUNCTION ИМЯ: NvAPI_GPU_GetDynamicPstatesInfoEx

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

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

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

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

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

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