Как установить привязку к процессору для драйвера устройства в Windows 7?

1068
Anton

Кто-нибудь знает, как установить, на каком ядре будет работать драйвер устройства и обрабатывать его запросы на прерывание?

Ситуация:
у меня iusb3hcs.sys и acpi.sys вызывают лаги, когда моя звуковая карта обрабатывает аудио в реальном времени. Есть ли способ заставить эти два и драйвер звуковой карты работать на разных процессорных ядрах и не мешать друг другу?
Мы можем легко установить сходство и приоритет процесса, но как это сделать с помощью драйвера устройства?

И, кстати, как можно установить привязку к службе, работающей в фоновом режиме?

PS
Звуковая карта НЕ подключена к порту usb-3, драйвер которого вызывает лаги. Я могу отключить этот порт в диспетчере устройств, и он работает нормально. Однако моя мышь подключена к этому порту, и работать с тачпадом очень неудобно. Так что мне нужен порт и работающий iusb3hcs для мыши.

1
Нет; Нет способа установить сродство драйвера устройства в Windows. Ramhound 9 лет назад 0
Я не верю, что это возможно на уровне архитектуры процессора. это означало бы, что поток никогда не сможет изменить ядра, поэтому, если на ядре создано несколько потоков, они никогда не смогут работать параллельно, а вместо этого будут постоянно переключаться между контекстами. тогда какой смысл иметь несколько ядер. Нет, я считаю, что прерывания относятся к уровню сокетов или системы, поэтому они могут достигать своего потока независимо от того, где он выполняется в любую данную миллисекунду. Также обратите внимание, что MS преднамеренно снижает производительность звуковой карты при определенных сетевых операциях (а usb - сетевой стек). Frank Thomas 9 лет назад 0
По крайней мере для Win2000 было и приложение: http://searchwindowsserver.techtarget.com/tip/Set-processor-affinity-for-a-device-driver Файл даже размещен на MS ftp! Anton 9 лет назад 0
Здравствуйте @FrankThomas, можете ли вы дать мне более конкретную информацию о том, что "MS намеренно снижает производительность звуковой карты при определенных сетевых операциях"? Почему это так? Anton 9 лет назад 0
потому что они оба бегут по южному мосту, который является общим автобусом. многие материнские платы не могут одновременно поддерживать производительность гигабитной сети и воспроизведение звука 48K одновременно. Frank Thomas 9 лет назад 0
@FrankThomas: Закрыть, но прерывания не обрабатываются потоками. Когда вы работаете в ISR, вы работаете в контексте того потока, который был запущен, когда произошло прерывание. Нет переключателя контекста потока. Jamie Hanrahan 9 лет назад 0
@JamieHanrahan, поэтому, когда инструкция, выполняемая как часть потока, делает запрос DMA для данных во вторичном хранилище и делает паузу, ожидая IRQ, указывающего, что запрос DMA выполнен, вы утверждаете, что поток не получает время выполнения снова в результате IRQ? что данные из события DMA будут переданы другому не связанному потоку только потому, что он выполнялся в секунду, когда операция DMA завершена? это не сработает. и если бы не было потокового переключения контекста, в DMA не было бы никакого смысла. на самом деле не понимаю, что вы говорите. Frank Thomas 9 лет назад 0
@FrankThomas Нет. Я сказал, что нет никакого переключателя контекста потока для ISR. Скорее всего, не гарантируется выполнение в контексте потока, который запросил ввод-вывод, поскольку этот поток очень часто ожидает завершения ввода-вывода. Прерывания сами по себе не разрешают ожидание потока. Это происходит, когда драйвер вызывает из своей процедуры DPC IoCompleteRequest. (Подпрограмма DPC также не выполняется в запросе контекста потока.) Когда и на каком процессоре выполняется поток, после которого до планировщика потока. Смотрите документы WDK; особенно ищите термин "произвольный контекст потока". Jamie Hanrahan 9 лет назад 0
Страница Microsoft https://msdn.microsoft.com/en-us/library/windows/hardware/ff547969(v=vs.85).aspx гласит: «Начиная с Windows Vista, администраторы могут использовать реестр для установки политики соответствия для перерыва ". Хотя не вдавался в подробности. Vesa P. 7 лет назад 0

1 ответ на вопрос

0
Christian Winger Nyman

Да, вы можете, если ваши драйверы звуковой карты поддерживают MMCSS: «Служба планировщика мультимедийных классов». Я понятия не имею, поддерживает ли ASIO для всех драйверов это. Я видел поддержку только с драйверами RME. Если эта служба включена, вы можете с помощью таких программ, как Processes Lasso, изменять / изменять привязку для любого ядра процессора, включая гиперпоточность, для MMCSS, возможно, что программы, поддерживающие MMCSS, тоже будут работать с этим, я не пробовал. .. Это действительно работает и является одной из важных частей того, как я сделал мою систему win7 совместимой со звуком в реальном времени.

В вашем ответе не очень ясно, КАК установить эту близость. Можете ли вы отредактировать свой ответ, чтобы уточнить, как вы это настроили? Используйте форматирование и упорядоченные списки, чтобы сделать любые конкретные шаги очень ясными. music2myear 6 лет назад 1