Spielentwickler Malte Skarupke Leistungsbewertung von Locks basierend auf und bei Verwendung verschiedener Task-Scheduler. Die Tests zeigten anomale groĂe Verzögerungen bei Verwendung von Spinlock mit dem standardmĂ€Ăig in Linux verwendeten Task-Scheduler. Der Autor der Tests kam zu dem Schluss, dass der Linux-Task-Scheduler Probleme hat, die sich negativ auf die Leistung von Spielen auswirken, die fĂŒr den Google Stadia-Dienst entwickelt wurden, bei dem die Spiele auf der GPU in einer Cloud-Umgebung ausgefĂŒhrt werden und der Client nur den Bildschirminhalt mit bis zu 60 Bildern pro Sekunde streamt. Unter diesen Bedingungen ist es notwendig, eine rechtzeitige Ausgabe der Frames auf den Bildschirm sicherzustellen, und Verzögerungen von mehr als einer Millisekunde werden deutlich.
Zur Diskussion der Tests Linus Torvalds, der sie als MĂŒll bezeichnete (âpure garbageâ) und als Beispiel, wie man, ohne sich wirklich mit dem Thema auseinanderzusetzen, Ergebnisse erhalten kann, die die RealitĂ€t nicht widerspiegeln. Spinlock ist ein Low-Level-Primitiv, das im Benutzerspeicher mit groĂer Vorsicht und umfassendem VerstĂ€ndnis der Details verwendet werden sollte, anderenfalls kann man das erleben, was vom Autor des Tests demonstriert wurde. Linus riet den Spieleentwicklern, Spinlock nicht zu verwenden und nicht zu versuchen, eigene Lock-Systeme darauf aufzubauen, sondern bestehende bewĂ€hrte Mechanismen zu nutzen, die das System ĂŒber das Warten auf die Freigabe des Locks informieren, um die Auswirkungen des Schedulers auszuschlieĂen.
Erweiterungen auf Basis von Spinlock können nur verwendet werden, wenn man sich sicher ist, dass der Scheduler deren AusfĂŒhrung nicht unterbricht. Die in den Tests verwendeten Locks auf Basis von Spinlock sind durch eine selbstgebaute HĂŒlle realisiert, die im Benutzerspeicher funktioniert. Der Task-Scheduler kann jederzeit wĂ€hrend der AusfĂŒhrung dieser HĂŒlle die Kontrolle ĂŒbernehmen und auf eine andere Aufgabe umschalten. Da die Leistungsbewertung auf der Basis absoluter Timerwerte erfolgt, umfassen die in den Tests festgestellten Verzögerungen 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 Autor des Tests messen wollte, sondern auch den âRauschenâ von anderen Berechnungen im System.
Autor des Tests Linus zu widersprechen und darauf hinzuweisen, dass der Einsatz eigener Blocking-Systeme auf Basis von Spinlocks in der Praxis hĂ€ufig in Spielen verwendet wird, da Tests höhere Leistung zeigen, wenn einfachere Scheduler als in Linux verwendet werden. , dass der Linux-Scheduler universell ist, ĂŒber Jahrzehnte verfeinert wurde und nicht nur fĂŒr Desktop- und Spieleanwendungen optimiert ist, sondern auch fĂŒr andere Arten von Lasten, wie z.B. Serversysteme, daher berĂŒcksichtigt er viele Nuancen bei der Planung der AufgabenausfĂŒhrung.
Das HinzufĂŒgen spezifischer Optimierungen, die dazu beitragen, die Latenz in Google Stadia-Spielen zu verringern, kann die ReaktionsfĂ€higkeit in EinzelfĂ€llen verbessern, könnte aber wahrscheinlich die Effizienz des Schedulers insgesamt verringern. Zum Beispiel verhĂ€lt sich der Windows-Scheduler in den besprochenen Tests besser, da er erheblich einfacher als der Linux-Scheduler ist und hauptsĂ€chlich fĂŒr desktop-spezifische Aufgaben optimiert wurde.
Quelle: opennet.ru
