Sviluppatore di giochi Malte Skarupke confronto delle prestazioni delle blocchi basati su e utilizzando diversi pianificatori di attività. I test hanno mostrato ritardi anomali durante l'utilizzo dello Spinlock con il pianificatore di attività predefinito in Linux. L'autore dei test ha concluso che il pianificatore di attività di Linux ha problemi che influenzano negativamente il funzionamento dei giochi sviluppati per il servizio Google Stadia, nel quale i giochi vengono eseguiti sulla GPU in un ambiente cloud, e il contenuto dello schermo viene trasmesso in streaming al cliente con una frequenza di fino a 60 fotogrammi al secondo. In tali condizioni, è necessario garantire la tempestiva visualizzazione dei fotogrammi e ritardi superiori a un millisecondo diventano percepibili.
A discussione dei test Linus Torvalds, che li ha definiti spazzatura («pure garbage») e un esempio di come si possano ottenere risultati che non riflettono la realtà senza avere una comprensione approfondita dell'argomento. Lo Spinlock è un primitivo a basso livello che deve essere utilizzato con grande cautela nel contesto utente e comprendendo appieno i dettagli; altrimenti, si possono ottenere i risultati mostrati dall'autore del test. Linus ha consigliato agli sviluppatori di giochi di non utilizzare lo spinlock e di non tentare di creare i propri sistemi di blocco basati su di esso, ma di utilizzare meccanismi esistenti e collaudati che informano il sistema di attendere il rilascio del blocco per escludere l'influenza del pianificatore.
Le sovrastrutture basate su Spinlock possono essere utilizzate solo quando si ha piena fiducia che il pianificatore non interromperà la loro esecuzione. I blocchi basati su spinlock utilizzati nei test sono stati implementati tramite un wrapper artigianale che funziona nello spazio utente. Il pianificatore di attività può in qualsiasi momento casuale riprendere il controllo durante l'esecuzione di questo wrapper e passare all'esecuzione di un'altra attività. Poiché la misurazione delle prestazioni viene eseguita sulla base di valori assoluti del timer, i ritardi definiti nei test coprono non solo i ritardi nell'handler del blocco, ma anche il codice eseguito in un altro contesto, cioè misurano non solo ciò che l'autore del test cercava di misurare, ma anche il
Autore del test ribattere a Linus, sottolineando che l'uso di sistemi di blocco basati su spinlock è spesso pratico nei giochi, dato che test mostrano prestazioni migliori con pianificatori più semplici rispetto a Linux. , sostenendo che il pianificatore di Linux è universale, affinato per decenni e ottimizzato non solo per desktop e giochi, ma anche per altri tipi di carico, come i sistemi server, quindi tiene conto di molte sfumature nella pianificazione dell'esecuzione dei task.
L'aggiunta di ottimizzazioni specifiche che riducono la latenza nei giochi Google Stadia può aumentare la reattività in casi specifici, ma probabilmente porterà a una diminuzione dell'efficienza complessiva del pianificatore. Ad esempio, il pianificatore di Windows si comporta meglio nei test discussi, in quanto è significativamente più semplice del pianificatore di Linux e ottimizzato principalmente per compiti specifici del desktop.
Fonte: opennet.ru
