Автоматическое тестирование задержки DPC - как? - PullRequest
4 голосов
/ 27 мая 2010

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

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

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

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

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

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

и т. Д.

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

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

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

Ответы [ 2 ]

4 голосов
/ 27 мая 2010

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

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

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

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

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

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

1 голос
/ 09 января 2018

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

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

...