Aumento de la interrupción & streaming de datos de Isoch en tiempo DPC hacia o desde un dispositivo IEEE 1394

Este artículo le ayuda a solucionar el problema por el que se produce un aumento significativo del uso del procesador (interrupción & tiempo de DPC) mientras se transmiten datos isocronos hacia o desde un dispositivo IEEE 1394.

Versión original del producto: Windows 7, Windows Server 2008
Número de KB original: 2450963

Síntomas

Puede observar un aumento significativo en el uso del procesador (interrupción y tiempo de DPC) al transmitir datos isocronos hacia o desde un dispositivo IEEE 1394 con el controlador de bus de Windows 7 IEEE 1394, en comparación con las versiones anteriores del controlador de bus de Windows IEEE 1394.

Causa

En determinadas condiciones, el controlador de bus IEEE 1394 de Windows 7 (1394ohci.sys) programa el controlador de host IEEE 1394 para generar una interrupción y DPC resultante (llamada a procedimiento diferido) para cada paquete isocrono enviado o recibido. En condiciones similares, el controlador de bus heredado de Windows IEEE 1394 (ohci1394.sys y 1394bus.sys) programa el controlador de host IEEE 1394 para que solo genere una interrupción y DPC que se produzca al final de cada transferencia isocrónica (fotograma), tal como lo designa el controlador de dispositivo IEEE 1394 que inicia las transferencias de Isochronous.

Una transferencia de datos isocrónica normalmente requiere varios paquetes de datos isócronos para transferir una unidad significativa de datos, como un fotograma de vídeo o una muestra de audio. Se puede notificar a un controlador de dispositivo IEEE 1394 cuando se ha transferido una unidad de datos tan significativa especificando una rutina de devolución de llamada en la estructura Descriptor de Isoch que se usa para describir el búfer usado para esta transferencia. Esta estructura descriptor de Isoch se envía al controlador de bus IEEE 1394 de Microsoft Windows a través de una REQUEST_ISOCH_ATTACH_BUFFERS solicitud de E/S y se usa para programar el controlador host IEEE 1394 para realizar la transferencia isocrónica solicitada.

El problema descrito en este artículo se produce cuando un controlador de dispositivo IEEE 1394 envía descriptores de Isoch que describen cada uno el valor de datos de un único paquete, en lugar de descriptores de Isoch que describen varios paquetes de datos, como un fotograma de vídeo completo o una muestra de audio. En este escenario, el controlador de dispositivo IEEE 1394 adjunta varios descriptores de Isoch, uno por paquete, y solo se especifica una rutina de devolución de llamada en el último descriptor de Isoch.

Como resultado, el controlador de bus IEEE 1394 de Windows 7 solo invoca la rutina de devolución de llamada especificada cuando se ha transferido el último paquete de datos, pero programa el controlador de host IEEE 1394 para generar una interrupción una vez que se han transferido los datos descritos por cada descriptor de Isoch. Cada interrupción hace que se invoquen el controlador de interrupción y las rutinas DPC del controlador de bus de Microsoft Windows 7 IEEE 1394, lo que da lugar a un aumento del tiempo de interrupción y DPC, que se puede observar en las herramientas de supervisión del rendimiento y puede afectar al rendimiento general del sistema.

Solución alternativa

Puede ser posible solucionar este problema cambiando el comportamiento del controlador de dispositivo IEEE 1394 afectado para enviar un único descriptor de Isoch para cada unidad de datos significativa, como un fotograma de vídeo o una muestra de audio, en lugar de enviar un Descriptor de Isoch para cada paquete de datos. Esto también reduciría el número total de descriptores de Isoch necesarios para transferir la misma cantidad de datos isocronos y, por lo general, se espera que reduzca la sobrecarga de procesamiento asociada a cada REQUEST_ISOCH_ATTACH_BUFFERS solicitud de E/S.

Más información

Para obtener más información sobre cómo los controladores cliente de IEEE 1394 envían transferencias isocrónicas al controlador de bus de Microsoft IEEE 1394, consulte los artículos siguientes:

Se aplica a

  • Windows 7 Ultimate
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Home Premium
  • Windows 7 Home Basic
  • Windows 7 Starter
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter