Maximale Interrupts pro Sekunde bei Windows XP?

OP #754109
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?
#754129
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
OP #754165
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.
#754208
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...
OP #754217
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.
OP #754263
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.
Gast #754418
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?
OP #754432
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.
Gast #754804
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
#754807
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.
OP #754818
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.
Gast #755023
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?)?
OP #755043
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.
Gast #755093
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.
OP #755135
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.
Gast #755176
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.
OP #755183
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.
Gast #755196
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.
OP #755203
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.
#755710
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...
Gast #787833
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?
OP #787860
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren