Twórca gier Malte Skarupke porównanie wydajności blokad opartych na i przy użyciu różnych planistów zadań. Testy wykazały anormalnie duże opóźnienia przy użyciu Spinlock z domyślnym planistą zadań w systemie Linux. Autor testów doszedł do wniosku, że planista zadań w Linuxie ma problemy, które negatywnie wpływają na działanie gier tworzonych dla usługi Google Stadia, w której gry są wykonywane na GPU w chmurze, a klient otrzymuje jedynie strumieniowane treści wideo z częstotliwością do 60 klatek na sekundę. W takich warunkach należy zapewnić terminowe wyświetlanie klatek na ekranie, a opóźnienia przekraczające milisekundę stają się zauważalne.
Do dyskusji na temat testów Linus Torvalds, który określił je mianem śmieci («pure garbage») i przykładem tego, jak można, nie rozumiejąc tematu, uzyskać wyniki, które nie odzwierciedlają rzeczywistości. Spinlock jest niskopoziomowym prymitywem, który w przestrzeni użytkownika należy stosować z dużą ostrożnością i w pełni rozumiejąc szczegóły, w przeciwnym razie można uzyskać to, co zostało zademonstrowane przez autora testu. Linus doradził twórcom gier, aby nie stosowali spinlocka i nie próbowali tworzyć własnych systemów blokad na jego podstawie, lecz korzystali z istniejących sprawdzonych mechanizmów, które informują system o oczekiwaniu na zwolnienie blokady, aby wykluczyć wpływ planisty.
Rozszerzenia oparte na Spinlock można stosować tylko przy pełnym przekonaniu, że planista nie przerwie ich wykonywania. Blokady stosowane w testach oparte na spinlocku zostały zrealizowane przez ręcznie stworzoną otoczkę działającą w przestrzeni użytkownika. Planista zadań może w każdej chwili przejąć kontrolę w trakcie wykonywania tej otoczki i przełączyć się na wykonanie innego zadania. Ponieważ pomiar wydajności jest przeprowadzany na podstawie absolutnych wartości timera, określone w testach opóźnienia obejmują nie tylko opóźnienia w obsłudze blokady, ale także kod, który został wykonany w innym kontekście, tzn. mierzą nie tylko to, co autor testu próbował zmierzyć, ale także „szumy” z innych obliczeń w systemie.
Autor testu Zgadzać się z Linusem, wskazując, że stosowanie własnych systemów blokowania opartych na spinlock często znajduje zastosowanie w grach, ponieważ przy użyciu prostszych planistów niż w Linuxie testy pokazują wyższą wydajność. Linus , że planista Linux jest uniwersalny, doskonalony przez dziesięciolecia i zoptymalizowany nie tylko pod kątem komputerów osobistych i gier, ale także innych rodzajów obciążenia, na przykład systemów serwerowych, dlatego uwzględnia wiele niuansów podczas planowania wykonywania zadań.
Dodanie specyficznych optymalizacji, które pozwolą na zmniejszenie opóźnień w grach Google Stadia, może zwiększyć responsywność w danym przypadku, ale prawdopodobnie prowadzi do obniżenia efektywności planisty jako całości. Na przykład, planista Windows działa lepiej w omawianych testach, ponieważ jest znacznie prostszy niż planista Linux i zoptymalizowany głównie pod kątem zadań specyficznych dla komputerów osobistych.
Źródło: opennet.ru
