Interrupts auf Windows im Jahr 2020

In Corona-Zeiten arbeite ich von zu Hause aus. Neben meinem Gaming-PC in seinem schönen PowerMac-G5-Gehäuse steht die Workstation mit der ich arbeite und verbrät ihre 250 Watt. Damit es nicht ganz so eintönig ist, spielen meine Boxen im Hintergrund über den Gaming-PC mit Windows 10.

Seit Tagen jedoch wird mein Musikgenuss durch kleine Knackser getrübt, die unregelmäßig alle 10 Sekunden bis mehrere Minuten auftreten. Solche Drop-Outs sind nicht nur etwas störend, sondern höchst nervig. Manchmal sind sie aufdringlich, manchmal kaum merklich. Doch insbesondere wenn sie kaum hörbar sind, wundert man sich, ob die Musik, die man gerade hört, an dieser Stelle immer schon einen Sprung oder eine kleine Spitze oder Delle hatte. Nur woher kommt das Knacksen? Dazu ist noch zu sagen, dass die Boxen mit ca. 10 Meter optischem TOSLINK-Kabel an dem Ausgang meines Mainboard am Gaming-Rechner angeschlossen sind.

Eingie Tage bevor das Knacksen anfing, habe ich die Boxen auseinandergenommen und Fotos gemacht. Oh, oh, habe ich dabei etwas beschädigt? Das wäre ein teurer Anfall von Neugierde gewesen. Denn woher soll das Knacksen sonst kommen außer von defekter Elektronik, die das optische Signal verarbeitet? Das Kabel? Wohl kaum, das liegt seit einem Jahr ruhig da und das Signal fließt nur über große Biegeradien auf dem Weg zur Box. Der Rechner? Wohl kaum. Wir reden von Audio mit 96 kHz bei 24 Bit und 2 Kanälen, bei großen Puffergrößen ist dort alles sehr gemächlich. Windows? Außer Updates nichts geändert. Spotify? Ja, das aktualisiert sich dauernd. Denen traue ich alles zu.

Workaround

So seltsam das alles klingt, so seltsam ist auch die Lösung des Problems: Neustart hilft. Ja, wirklich. Das Problem tritt nämlich erst auf, nachdem der Rechner das erste Mal in den Energiesparmodus versetzt wurde.

Interrupts

Doch das kann doch nicht die Lösung sein! Ein wenig Recherche brachte seltsame Treffer zutage: Dass die Art, wie Hardware-Geräte Interrupts über PCIe zustellen eine Rolle spiele. Sehr gut fasst das mbk1969 in einem Beitrag über Interrupts in Windows zusammen. Doch ist das nicht etwas weit hergeholt? Immerhin reden wir hier von Audio, das schon mit hundert Interrupts pro Sekunde sehr zufrieden ist. Nicht Echtzeit-Audio mit Latenzen im einstelligen Millisekundenbereich, sondern von Musik-Gedudel mit 20–100 ms Latenz. Seltsamerweise hatte ich manchmal nach dem Aufwachen auch Interrupt-Stürme, die das ganze System für eine Minute schneckenlangsam brachten. Und tatsächlich: Meine NVidia-Grafikkarte und die On-Board-Soundkarte teilen sich den gleichen Interrupt, einen alten Level-Interrupt. So ein Level-Interrupt würde den Interrupt-Sturm erklären und die Aussetzer: Wir er nicht gelöscht, löst er immer wieder einen IRQ aus. Grafikkarte und Soundkarte auf dem gleichen IRQ schien mir auch nicht so ideal.

Besagter mbk1969 hat ein Programm geschrieben, womit das Umnschalten von Level-IRQ auf MSI (PCIe-Interrupt-Nachricht, eindeutig pro Gerät) zu ein Klick und Neustart reduziert wird. NVidia-Chips können das schon lange, die Soundkarte sicher auch. Also die drei Häkchen gesetzt (integrierte Soundkarte, Grafikkarte, Audio-Port der Grafikkarte für Audio über HDMI):

Häkchen gesetzt, neu gestartet

Häkchen gesetzt, neu gestartet

Nach einem Neustart lief alles (puh). Nachdem ich den Rechner ein paar Mal in den Energiesparmodus versetzt hatte, lief immer noch alles. Und zwar ohne Aussetzer!

Fazit

So seltsam es klingt, aber einerseits ist NVidia bei Consumer-Grafikkarten extrem konservativ und aktiviert MSI nicht, andererseits ist mein Mainboard seltsam konfiguriert, sodass sie die Grafikkarte und der Soundchip ohne Not den gleichen Interrupt geteilt haben. Das plus vermutlich sehr seltsames Verhalten der Grafikkarte haben dann dazu geführt, dass es Aussetzer gab. Leider setzt der NVidia-Treiber die MSI-Einstellung bei jeder Aktualisierung zurück.

Das Umstellen von Level-Interrupt auf MSI half. Nun hat jedes Gerät seinen eigenen Interrupt und die Aussetzer sind weg.

MSI_util_v2

Anbei noch das tolle MSI_util_v2 von mbk1969, sollte das Original einmal verschwinden:

MSI_util_v2.zip, MD5 566495427f95f14d327aa4c9634cbef6