Linus Torvalds hat die Probleme mit dem Task-Scheduler, die in den Leistungstests aufgetreten sind, widerlegt.

Spielentwickler Malte Skarupke veröffentlichte Leistungsbewertung von Locks basierend auf Mutex und Spinlock 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 beteiligt 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 versuchte 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. widersprach, 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

60GB SSD 8Gb DDR4