2010-05-27 2 views
4

Для мультимедийных задач в режиме реального времени важна низкая латентность. Стабильное значение низкой латентности позволяет использовать компьютер для создания музыки, например.Автоматическое тестирование задержки DPC - как?

Насколько я знаю, в системах Windows есть функция задержки DPC, которая очень важна для обеспечения стабильности латентности. Вы можете больше узнать о вызовах по отложенной процедуре здесь: http://en.wikipedia.org/wiki/Deferred_Procedure_Call.

Как вы можете прочитать на Thescyon website,

Если какой-либо драйвер режима ядра в системе Windows, осуществляется ненадлежащим образом и вызывает чрезмерное латентности отложенных вызовов процедуры (ЦОДов), то, вероятно, выбывших будет происходить когда вы используете приложения для потоковой передачи аудио или видео в реальном времени.

Они предоставляют простой инструмент для проверки этого, который рисует график задержки. Если вы хотите протестировать компьютер Windows для профессионального аудио, вы должны запустить эту проверку задержки DPC и подчеркнуть компоненты, которые могут вызвать проблемы. Например, когда я тестирую ноутбуки, проверить, что происходит с задержкой, когда вы

  • переключатель беспроводной включения-выключения или использовать беспроводное соединение
  • вставить карту памяти в устройство для чтения карт памяти
  • регулировки яркость экрана (связанные с ACPI вещи могут вызвать реальный беспорядок ...)

и так далее.

Вопрос: что мне делать, если я хочу проверить это автоматически? Я хотел бы разработать инструмент, который мог бы проверить это и сгенерировать отчет, чтобы мы могли протестировать множество конфигураций за короткое время. (Мои проблемы: я не знаю, как измерять задержку DPC и как автоматизировать управление яркостью из кода и т. Д.)

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

Пожалуйста, поддержите этот вопрос, чтобы повысить осведомленность о DPC - нам нужно сообщить производителям, что это настоящая проблема для всех, кто интересуется мультимедиа в системах Windows.

ответ

4

Есть несколько проблем с вашим Вопросом.

Прежде всего, вы не можете проверить задержку DPC. Вы либо можете поставить очередь своего DPC, а затем проверить, когда он будет выполнен. Или вы можете запросить время выполнения всех/DPC (я не знаю, есть ли у вас информация о счетчике производительности для этого, или, если вам нужно выполнить профилирование по образцу).

Даже если у вас есть эта информация, это очень специфично для ситуации, в которой вы находитесь. Кроме того, существует несколько случайных факторов, которые искажают числа.

DPC помещается в очередь в глобальную очередь DPC и может работать на любом процессоре.Поэтому, если у вас действительно есть длинный (-управляющий) DPC на одном ядре, другое ядро ​​может обрабатывать другое. Таким образом, любая информация о времени действительно зависит от количества процессоров, которые у вас есть, и сколько вещей в настоящее время выполняется одновременно. Таким образом, на многоядерных процессорах эти цифры могут сильно различаться.

Даже если у вас есть информация об одном случае использования, это очень зависит от текущей ситуации в системе. Когда он подключен к (большой) сети, может быть очень много небольших ЦОД, поднятых для сетевых пакетов, которые принимаются вашим компьютером. Когда вы отключите свой компьютер (или все идут домой), этот шторм DPC внезапно прекращается.

NB: Когда у вас есть новый компьютер, ваша проблема с задержкой DPC может возникнуть из c-состояний, в которых ваш процессор спит. Процессоры Core-iX действительно быстро переходят в состояние сна, из которого они просыпаются очень медленно.

+0

Как усложнить эту проблему ... (и несколько трудно понять для меня). Из того, что вы сказали, кажется, что мы не можем сделать полностью точное тестирование таким образом. Это большая проблема, поскольку (с этой точки зрения) кажется, что вам нужно довольно много удачи, чтобы выбрать подходящую систему. В любом случае было бы неплохо иметь какой-то бенчмаркинг. – Scorchio

+0

Что относительно виртуальных ядер? – endolith

1

Также обратите внимание на http://www.resplendence.com/latencymon, так как это помогает лучше найти источник проблем.

Как указано в другом ответе, современные процессоры используют несколько усложняющих технологий, а именно разнообразные c-состояния, а также гиперпотоки.

Смежные вопросы