Asio Bufferswitch Timing
-
- Aktiver Hersteller
- Beiträge: 4726
- Registriert: 23.03.2009, 15:58
- Wohnort: 33649
- Kontaktdaten:
Asio Bufferswitch Timing
Hallo zusammen, neues Jahr, neues Glück
unter Windows benötigen DACs und Soundkarten ja ihre Gerätetreiber, die im allgemeinen vom jeweiligen Hersteller mitgeliefert werden. Die Treiber sind in diesem Sinn proprietär. Was also drin steckt weiss der Anwender üblicherweise nicht. Um Unzulänglichkeiten bei Windows Sound zu umgehen wurde von Steinberg die Asio-Schnittstelle definiert, die Treiber gehen am Windows-Mixer bzw. sogar am Kernel (Hörensagen) vorbei. Insofern sind heute die Asio-Treiber i.a. beliebt und werden gern bevorzugt.
Unter Linux gibt es ALSA, da kann also ein Sachkundiger in die Quelltexte reinschauen. Allerdings sind es dann eher generische Treiber, die für die Soundkarten gelten, sie sind nicht notwendigerweise vom Hersteller optimiert.
Bleiben wir bei Windows. Linux wird hier ja bereits von anderen intensiv diskutiert, siehe Frankl's Arbeiten etc.
Wir kennen ja bei Windows nun zahlreiche Versuche die Wiedergabe zu verbessern. Reduzierung von Prozessen und Diensten, Tools wie Fidelizer und AO, Optimierung von Stromversorgung und Quarzen und vieles andere mehr.
Die Asio-Geschichte ist dabei immer ein Buch mit 7 Siegeln. Die jeweils verwendeten Treiber sind dlls, also dynamic linked Libraries, was nichts anderes ist als Programme, die dann in die Playerprogramme mit eingebunden werden. Die Kommunikationsschnittstelle ist definiert, nicht jedoch die Reihenfolge der jeweiligen Kommandos. Trotzdem funktioniert das i.a. ganz gut.
Nun, die Treiber als Programme bzw. dlls werden von Programmierern bei den Herstellern erstellt, teilweise auch bei der Fa. Thesycon als Dienstleister. Es muss demzufolge laufen. Aber wer sagt dass sie damit audiophilen Gesichtspunkten genügen?
Die Timing-Diskussion von Frank bei Linux hat mich dazu bewegt mal nachzuschauen was da bei Asio zu erkennen ist. Nun muss man wissen, dass Asio mit einem Wechselpufferprinzip arbeitet. Während der Player in einen Puffer Daten schreibt liest der Treiber den anderen Puffer und gibt die Daten an die jeweilige Hardware weiter (z.B. über USB, Ethernet, I2S ...). Der Player muss nur schnell genug schreiben, dann kann der Puffer umgeschaltet werden wenn die dll neue Daten benötigt. Und so fliesst es dann kontinuierlich, zumindest theoretisch.
Das Umschalten besorgt die dll, sie ruft eine Callback-Prozedur auf und der Player führt diese dann aus mit seiner Pufferbearbeitung.
Wenn also z.B. ein Asio-Puffer von 512 Byte bei 44100 Hz verwendet wird, muss demzufolge alle 512/44.1 = ca. 11.6 Millisekungen ein Pufferwechsel stattfinden. Das Timing gibt die dll vor.
Und wie genau ist nun das Timing?
Ich habe dazu ein Programm geschrieben was eigentlich nichts tut. Es startet das Asio und wartet auf den Bufferswitch durch den Asiotreiber. Just in dem Moment wird als erstes der aktuelle Wert des unter Windows vorhandenen High Performance Timers (HPT) ausgelesen. Die Frequenz des HPT ist heute i.a. 10 MHz und unabhängig von der CPU-Geschwindigkeit. Die Differenz der Zeit zur vorherigen Zeit ergibt dann die momentan gültige Bufferswitchzeit. Idealerweise wäre sie konstant. Wenn nicht das Betriebssystem als Multitasking-System dazwischenfunken täte. Windows ist kein Echtzeitbetriebssystem (Linux bzw. MAC i.a. auch nicht). Und so ist es spannend was dabei herauskommt.
Einige Beispiele gezoomt, man beachte die unterschiedliche Skalierung in y:
Firface UC
Focusrite 6i6
Asio4All mit Realtek-Chip
Beim Focusrite-Treiber ist spannend, dass da im Prinzip immer 31 Switches mit 12 ms zu lang sind und dann ein ganz fixer Bufferswitch mit nahezu Null den Timing-Durchschnitt von 11.6 ms sicherstellen muss.
Meine bescheidene Annahme: wenn sich schon diverse Treiber so unterscheiden und wenn dabei das Betriebssystem entsprechend dazwischenfunkt
was hülft es wenn man da am System herumtweakt? Wohlgemerkt, die Musik hat beim Abspielen mit obigen Beispielen zumindest keine hörbaren Aussetzer. Oder pflanzen sich Abweichungen im Timing trotzdem fort bis in die gehörte Wiedergabe?
Nichtsdestotrotz ist es ja vielleicht doch interessant im Rahmen der Community eine gemeinsame Untersuchung vorzunehmen. Fragen sind z.B.:
- wie verhalten sich identische Soundkarten/DACs auf unterschiedlichen Rechnern
- kann man dann bei einen optimierten System ein verbessertes Verhalten feststellen
- gibt es einen Treiber der optimale Kurven liefert und wie klingt es
- welcher Treiber sieht am schlimmsten aus und wie klingt es?
- wie schaut es bei Euch aus?
Das Programm AsioTimeTest gibt es hier als Setupdatei oder als portable 7zip-Version
Die Ergebnisse werden im Chart angezeigt (Doppelklick darauf z.B. für Export etc.) bzw. als dbl-Datei (z.B. für Acourate) im Verzeichnis \Dokumente\AsioTimeTest gespeichert. Der Dateinamen ist hier z.B. AT-Fireface UC-44-512-0-2-15.dbl (= Fireface UC, 44.1 kHz, Puffer 512 Byte, 0 Eingänge, 2 Ausgänge, Asio-Thread-Priorität 15 oberhalb Programmpriorität)
Viel Spass damit. Ich bin gespannt auf Eure Ergebnisse, insbesonders darauf wie sich optimierte Systeme verhalten. Für eine Vergleichbarkeit wäre es evtl. prima wenn man Messungen mit 44.1 kHz und einem 512 Byte Buffer durchführt. Bei einer Soundkarte mit z.B. 32 Ein-/Ausgängen wäre aber auch ein Extremtest denkbar mit einen 64 Byte Puffer und 384 kHz Abtastrate (was der Treiber eben hergibt) und das dann noch zusammen mit einem Stresstest-Programm, z.B. HeavyLoad o.ä.
Optimal wäre es definitiv wenn man konkrete Lösungen aufzeigen und nachweisen kann, die das Verhalten gegebener Asiotreiber verbessern.
Viele Grüsse
Uli
unter Windows benötigen DACs und Soundkarten ja ihre Gerätetreiber, die im allgemeinen vom jeweiligen Hersteller mitgeliefert werden. Die Treiber sind in diesem Sinn proprietär. Was also drin steckt weiss der Anwender üblicherweise nicht. Um Unzulänglichkeiten bei Windows Sound zu umgehen wurde von Steinberg die Asio-Schnittstelle definiert, die Treiber gehen am Windows-Mixer bzw. sogar am Kernel (Hörensagen) vorbei. Insofern sind heute die Asio-Treiber i.a. beliebt und werden gern bevorzugt.
Unter Linux gibt es ALSA, da kann also ein Sachkundiger in die Quelltexte reinschauen. Allerdings sind es dann eher generische Treiber, die für die Soundkarten gelten, sie sind nicht notwendigerweise vom Hersteller optimiert.
Bleiben wir bei Windows. Linux wird hier ja bereits von anderen intensiv diskutiert, siehe Frankl's Arbeiten etc.
Wir kennen ja bei Windows nun zahlreiche Versuche die Wiedergabe zu verbessern. Reduzierung von Prozessen und Diensten, Tools wie Fidelizer und AO, Optimierung von Stromversorgung und Quarzen und vieles andere mehr.
Die Asio-Geschichte ist dabei immer ein Buch mit 7 Siegeln. Die jeweils verwendeten Treiber sind dlls, also dynamic linked Libraries, was nichts anderes ist als Programme, die dann in die Playerprogramme mit eingebunden werden. Die Kommunikationsschnittstelle ist definiert, nicht jedoch die Reihenfolge der jeweiligen Kommandos. Trotzdem funktioniert das i.a. ganz gut.
Nun, die Treiber als Programme bzw. dlls werden von Programmierern bei den Herstellern erstellt, teilweise auch bei der Fa. Thesycon als Dienstleister. Es muss demzufolge laufen. Aber wer sagt dass sie damit audiophilen Gesichtspunkten genügen?
Die Timing-Diskussion von Frank bei Linux hat mich dazu bewegt mal nachzuschauen was da bei Asio zu erkennen ist. Nun muss man wissen, dass Asio mit einem Wechselpufferprinzip arbeitet. Während der Player in einen Puffer Daten schreibt liest der Treiber den anderen Puffer und gibt die Daten an die jeweilige Hardware weiter (z.B. über USB, Ethernet, I2S ...). Der Player muss nur schnell genug schreiben, dann kann der Puffer umgeschaltet werden wenn die dll neue Daten benötigt. Und so fliesst es dann kontinuierlich, zumindest theoretisch.
Das Umschalten besorgt die dll, sie ruft eine Callback-Prozedur auf und der Player führt diese dann aus mit seiner Pufferbearbeitung.
Wenn also z.B. ein Asio-Puffer von 512 Byte bei 44100 Hz verwendet wird, muss demzufolge alle 512/44.1 = ca. 11.6 Millisekungen ein Pufferwechsel stattfinden. Das Timing gibt die dll vor.
Und wie genau ist nun das Timing?
Ich habe dazu ein Programm geschrieben was eigentlich nichts tut. Es startet das Asio und wartet auf den Bufferswitch durch den Asiotreiber. Just in dem Moment wird als erstes der aktuelle Wert des unter Windows vorhandenen High Performance Timers (HPT) ausgelesen. Die Frequenz des HPT ist heute i.a. 10 MHz und unabhängig von der CPU-Geschwindigkeit. Die Differenz der Zeit zur vorherigen Zeit ergibt dann die momentan gültige Bufferswitchzeit. Idealerweise wäre sie konstant. Wenn nicht das Betriebssystem als Multitasking-System dazwischenfunken täte. Windows ist kein Echtzeitbetriebssystem (Linux bzw. MAC i.a. auch nicht). Und so ist es spannend was dabei herauskommt.
Einige Beispiele gezoomt, man beachte die unterschiedliche Skalierung in y:
Firface UC
Focusrite 6i6
Asio4All mit Realtek-Chip
Beim Focusrite-Treiber ist spannend, dass da im Prinzip immer 31 Switches mit 12 ms zu lang sind und dann ein ganz fixer Bufferswitch mit nahezu Null den Timing-Durchschnitt von 11.6 ms sicherstellen muss.
Meine bescheidene Annahme: wenn sich schon diverse Treiber so unterscheiden und wenn dabei das Betriebssystem entsprechend dazwischenfunkt
was hülft es wenn man da am System herumtweakt? Wohlgemerkt, die Musik hat beim Abspielen mit obigen Beispielen zumindest keine hörbaren Aussetzer. Oder pflanzen sich Abweichungen im Timing trotzdem fort bis in die gehörte Wiedergabe?
Nichtsdestotrotz ist es ja vielleicht doch interessant im Rahmen der Community eine gemeinsame Untersuchung vorzunehmen. Fragen sind z.B.:
- wie verhalten sich identische Soundkarten/DACs auf unterschiedlichen Rechnern
- kann man dann bei einen optimierten System ein verbessertes Verhalten feststellen
- gibt es einen Treiber der optimale Kurven liefert und wie klingt es
- welcher Treiber sieht am schlimmsten aus und wie klingt es?
- wie schaut es bei Euch aus?
Das Programm AsioTimeTest gibt es hier als Setupdatei oder als portable 7zip-Version
Die Ergebnisse werden im Chart angezeigt (Doppelklick darauf z.B. für Export etc.) bzw. als dbl-Datei (z.B. für Acourate) im Verzeichnis \Dokumente\AsioTimeTest gespeichert. Der Dateinamen ist hier z.B. AT-Fireface UC-44-512-0-2-15.dbl (= Fireface UC, 44.1 kHz, Puffer 512 Byte, 0 Eingänge, 2 Ausgänge, Asio-Thread-Priorität 15 oberhalb Programmpriorität)
Viel Spass damit. Ich bin gespannt auf Eure Ergebnisse, insbesonders darauf wie sich optimierte Systeme verhalten. Für eine Vergleichbarkeit wäre es evtl. prima wenn man Messungen mit 44.1 kHz und einem 512 Byte Buffer durchführt. Bei einer Soundkarte mit z.B. 32 Ein-/Ausgängen wäre aber auch ein Extremtest denkbar mit einen 64 Byte Puffer und 384 kHz Abtastrate (was der Treiber eben hergibt) und das dann noch zusammen mit einem Stresstest-Programm, z.B. HeavyLoad o.ä.
Optimal wäre es definitiv wenn man konkrete Lösungen aufzeigen und nachweisen kann, die das Verhalten gegebener Asiotreiber verbessern.
Viele Grüsse
Uli
-
- Aktiver Hersteller
- Beiträge: 4726
- Registriert: 23.03.2009, 15:58
- Wohnort: 33649
- Kontaktdaten:
Sieht so aus als ob sich da bisher noch kein Anderer traut
Ein überraschendes Ergebnis gibt es mit einem CPU-Stresstest mit CPU-Z:
Der Test läuft ca. 48 sek um einen Vektor mit 4096 Bufferswitches aufzunehmen. Ich habe also während der Aufnahme zwischen 10 sek und 30 sek den Stresstest eingeschaltet. Dann schaut es so aus wie das Bild zeigt. Vor und nach dem Stresstest gibt es mehr Abweichungen von der bufferswitch time als während der erhöhten CPU-Belastung Demzufolge wäre ja die Schlussfolgerung, dass man genauer wird wenn die CPU arbeitet. Wieso reduzieren dann alle immer die Anzahl der Prozesse und Dienste?
Grüsse
Uli
Ein überraschendes Ergebnis gibt es mit einem CPU-Stresstest mit CPU-Z:
Der Test läuft ca. 48 sek um einen Vektor mit 4096 Bufferswitches aufzunehmen. Ich habe also während der Aufnahme zwischen 10 sek und 30 sek den Stresstest eingeschaltet. Dann schaut es so aus wie das Bild zeigt. Vor und nach dem Stresstest gibt es mehr Abweichungen von der bufferswitch time als während der erhöhten CPU-Belastung Demzufolge wäre ja die Schlussfolgerung, dass man genauer wird wenn die CPU arbeitet. Wieso reduzieren dann alle immer die Anzahl der Prozesse und Dienste?
Grüsse
Uli
Hallo Uli,
das ist auch interessant. Das ungewöhnliche Timing bei der Focusrite 6i6 funktioniert wohl nur, wenn das Betriebssystem schon ein paar Inputdaten (>512 Frames) vom Player im Eingangspuffer stehen hat.
Könnte die merkwürdige Beobachtung aus dem vorhergehenden Post vielleicht dadurch erklärbar sein, dass ohne Systemload die CPU jeweils aus einem Schlafzustand aufwachen muss und das eine Weile dauert?
Wie ändert sich die Beispiele, wenn die CPU auf einen festen Takt eingestellt wird?
Mangels Windows-Rechners kann ich hier keine Daten beisteuern.
Viele Grüße,
Frank
das ist auch interessant. Das ungewöhnliche Timing bei der Focusrite 6i6 funktioniert wohl nur, wenn das Betriebssystem schon ein paar Inputdaten (>512 Frames) vom Player im Eingangspuffer stehen hat.
Könnte die merkwürdige Beobachtung aus dem vorhergehenden Post vielleicht dadurch erklärbar sein, dass ohne Systemload die CPU jeweils aus einem Schlafzustand aufwachen muss und das eine Weile dauert?
Wie ändert sich die Beispiele, wenn die CPU auf einen festen Takt eingestellt wird?
Mangels Windows-Rechners kann ich hier keine Daten beisteuern.
Viele Grüße,
Frank
Hallo Uli,
ich habe das hier gerade erst gesehen.
Werde morgen auch mal testen und bin gespannt.
Macht das ASIO Tool das gleiche wie das was wir kürzlich mit Acourate Convolver und Acourate mittels vec Files ausgewertet haben?
Wie ich dir schon geschrieben hatte, vermute ich dass die "Hüllkurve" z.B. oberer Rand die beste Aussage bezüglich klanglich relevanter Zeitvariation bringt.
Somit wäre nicht grundsätzlich die Größe / Hub der Y-Achse entscheidend sondern ihre Unregelmäßigkeit / Holprigkeit z.B. am oberen Rand.
Unser Beispiel von zwei Rechnern per vec habe ich dir ja geschickt in gleicher Weise gezommt und geshiftet.
Da ist die Auswertung mit dem vertikal kleinen Hub sehr viel "holpriger" als der andere Rechner mit großem Hub und sehr viel weniger "holprig".
Ich drücke mich sehr pauschal aus, aber du weißt ganz sicher was ich meine.
Viele Grüße
Horst
ich habe das hier gerade erst gesehen.
Werde morgen auch mal testen und bin gespannt.
Macht das ASIO Tool das gleiche wie das was wir kürzlich mit Acourate Convolver und Acourate mittels vec Files ausgewertet haben?
Wie ich dir schon geschrieben hatte, vermute ich dass die "Hüllkurve" z.B. oberer Rand die beste Aussage bezüglich klanglich relevanter Zeitvariation bringt.
Somit wäre nicht grundsätzlich die Größe / Hub der Y-Achse entscheidend sondern ihre Unregelmäßigkeit / Holprigkeit z.B. am oberen Rand.
Unser Beispiel von zwei Rechnern per vec habe ich dir ja geschickt in gleicher Weise gezommt und geshiftet.
Da ist die Auswertung mit dem vertikal kleinen Hub sehr viel "holpriger" als der andere Rechner mit großem Hub und sehr viel weniger "holprig".
Ich drücke mich sehr pauschal aus, aber du weißt ganz sicher was ich meine.
Viele Grüße
Horst
Hallo zusammen,
auf die Schnelle ein paar Screenshots meines Audio-PCs plus Singxer DDC (modifiziert).
Bitte immer die jeweilige Auflösung der Y-Achse berücksichtigen. Teilweise ist sehr stark gezoomt (bis zu 0,001ms = 1µs pro Teiler), um die Abweichungen genauer ablesen zu können.
Ich habe gerade erst gemerkt, dass ich nur Kanal 1 ausgewählt habe, aber mit 2 Kanälen schaut es identisch aus.
Am liebsten höre ich mit dem HoloAudio Treiber, weil ich in diesem auch den USB Buffer einstellen kann. Nicht nur ASIO.
Ich habe versucht sehr ähnliche Zoomausschnitte der X-Achse einzustellen als die bisherigen Plots (0 - 600 bzw. 0 - 1200). Das erleichtert das Vergleichen mit anderen.
Es ist bei allen 8 Screenshots jeweils die gleiche Buffer Einstellung nur eben die Darstellung im Plot anders gezoomt.
Viele Grüße
Horst
auf die Schnelle ein paar Screenshots meines Audio-PCs plus Singxer DDC (modifiziert).
Bitte immer die jeweilige Auflösung der Y-Achse berücksichtigen. Teilweise ist sehr stark gezoomt (bis zu 0,001ms = 1µs pro Teiler), um die Abweichungen genauer ablesen zu können.
Ich habe gerade erst gemerkt, dass ich nur Kanal 1 ausgewählt habe, aber mit 2 Kanälen schaut es identisch aus.
Am liebsten höre ich mit dem HoloAudio Treiber, weil ich in diesem auch den USB Buffer einstellen kann. Nicht nur ASIO.
Ich habe versucht sehr ähnliche Zoomausschnitte der X-Achse einzustellen als die bisherigen Plots (0 - 600 bzw. 0 - 1200). Das erleichtert das Vergleichen mit anderen.
Es ist bei allen 8 Screenshots jeweils die gleiche Buffer Einstellung nur eben die Darstellung im Plot anders gezoomt.
Viele Grüße
Horst
Ich muss mich mal selbst zitieren.
War gestern doch schon etwas spät.
Natürlich ist es egal. ob man Kanal 1 oder 2 von zwei zur Verfügung stehenden Audioausgängen auswählt.
Uli, das Tool ist absolut top. Von mir Daumen hoch und vielen herzlichen Dank, dass du die Zeit investiert hast.
Der Beginn war ja das was du anfangs im Convolver gemacht hast, um es dann in Acourate auszuwerten.
Aber mit dem Asio Timing Test Tool ist alles noch viel einfacher anzuwenden.
Ich freue mich auf weitere interessante Auswertungen z.B. gleiches Interface (Singxer) aber ein Standard Windows 10 als OS ....
Wie schon gesagt meine ich, dass nicht die absolute Höhe des Plots (bei mir 2ms) klanglich entscheidend ist, sondern die Hüllkurve also die Ausfransungen am oberen oder / und unteren Ende. Idealerweise also völlig glatte Hüllkurve im zeitlichen Verlauf. Somit hätten wir keine Zeitvariation.
Viele Grüße
Horst
Sehr interessant!!uli.brueggemann hat geschrieben: ↑10.01.2025, 17:22 Sieht so aus als ob sich da bisher noch kein Anderer traut
Ein überraschendes Ergebnis gibt es mit einem CPU-Stresstest mit CPU-Z:
https://www.audiovero.de/AsioTimeTest/F ... sCPU-Z.jpg
Der Test läuft ca. 48 sek um einen Vektor mit 4096 Bufferswitches aufzunehmen. Ich habe also während der Aufnahme zwischen 10 sek und 30 sek den Stresstest eingeschaltet. Dann schaut es so aus wie das Bild zeigt. Vor und nach dem Stresstest gibt es mehr Abweichungen von der bufferswitch time als während der erhöhten CPU-Belastung Demzufolge wäre ja die Schlussfolgerung, dass man genauer wird wenn die CPU arbeitet. Wieso reduzieren dann alle immer die Anzahl der Prozesse und Dienste?
Grüsse
Uli
Mit 100% CPU Auslastung eine konstantere ASIO Verabeitung ...
Habe ich soeben probiert mit meinem einfachen W10 Bürorechner i7-8700K CPU mit 161 Prozessen und einfachem Mainboard Sound Chip.
Ich habe im mittleren Teil des Verlaufs für ein paar Sekunden den CPU-Z CPU Stresstest laufen lassen.
WindowsTimer Resolution war beim Test auf Maximum also 0,5ms eingestellt. Auch dass wirkst sich aus ...
Wenn ich das Ergebnis sehe, kommt mir spontan das MinorityClean Thema in den Sinn.
viewtopic.php?t=11148
Der nächste logische Schritt wäre den Audio-PC nochmal bei laufendem CPU Stresstest auszuwerten ...
Viele Grüße
Horst
Hallo Frank,frankl hat geschrieben: ↑10.01.2025, 19:46 Hallo Uli,
.... Könnte die merkwürdige Beobachtung aus dem vorhergehenden Post vielleicht dadurch erklärbar sein, dass ohne Systemload die CPU jeweils aus einem Schlafzustand aufwachen muss und das eine Weile dauert?
Wie ändert sich die Beispiele, wenn die CPU auf einen festen Takt eingestellt wird? ....
Viele Grüße,
Frank
ein sehr guter Hinweis von dir. Danke dafür.
Werde ich testen und hier posten.
Auf dem Abstellgleis hat man etwas mehr Zeit für solche Sachen als die Berufstätigen.
Viele Grüße
Horst
Hallo Frank,
der Effekt tritt in beiden Betriebsarten gleichermaßen auf.
Den Rechner habe ich nach dem jeweiligen Ändern der Einstellung sicherheitshalber neu gestartet, damit er garantiert mit der neuen Einstellung läuft und diese auch jeweils im Taskmanager kontrolliert.
Beide Tests mit Win Timer Resolution Einstellung 500µs (0,5ms).
Der Verlauf startet jeweils mit 10 sec ohne CPU Stresstest, dann 10 sec CPU Stresstest (100% Auslastung) und dann wieder 10 sec ohne Stresstest. Danach sofort Stop der ASIO Timing Tool Aufzeichnung.
Links die Energieeinstellung "Ausbalanciert" (dynamisch variierender CPU Takt) und rechts "Höchstleistung" (fester, maximaler CPU Takt)
Viele Grüße
Horst
der Effekt tritt in beiden Betriebsarten gleichermaßen auf.
Den Rechner habe ich nach dem jeweiligen Ändern der Einstellung sicherheitshalber neu gestartet, damit er garantiert mit der neuen Einstellung läuft und diese auch jeweils im Taskmanager kontrolliert.
Beide Tests mit Win Timer Resolution Einstellung 500µs (0,5ms).
Der Verlauf startet jeweils mit 10 sec ohne CPU Stresstest, dann 10 sec CPU Stresstest (100% Auslastung) und dann wieder 10 sec ohne Stresstest. Danach sofort Stop der ASIO Timing Tool Aufzeichnung.
Links die Energieeinstellung "Ausbalanciert" (dynamisch variierender CPU Takt) und rechts "Höchstleistung" (fester, maximaler CPU Takt)
Viele Grüße
Horst
Hallo zusammen,
beim optimierten Audio-PC (Server Board mit XEON CPU) ist anscheinend schon wieder mal alles anders als bei "normalen" Rechnern.
Warum auch immer das so ist, weiß ich (noch nicht) konkret.
Damit man das was da ist (oder in diesem Fall eben nicht ist), überhaupt grafisch aufgelöst bekommt, habe ich die Zeiten etwas geändert.
Gesamtlänge der Aufzeichnung: 5sec normal - 5 sec CPU Stresstest 100% - 5 sec normal.
Da der gesamte Zeitausschnitt mit 15 Sekunden nun kürzer ist, kann ich die x-Achse etwas mehr strecken. Somit kann man es genauer erkennen.
Der Taskmanager hat nachweisbar 100% CPU Last während dem Stresstest angezeigt.
Hier nun drei Screenshots der identischen Zeiteinheit, nur eben vertikal unterschiedlich stark gezoomt.
Es ist der ASIO Zeitpräzision egal, ob die CPU gerade 100% ausgelastet ist oder nur 1%
Mehr braucht man dazu nicht mehr schreiben.
Viele Grüße
Horst
beim optimierten Audio-PC (Server Board mit XEON CPU) ist anscheinend schon wieder mal alles anders als bei "normalen" Rechnern.
Warum auch immer das so ist, weiß ich (noch nicht) konkret.
Damit man das was da ist (oder in diesem Fall eben nicht ist), überhaupt grafisch aufgelöst bekommt, habe ich die Zeiten etwas geändert.
Gesamtlänge der Aufzeichnung: 5sec normal - 5 sec CPU Stresstest 100% - 5 sec normal.
Da der gesamte Zeitausschnitt mit 15 Sekunden nun kürzer ist, kann ich die x-Achse etwas mehr strecken. Somit kann man es genauer erkennen.
Der Taskmanager hat nachweisbar 100% CPU Last während dem Stresstest angezeigt.
Hier nun drei Screenshots der identischen Zeiteinheit, nur eben vertikal unterschiedlich stark gezoomt.
Es ist der ASIO Zeitpräzision egal, ob die CPU gerade 100% ausgelastet ist oder nur 1%
Mehr braucht man dazu nicht mehr schreiben.
Viele Grüße
Horst
-
- Aktiver Hersteller
- Beiträge: 4726
- Registriert: 23.03.2009, 15:58
- Wohnort: 33649
- Kontaktdaten:
Spannende Ergebnisse.
Was mir bei Horsts Beispielen auffällt: wenn der Puffer 512 Byte groß ist schwankt es zwischen 10 und 12 ms. Bei 882 Byte sind es dann zwischen ca. 14 ms und 33 ms = fast 20 ms Schwankungsbreite. Was m.E. aber eine Eigenschaft eben des Treibers ist, in den wir leider nicht reingucken können.
Hinweis @Horst und andere: man kan mit der linken Maustaste gedrückt ein Ausschnitsfenster von links unten nach rechts oben ziehen und so einfach reinzoomen. Das geht auch mehrfach. Bei einem Rechteck von rechts oben nach links unten wird wieder voll rausgezoomt. Mit gedrückter rechter Maustaste lässt sich die Grafik auch verschieben.
Allgemeine Frage: wenn die CPU bzw. der beteiligte CPU-Kern zum Schlafen kommt und dann wieder aufwacht - wie kann man das verhindern?
Ich finde zumindest bei meiner AMD-CPU nirgends einen richtigen Ansatz
Grüsse
Uli
Was mir bei Horsts Beispielen auffällt: wenn der Puffer 512 Byte groß ist schwankt es zwischen 10 und 12 ms. Bei 882 Byte sind es dann zwischen ca. 14 ms und 33 ms = fast 20 ms Schwankungsbreite. Was m.E. aber eine Eigenschaft eben des Treibers ist, in den wir leider nicht reingucken können.
Hinweis @Horst und andere: man kan mit der linken Maustaste gedrückt ein Ausschnitsfenster von links unten nach rechts oben ziehen und so einfach reinzoomen. Das geht auch mehrfach. Bei einem Rechteck von rechts oben nach links unten wird wieder voll rausgezoomt. Mit gedrückter rechter Maustaste lässt sich die Grafik auch verschieben.
Allgemeine Frage: wenn die CPU bzw. der beteiligte CPU-Kern zum Schlafen kommt und dann wieder aufwacht - wie kann man das verhindern?
Ich finde zumindest bei meiner AMD-CPU nirgends einen richtigen Ansatz
Grüsse
Uli
Hallo Uli,
das mit dem Zoomen und Shiften in solchen Plots nutze ich schon länger. Ist schon Routine.
Deswegen habe ich auch so viele verschiedene Ausschnitte für das Forum generieren können.
Aber für viele andere ist der Hinweis natürlich wichtig, weil sich sonst nicht eröffnet, wie man Zoom / Shift bedient.
Bei deinem PC solltest du mal probeweise den HPET deaktivieren (plus Neustart). Möglicherweise wird dann die Abhängigkeit der CPU Last auf die ASIO Präzision geringer. Ein Test kostet nichts.
Ich sehe da bei meinen Rechnern minimale Unterschiede, aber vielleicht reagiert deiner stärker.
Wenn ich in einer Anwendung (zum Beispiel auch bei deinem neuen Tool) ganz sicher gehen will, stelle ich immer die Windows Timer Resolution per timerresolution.exe Tool auf Maximum (0.5ms) und lasse das Timer Tool im Hintergrund minimiert weiterlaufen. Dann verstellt auch keine andere App priorisiert die Timer Resolution.
Standardmäßig wählen viele Rechner die 15,625ms, vermutlich ist dies deswegen Windows Standard, weil es in Anwendungen weniger Prozessorlast erzeugt. Diese variiert rauf unter je nachdem was die Apps möchten. Habe soeben nachgeschaut. Mein Bürorechner läuft gerade mit 4,0ms ...
Weißt du zufällig, wo man in der Registry die 0.5ms fest einstellen kann?
Das möchte ich auf dem Audio-PC gerne probieren.
Ich werde jetzt erst mal die Füße bzw. Hände still halten und warte auf Plots von anderen Usern.
Möglicherweise finden wir dadurch noch mehr heraus.
Viele Grüße
Horst
das mit dem Zoomen und Shiften in solchen Plots nutze ich schon länger. Ist schon Routine.
Deswegen habe ich auch so viele verschiedene Ausschnitte für das Forum generieren können.
Aber für viele andere ist der Hinweis natürlich wichtig, weil sich sonst nicht eröffnet, wie man Zoom / Shift bedient.
Bei deinem PC solltest du mal probeweise den HPET deaktivieren (plus Neustart). Möglicherweise wird dann die Abhängigkeit der CPU Last auf die ASIO Präzision geringer. Ein Test kostet nichts.
Ich sehe da bei meinen Rechnern minimale Unterschiede, aber vielleicht reagiert deiner stärker.
Wenn ich in einer Anwendung (zum Beispiel auch bei deinem neuen Tool) ganz sicher gehen will, stelle ich immer die Windows Timer Resolution per timerresolution.exe Tool auf Maximum (0.5ms) und lasse das Timer Tool im Hintergrund minimiert weiterlaufen. Dann verstellt auch keine andere App priorisiert die Timer Resolution.
Standardmäßig wählen viele Rechner die 15,625ms, vermutlich ist dies deswegen Windows Standard, weil es in Anwendungen weniger Prozessorlast erzeugt. Diese variiert rauf unter je nachdem was die Apps möchten. Habe soeben nachgeschaut. Mein Bürorechner läuft gerade mit 4,0ms ...
Weißt du zufällig, wo man in der Registry die 0.5ms fest einstellen kann?
Das möchte ich auf dem Audio-PC gerne probieren.
Ich werde jetzt erst mal die Füße bzw. Hände still halten und warte auf Plots von anderen Usern.
Möglicherweise finden wir dadurch noch mehr heraus.
Viele Grüße
Horst
-
- Aktiver Hersteller
- Beiträge: 4726
- Registriert: 23.03.2009, 15:58
- Wohnort: 33649
- Kontaktdaten:
Ich muss mir mal einen eigenen Rechner aufsetzen mit dem ich beliebig rumspielen kann. Never touch a running system
Wie man die Resolution per Win API umstellen kann habe ich noch nicht herausgefunden. Es muss gehen, sonst gäbe es ja nicht die anderen Programmen.
Als Anwort auf Deine Frage wüsste ich z.B. Process Lasso, siehe hier
Muss ich mir evtl. mal besorgen.
Grüsse
Uli
Hallo Uli,uli.brueggemann hat geschrieben: ↑11.01.2025, 14:50 ...Bei 882 Byte sind es dann zwischen ca. 14 ms und 33 ms = fast 20 ms Schwankungsbreite. Was m.E. aber eine Eigenschaft eben des Treibers ist, in den wir leider nicht reingucken können ...
Grüsse
Uli
die fixe 882 Byte Buffergröße habe ich nur auf dem Windows 10 Büro-Rechner und da stört es mich nicht.
Den FlexAsio Treiber einzustellen ist etwas aufwändiger.
https://github.com/dechamps/FlexASIO/bl ... URATION.md
Viele Grüße
Horst
-
- Aktiver Händler
- Beiträge: 1684
- Registriert: 24.09.2017, 14:50
- Wohnort: Hansestadt Rostock
- Kontaktdaten:
Moin Uli,
auch von meiner Seite ein Dankeschön für dein spannendes Tool. Das probiere ich gern in den nächsten Tagen aus.
Möglicherweise musst du im BIOS noch etwas ändern. Ich habe einen festen Multiplikator für die P-/E-Cores und CPU Ratio Mode auf "Fixed Mode" eingestellt (i9-13900KF mit msi-Board).
Ab Windows 11 wird leider die Anwendung TimerTool zurückgesetzt, wenn das TimerTool-Fenster nicht sichtbar ist oder von einer anderen Anwendung verdeckt wird. Ich mache das deshalb auch mit Process Lasso.
Grüße Gabriel
auch von meiner Seite ein Dankeschön für dein spannendes Tool. Das probiere ich gern in den nächsten Tagen aus.
Unter „Systemsteuerung > System und Sicherheit > Energieoptionen“ kannst du die Energieoptionen verwalten. Wähle "Höchstleistung" aus, um den Schlafzustand zu verhindern. So funktioniert es bei einer Intel-CPU. Vorher musst du je nach Windows Version auf den sinnigen Satz "Einige Einstellungen sind momentan nicht verfügbar" klicken, um die Admin zu entsperren.uli.brueggemann hat geschrieben: ↑11.01.2025, 14:50Allgemeine Frage: wenn die CPU bzw. der beteiligte CPU-Kern zum Schlafen kommt und dann wieder aufwacht - wie kann man das verhindern?
Möglicherweise musst du im BIOS noch etwas ändern. Ich habe einen festen Multiplikator für die P-/E-Cores und CPU Ratio Mode auf "Fixed Mode" eingestellt (i9-13900KF mit msi-Board).
Ab Windows 11 wird leider die Anwendung TimerTool zurückgesetzt, wenn das TimerTool-Fenster nicht sichtbar ist oder von einer anderen Anwendung verdeckt wird. Ich mache das deshalb auch mit Process Lasso.
Grüße Gabriel