Forum: PC Hard- und Software Maximale Interrupts pro Sekunde bei Windows XP?


von Christian R. (supachris)


Lesenswert?

Wieder mal ein seltsames Problem hier:
PCI-Messkarten mit für Windows 2000 geschriebenem Treiber erzeugen 
Hardware-Interrupts, wenn sie Daten haben usw.
Unter Windows 2000 klappt das alles einwandfrei, man kann nebenbei noch 
das GBit-Ethernet bedienen. 50MByte/s über die Netzwerkkarte und etwa 
8000 Interrupts pro Sekunde von 4 solcher PCI-Messkarten. Kein Thema, 
Windows macht das locker mit, alles läuft prima.

Bei dem Versuch, die ganze Sache auf Windows XP zu portieren, passieren 
ulkige Dinge:

Die 2000 Hz Messfrequenz (also 8000 Interrupts pro Sekunde) werden nicht 
mehr erreicht. Ab etwa 900 Hz friert das komplette System ein. Maus, 
Tastatur, Netzwerk, alles tot. Bleibt alles stehen und kommt auch nach 
Stunden nicht wieder.
Macht man jetzt gleichzeitig noch Netzwerk-Verkehr, kann man mit den 
Messkarten gar nix mehr machen, selbst bei langsamsten Messfrequenzen 
schmiert das System völlig ab. Kein BSOD, keine Fehlermeldung, nix. 
Friert einfach ein.

Leider haben wir keinen Treiber-Experten mehr im Haus. Der, der den 
Treiber damals geschrieben und ausgiebig unter 2000 getestet hat, weiß 
auch erst mal nix genaues.

Weiß jemand, ob Windows XP mit so vielen Interrupts pro Sekunde nicht 
klar kommt?

von Kai G. (runtimeterror)


Lesenswert?

Hängt immer auch davon ab, wie lange die Interruptroutine den Rechner 
lahmlegt. Ließ sich das nicht über DMA lösen?

Die Frage ist ja, ob der Bus oder die CPU der Flaschenhals ist. Wenn der 
Bus schuld ist, kann das Betriebssystem nicht viel damit zu tun haben 
(außer evtl. die Chipsatztreiber). Wenn die CPU schuld ist, wäre DMA auf 
jeden Fall 'ne Lösung.

Gruß

Kai

von Christian R. (supachris)


Lesenswert?

Die Daten werden selbstverständlich per DMA übertragen. Von der Hardware 
kann ja kaum ein Flaschenhals sein, denn unter Windows 2000 funktioniert 
das alles prima ohne Fehler.

Die Netzwerkkarte hängt an PCI-Xpress, ist also ein anderer Bus. Das 
System ist ein Industrie-PC auf einer PCI-Backplane mit CPU-Karte (Core 
2 Duo, 2,66GHz, 4GB RAM und Dual GBit-Ethernet an PCI-Xpress)

Irgendwie scheint ja XP den Interrupt-Controller anders zu bedienen als 
2000....sehr komisch.

von Kai G. (runtimeterror)


Lesenswert?

Wenn ich das richtig verstehe wird für jede einzelne Messung ein 
Interrupt ausgelöst - widerspricht das nicht dem DMA-Konzept?

Vielleicht liegt das Problem ja auch in der weiteren Verarbeitung der 
ankommenden Daten - z.B. dass sie nicht schnell genug 
weggeschrieben/komprimiert werden können.

Was sagt denn der Taskmanager zur CPU-Auslastung, wenn du dich dem 
kritischen Wert näherst? Insbesondere auch das Verhältnis zw. 
Gesamtauslastung und Kernel-Zeiten.

Kann im Moment auch nicht mehr machen als raten...

von Christian R. (supachris)


Lesenswert?

DIe Messdaten werden zuerst in einem FIFO auf der PCI Karte gespeichert, 
anschließend bekommt das System einen Interrupt, und holt darauf hin die 
Daten per DMA ab.

Taskmanager ist noch lange nicht bei 100%, in der Nähe der 
Belastungsgrenze so ca 20...30 Prozent. Ohne andere Interrupts geht das 
ja gerade noch, aber mit Interrupts von der Netzwerkkarte ist dann Ruhe, 
da lässt sich auch kein Taskmanager mehr angucken. Die CPU ist aber 
vorher nicht ausgelastet, das muss irgendwo im Interrupt-Controller oder 
sowas liegen.

Wir raten auch nur. Wie gesagt, wir haben hier keinen Treiber-Spezi.

von Kai G. (runtimeterror)


Lesenswert?

Teilen sich die PCI-Karten evtl. denselben IRQ? Oder ist der 
Aufbau/System/Ausstattung mit der vom ursprünglichen Win2000-System 
identisch?

von Christian R. (supachris)


Lesenswert?

Es ist die gleiche Hardware-Konfig, nur das Betriebssystem per 
Wechselfestplatte geändert. IRQ teilen sie sich auf beiden Systemen 
(sogar exakt gleich). Jedoch nicht die Messkarten untereinander, sondern 
immer mal eine Messkarte mit einem anderen Systemgerät. IRQ-Sharing wird 
sich eh nicht vermeiden lassen, da der Rechner 16 PCI-Slots hat und auch 
in bestimmten Fällen mit 16 dieser Messkarten bestückt wird. Aber es 
läuft ja schon mit 4 Karten nicht. Sogar bei einer Karte bekommt man das 
System zum Stillstand.

Vielleicht hilft es ja, den Treiber nochmal mit einem neueren WDK zu 
übersetzen. Das müssen wir wohl mal besorgen.

von *.* (Gast)


Lesenswert?

Vielleicht kommt ja auch der Treiber der Netzwerkkarte damit nicht klar.

von JojoS (Gast)


Lesenswert?

vielleicht mal mit dem Perfmon analysieren, da werden ja die 
Interrupts/s, % Rechenzeit in Ints und DPCs usw. angezeigt.
In den Systemeigenschaften könnte man noch unter 
Erweitert/Systemleistung/Erweitert mal auf optimale Leistung für 
Hintergrunddienste umstellen.
Oder mal die Netzwerkverbindung deaktieren? Oder unnötige 
Protokolle/Dienste von der Netzwerkverbindung abklemmen?

von Christian R. (supachris)


Lesenswert?

Perfmon werde ich morgen mal testen. Netzwerkverbindung kann nicht 
deaktiviert werden, das System läuft dann bei seinem Einsatzzweck ohne 
Monitor und wird vom netzwerk aus bedient, und die Daten werden mit der 
maximalen Netzwerk-Geschwindigkeit weggestreamt. Protokolle sind nur 
TCP/IP drauf. Hintergrunddienste hat auch nix gebracht.

Vermutlich liegt das Problem doch am Windows 2000 Treiber der 
Mess-Karte, denn ich hab vorhin mal noch dieses Verifier Tool gestartet, 
der Treiber hat einen IO Error (WDM Error 21f) erzeugt. Also muss da mal 
jemand ran, der Ahnung von der Sache hat.

Jetzt haben wir erst mal Win 2k im Einsatz, da geht das netzwerk eh 
schneller, ist sogar dahingehend auch besser.

von Uhu U. (uhu)


Lesenswert?

Ich würde auf Probleme mit dem Kartentreiber tippen - einfrierende 
Systeme gehen nicht selten auf sowas zurück.

Installiere doch mal den MS Driver Verifier auf der Kiste - der wird 
schon maulen, wenn da der Wurm drin ist...

von Christian R. (supachris)


Lesenswert?

Hab ich ja getan, siehe letztes Posting. Und er hat mir ja gesagt, dass 
der Treiber nicht OK ist. Nun muss ich jemanden finden, der sich damit 
auskennt, oder mich selber in Treiber-Programmierung einarbeiten. Mal 
sehen.
Danke schonma für alle Tipps.

von Hellboy (Gast)


Lesenswert?

Hmm handelt es sich um zugekaufte hardware oder von euch eine 
eigenentwicklung ?

gekauft => denkt mal drüber nach das geld einem anderen unternehmen zu 
geben ...

eigen => jackpot eine treiber entwicklung am besten ohne richtige doku 
ist quasi unendlich teuer

von Uhu U. (uhu)


Lesenswert?

Christian R. wrote:
> Hab ich ja getan, siehe letztes Posting. Und er hat mir ja gesagt, dass
> der Treiber nicht OK ist.

Na ja, vor Präzision strotzen tut das nicht, was du dort abgelassen 
hast.

> Vermutlich liegt das Problem doch am Windows 2000 Treiber der
> Mess-Karte, denn ich hab vorhin mal noch dieses Verifier Tool
> gestartet, der Treiber hat einen IO Error (WDM Error 21f) erzeugt.
> Also muss da mal jemand ran, der Ahnung von der Sache hat.

Das ist mit Sicherheit kein IO Error, denn mit solchem Kleinkram gibt 
sich Driver Verifier nicht ab. Der Treiber ich nicht kompatibel zu XP 
und die Fehlermeldung gibt Auskunft, was nicht stimmt.

von Hellboy (Gast)


Lesenswert?

es gehen in jedem fall deutlich höhere messraten .... hab in dem bereich 
mal praktikum gemacht und sehr feine dinge gesehen ;)

von Kai G. (runtimeterror)


Lesenswert?

>eigen => jackpot eine treiber entwicklung am besten ohne richtige doku
>ist quasi unendlich teuer

ACK - hab's mir verkniffen ;)

von Christian R. (supachris)


Lesenswert?

Naja, ich bin eben erst dabei, mich da einzuarbeiten. Die PCI-Karte und 
der Treiber wurde von "uns" vor einigen Jahren entwickelt. Ist auch 
alles gut dokumentiert worden, der Quelltext steht mir auch zur 
Verfügung. Nur ist der Treiber-Entwickler schon lange nicht mehr bei 
uns. Also muss/darf ich jetzt herausfinden, was da nicht stimmt. 
Normalerweise schreibe ich Software für µC, sowie VHDL für FPGAs, 
höchstens mal kleine Windows-Programme, also nicht gleich schlagen.

Naja, nun kam irgendjemand auf die geniale Idee, statt Windows 2000 
könne man ja mal Windows XP einsetzen. Und ich hab den Salat jetzt.

Ich hab die verifier.exe gestartet und auf den entsprechenden Treiber 
angesetzt. Nach dem fälligen Neustart kam sofort ein Bluescreen mit:

"IO Error.... (WDM Error 21f)" und dann der Treibernahme mit der 
entsprechenden Adresse.

Naja, weiter bin ich heut nicht gekommen. Jetzt muss ich wohl zuerst mal 
das WDK besorgen und den Treiber nach VS2005 samt aktuellem WDK 
migrieren, und mich in die ganze Geschichte einarbeiten.

von Arc N. (arc)


Lesenswert?

0x21f bzw. 543 deutet normalerweise auf einen Stackfehler hin 
(ERROR_BAD_STACK).

von Christian R. (supachris)


Lesenswert?

Danke. Wo kann man da nachschauen? Hab gestern schon langegegoogelt, 
aber keine Liste gefunden.

von Timo (Gast)


Lesenswert?

Ist es überhaupt noch sinnvoll, eine Neu-Entwicklung für XP zu 
forcieren? War da nicht was mit Verkaufsstop in der Mitte diesen Jahres? 
Oder läuft auf den Kisten ein XP Embedded (wann wird das eigentlich mal 
ersetzt?)?

von Christian R. (supachris)


Lesenswert?

Windows XP soll wohl noch bis 2014 oder so unterstützt werden, ist also 
sinnvoll. Ich glaub kaum, dass sich Vista in Industrie-Anlagen 
durchsetzt. Auf dem PC läuft Windows XP Professional. Naja, jetzt 
Windows 2000. XP Embedded ist halt schwer zu konfigurieren.
Außerdem ist es ja keine neuentwicklung, lediglich der Treiber scheint 
anpassungsbedürftig.

von Timo (Gast)


Lesenswert?

Länger unterstützt wird es sicherlich (obwohl ich den von dir genannten 
Zeitraum bezweifle), aber wie ist es denn mit den Lizenzen?

Oder geht es hier nur um firmeneigene Rechner und das ist kein Produkt, 
das verkauft werden soll? Sollte das verkauft werden habt ihr ziemlich 
bald ein Problem.

von Christian R. (supachris)


Lesenswert?

Zum Support: http://www.heise.de/newsticker/meldung/86083

Und ja, das Zeug wird auch öfters mal verkauft, allerdings liefern wir 
in den meisten Fällen die Rechner mit dazu. PCs mit 16 PCI-Slots, 
redundante 1kW-Netzteilen usw. gibts ja nicht von der Stange.

Mit den Lizenzen hast du allerdings Recht, das ist eine Frechheit von 
MS. Niemand wird sich in einem Stahlwerk Vista auf einen Rechner 
installieren wollen, der 24/7 sehr performant laufen muss.

Da muss man halt notfalls Lizenzen horten. Kosten ja im Vergleich zur 
Hardware nix.

von Timo (Gast)


Lesenswert?

Okay, ich hatte mal von anderen Supportzeiten gehört, kann aber durchaus 
schon länger her sein.

>Da muss man halt notfalls Lizenzen horten. Kosten ja im Vergleich zur
>Hardware nix.

Wenn das gemacht wird, ist es ja kein Problem. Man muss nur rechtzeitig 
daran denken und es der Geschäftsleitung klar verständlich machen, dass 
mal ein ganzer Schwung Lizenzen gekauft werden muss.

von Christian R. (supachris)


Lesenswert?

Naja, das ist aber nebensächlich. Die Mess-Karten sind absolute Exoten, 
da verkaufen wir nicht viele davon. Und wenn, dann installieren wir eh 
die gesamte Prüfanlage mit allem, was dazu gehört.

Viel wichtiger ist jetzt erst mal, den Treiber wenigstens XP-Kompatibel 
zu machen. Vista kommt später. Eigentlich wollen wir die alte PCI-Karte 
eh mal durch eine mit PCI-Express ablösen, aber das wird noch eine Weile 
dauern.

von JojoS (Gast)


Lesenswert?

muß das System denn die Messwerte wieder schnell ausgeben? Die A/D 
Wandlerkarten haben doch i.d.R. onBoard Speicher um die Daten zu 
Puffern? Das OS alle halbe ms zu stören kostet schon einige Zeit.

von Christian R. (supachris)


Lesenswert?

Es muss mit den Daten rechnen. Die FIFOs auf den Karten, die die 
Messwerte (80MHz Abtastrate) puffern sind nicht besonders groß, und nach 
jeder Messung müssen die Daten an das System zur weiteren Berechnung 
geschickt werden. Das Mess- und Auswerteverfahren lässt halt nix anderes 
zu. Unter 2000 geht das ja prima, sogar noch schneller, und Netzwerk 
nebenbei, das System kommt also durchaus damit klar. Nur der Treiber ist 
wohl nicht XP-tauglich.

von Arc N. (arc)


Lesenswert?

Christian R. wrote:
> Danke. Wo kann man da nachschauen? Hab gestern schon langegegoogelt,
> aber keine Liste gefunden.

http://msdn2.microsoft.com/en-us/library/ms681381%28VS.85%29.aspx

Weitere Details gibt's afair nur im DDK bzw. aktuelleren WDK
http://www.microsoft.com/whdc/devtools/ddk/default.mspx
http://www.microsoft.com/whdc/devtools/tools/default.mspx

von Uhu U. (uhu)


Lesenswert?

W2k arbeitet noch mit dem alten NT4-Treibermodell, mit XP begann die 
Einführung des WDM (Windows Driver Model). Für die Portierung wirst du 
den Treiberrahmen wohl ziemlich umschreiben müssen.

Die beste Methode, das hinzubekommen ist, einen ähnlichen Treiber in den 
WDK-Beispielen zu suchen und dort deinen Anwendungscode einzubauen. Sieh 
dir mal das Toaster-Beispiel an...

von Sven (Gast)


Lesenswert?

@ Christian R. (supachris):

Bist Du irgendwie weitergekommen ?
Neues Treibermodell schon umgesetzt und Erfolg gehabt ?


Gruß Sven

von Christian R. (supachris)


Lesenswert?

Also der Treiber war bereits WDM-kompatibel. Das Problem konnte auf die 
fehlende Mehrprozzesor-fähigkeit des Treibers eingekreist werden. Wird 
demnächst von einem externen Treiber-Spezi behoben.

von Andreas (Gast)


Lesenswert?

>W2k arbeitet noch mit dem alten NT4-Treibermodell, mit XP begann die
>Einführung des WDM (Windows Driver Model). Für die Portierung wirst du
>den Treiberrahmen wohl ziemlich umschreiben müssen.


So ein Quark. Selbst das rotzige Windows98 arbeitet mit dem WDM. Wo hast 
Du denn die Fehlinfo her?

von Christian R. (supachris)


Lesenswert?

Jo, das hatte mich auch gewundert. naja, der Treiber war ursprünglich 
für NT4 geschrieben, wurde dann für 2000 angepasst, auf WDM. Allerdings 
klappts eben mit aktuellen Mehrkernprozessoren nicht, bei hoher 
Systemlast (viele Hardware-Interrupts) kommt offensichtlich was 
durchnander und das System steht. Müssen wir halt machen lassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.