Erhöhte Interrupt-& DPC-Zeit Streaming Isoch Daten zu oder von einem IEEE 1394-Gerät

In diesem Artikel können Sie das Problem umgehen, bei dem ein erheblicher Zuwachs an Prozessorauslastung (Interrupt & DPC-Zeit) beim Streamen von isochrone-Daten an oder von einem IEEE 1394-Gerät auftritt.

Original Version des Produkts:   Windows 7 Windows Server 2008
Ursprüngliche KB-Nummer:   2450963

Problembeschreibung

Möglicherweise beobachten Sie eine deutliche Vergrößerung der Prozessorauslastung (Interrupt und DPC-Zeit) beim Streamen von isochrone-Daten zu oder von einem IEEE 1394-Gerät mit Windows 7 IEEE 1394-Busfahrer im Vergleich zu früheren Versionen des Windows IEEE 1394-Bus-Treibers.

Ursache

Unter bestimmten Bedingungen programmiert der Windows 7 IEEE 1394-Bus-Treiber (1394ohci.sys) den IEEE 1394-Host Controller zum Generieren eines Interrupts und resultierenden DPC (verzögerter Prozeduraufruf) für jedes gesendete oder empfangene isochrone-Paket. Unter ähnlichen Bedingungen programmiert der ältere Windows IEEE 1394-Bus-Treiber (ohci1394.sys und 1394bus.sys) den IEEE 1394-Host Controller, um nur einen Interrupt und eine DPC zu generieren, die am Ende jeder isochrone-Übertragung (Frame) auftreten, wie vom IEEE 1394-Gerätetreiber festgelegt, der die isochrone-Übertragungen initiiert.

Bei einer isochrone-Datenübertragung sind in der Regel mehrere isochrone-Datenpakete erforderlich, um eine sinnvolle Dateneinheit wie einen Videoframe oder ein Audiosample zu übertragen. Ein IEEE 1394-Gerätetreiber kann benachrichtigt werden, wenn eine solche sinnvolle Dateneinheit übertragen wurde, indem eine Rückruf Routine in der Isoch-deskriptorstruktur angegeben wird, die zur Beschreibung des für diese Übertragung verwendeten Puffers verwendet wird. Diese Isoch-deskriptorstruktur wird über eine e/a-Anforderung an den Microsoft Windows IEEE 1394-Bus-Treiber übermittelt REQUEST_ISOCH_ATTACH_BUFFERS und zum Programmieren des IEEE 1394-Host Controllers verwendet, um die angeforderte isochrone-Übertragung auszuführen.

Das in diesem Artikel beschriebene Problem tritt auf, wenn ein IEEE 1394-Gerätetreiber Isoch-Deskriptoren übermittelt, die jeweils einen Daten Satz eines einzelnen Pakets beschreiben, statt Isoch-Deskriptoren, die jeweils mehrere Datenpakete beschreiben, beispielsweise ein vollständiges Video-Frame-oder Audiosample. In diesem Szenario werden mehrere Isoch-Deskriptoren durch den IEEE 1394-Gerätetreiber, einen pro Paket, angefügt, und eine Rückruf Routine wird nur im letzten Isoch-Deskriptor angegeben.

Daher ruft der Windows 7 IEEE 1394-Bus-Treiber nur die angegebene Rückruf Routine auf, wenn das letzte Datenpaket übertragen wurde, aber die Programme den IEEE 1394-Host Controller, um einen Interrupt zu generieren, nachdem die von den einzelnen Isoch-Deskriptoren beschriebenen Daten übertragen wurden. Jeder Interrupt bewirkt, dass der Interrupt-Handler und DPC-Routinen im Microsoft Windows 7 IEEE 1394-Busfahrer aufgerufen werden, was zu einer erhöhten Interrupt-und DPC-Zeit führt, die in den Tools zur Leistungsüberwachung beobachtet werden kann und Auswirkungen auf die Gesamtsystem Leistung haben kann.

Problemumgehung

Dieses Problem kann möglicherweise behoben werden, indem das Verhalten des betroffenen IEEE 1394-Gerätetreibers geändert wird, um einen einzelnen Isoch-Deskriptor für jede sinnvolle Dateneinheit (beispielsweise einen Videoframe oder ein Audiobeispiel) zu übermitteln, anstatt einen Isoch-Deskriptor für jedes Datenpaket zu übermitteln. Dies würde auch die Gesamtzahl der Isoch-Deskriptoren reduzieren, die für die Übertragung der gleichen Menge an isochrone-Daten erforderlich sind, und es wird in der Regel erwartet, dass der Verarbeitungsaufwand für jede REQUEST_ISOCH_ATTACH_BUFFERS e/a-Anforderung verringert wird.

Weitere Informationen

Weitere Informationen dazu, wie IEEE 1394-Clienttreiber isochrone-Transfers an den Microsoft IEEE 1394-Bus-Treiber senden, finden Sie in den folgenden Artikeln:

Gilt für

  • 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