Spieleentwickler Malte Skarupke Leistungsvergleich von Locks basierend auf und bei der Verwendung verschiedener Task-Scheduler. Die Tests zeigten anomale Verzögerungen bei der Nutzung von Spinlock mit dem standardmäßig in Linux verwendeten Scheduler. Der Autor der Tests kam zu dem Schluss, dass der Linux-Scheduler Probleme hat, die sich negativ auf die Leistung von Spielen auswirken, die für den Google Stadia-Dienst entwickelt wurden, bei dem Spiele in einer Cloud-Umgebung auf der GPU ausgeführt werden, während der Inhalt nur im Stream mit bis zu 60 Bildern pro Sekunde an den Client übertragen wird. Unter diesen Bedingungen ist es wichtig, eine rechtzeitige Anzeige der Frames zu gewährleisten, wobei Verzögerungen von mehr als einer Millisekunde deutlich spürbar werden.
Zur Diskussion der Tests Linus Torvalds, der sie als "pure garbage" bezeichnete, und ein Beispiel dafür, wie man ohne ein tiefes Verständnis des Themas zu Ergebnissen kommen kann, die die Realität nicht widerspiegeln. Spinlock ist ein Low-Level-Primitiv, das im Benutzerraum mit großer Vorsicht und einem umfassenden Verständnis der Details verwendet werden muss, sonst können die gleichen Ergebnisse erzielt werden, die der Autor des Tests demonstriert hat. Linus riet den Spieleentwicklern, Spinlocks nicht zu verwenden und nicht zu versuchen, eigene Lock-Systeme basierend darauf zu entwickeln, sondern bestehende bewährte Mechanismen zu nutzen, die das System darüber informieren, dass auf die Freigabe der Sperre gewartet wird, um die Auswirkungen des Planers auszuschließen.
Spinlock-basierte Ergänzungen können nur verwendet werden, wenn man sich sicher ist, dass der Scheduler deren Ausführung nicht unterbricht. Die in den Tests verwendeten Spinlock-basierten Sperren werden über eine benutzerdefinierte Wrapper-Lösung implementiert, die im Benutzermodus arbeitet. Der Task-Scheduler kann jederzeit während der Ausführung dieses Wrappers die Kontrolle übernehmen und auf eine andere Aufgabe wechseln. Da die Leistungsbewertung auf der Basis absoluter Timerwerte erfolgt, erfassen die in den Verzögerungstests definierten Werte nicht nur die Verzögerungen im Lock-Handler, sondern auch den Code, der in einem anderen Kontext ausgeführt wurde, d.h. sie messen nicht nur das, was der Testautor messen wollte, sondern auch den „Lärm“ von anderen Berechnungen im System.
Testautor Linus zu widersprechen, indem man darauf hinweist, dass der Einsatz eigener spinlock-basierter Sperrsysteme in der Praxis häufig in Spielen verwendet wird, da bei einfacheren Schedulern als in Linux die Tests eine höhere Leistung zeigen. Linus , dass der Linux-Planer universell ist, seit Jahrzehnten verfeinert wurde und nicht nur für Desktops und Spiele, sondern auch für andere Arten von Lasten, wie z.B. Serversysteme, optimiert ist. Dabei werden viele Feinheiten bei der Planung der Ausführung von Aufgaben berücksichtigt.
Die Hinzufügung spezifischer Optimierungen, die die Latenz in Google Stadia-Spielen reduzieren, kann die Reaktionsfähigkeit in bestimmten Fällen verbessern, wird aber wahrscheinlich die Gesamtleistung des Planers beeinträchtigen. Beispielsweise verhält sich der Windows-Planer in den diskutierten Tests besser, da er deutlich einfacher ist als der Linux-Planer und hauptsächlich für desktop-spezifische Aufgaben optimiert ist.
Quelle: opennet.ru
