Os problemas de latência do DPC são aprimorados com vários núcleos?

1

Verificador de latência do DPC diz

A device driver cannot process data immediately in its interrupt routine. It has to schedule a Deferred Procedure Call (DPC) which basically is a callback routine that will be called by the operating system as soon as possible. ... There is one DPC queue per CPU available in the system. ... If any DPC runs for an excessive amount of time then other DPCs will be delayed by that amount of time. ... Unfortunately, many existing device drivers do not conform to this advice. Such drivers spend an excessive amount of time in their DPC routines, causing an exceptional large latency for any other driver's DPCs. For a device driver that handles data streams in real-time it is crucial that a DPC scheduled from its interrupt routine is executed before the hardware issues the next interrupt. If the DPC is delayed and runs after the next interrupt occurred, typically a hardware buffer overrun occurs and the flow of data is interrupted. A drop-out occurs.

Resposta de estouro de pilha diz:

A DPC is queued into the global DPC queue, and can be run on any processor. So if you really have a long (-running) DPC on one core, the other core is free to process another. So any timing information is really dependent on the count of processors you have and how many things get currently executed concurrently. So on multicore processors these numbers might vary widely.

Em geral, o que eu li é que um dual core rápido é melhor que um quad core mais lento para áudio, já que a maioria dos aplicativos de áudio não é otimizada para usar mais de um núcleo.

Mas em computadores modernos, parece que os problemas de DPC são gargalos para a produção de áudio. Isso significa que um processador quad core seria melhor que um dual core? Outros núcleos livres poderiam, teoricamente, manipular os DPCs de áudio enquanto um é bloqueado por uma rotina de DPC Wi-Fi. A fila é compartilhada entre os núcleos e os DPCs podem ser embaralhados para qualquer um que esteja livre? Ou há uma fila por núcleo, permitindo que um núcleo seja seqüestrado? E os núcleos virtuais?

    
por endolith 16.09.2010 / 04:32

1 resposta

0

A latência em uma chamada de procedimento adiada (DPC) é causada por um driver que leva muito tempo para executar suas tarefas.

Adicionar mais CPUs não melhorará o tempo que um driver mal escrito leva para fazer seu processamento.

    
por 06.05.2011 / 00:44