Lo sviluppatore del gioco Malte Skarupke confronto delle prestazioni delle serrature basato su и quando si utilizzano diversi pianificatori di attività. I test hanno mostrato ritardi anormalmente elevati quando si utilizza Spinlock con quello predefinito utilizzato in Linux pianificatore di attività. L'autore del test ha concluso che il pianificatore di attività Linux presenta problemi che influiscono negativamente sulle prestazioni dei giochi creati per Google Stadia, che esegue i giochi su GPU nel cloud e trasmette in streaming il contenuto dello schermo al client fino a un massimo di 60 fotogrammi al secondo. In queste condizioni, è fondamentale garantire una consegna tempestiva dei fotogrammi e una latenza superiore a un millisecondo diventa percettibile.
Per discutere dei test Linus Torvalds, che li ha definiti “pura spazzatura” e un esempio di come sia possibile, senza comprendere appieno l’argomento, ottenere indicatori che non riflettono la realtà. Spinlock è una primitiva di basso livello che nello spazio utente deve essere utilizzata con grande cura e piena comprensione dei dettagli, altrimenti si può finire con ciò che è stato dimostrato dall'autore del test. Linus ha consigliato agli sviluppatori di giochi di non utilizzare lo spinlock e di non provare a costruire i propri sistemi di blocco basati su di esso, ma di utilizzare meccanismi collaudati esistenti che informano il sistema di attendere il rilascio del blocco per eliminare l'influenza dello scheduler.
I componenti aggiuntivi basati su Spinlock possono essere utilizzati solo se si è assolutamente sicuri che lo scheduler non ne interromperà l'esecuzione. Le serrature basate su spinlock utilizzate nei test vengono implementate tramite un cablaggio fatto in casa che funziona nello spazio utente. L'utilità di pianificazione può assumere il controllo in qualsiasi momento casuale durante l'esecuzione di questa associazione e passare all'esecuzione di un'altra attività. Poiché la misurazione delle prestazioni si basa su valori timer assoluti, le latenze misurate nei test coprono non solo le latenze nel gestore del blocco, ma anche il codice eseguito in un contesto diverso, ad es. misurare non solo ciò che l'autore del test stava cercando di misurare, ma anche il "rumore" derivante da altri calcoli nel sistema.
Autore della prova obiettare a Linus, sottolineando che l'uso di sistemi di blocco personalizzati basati su spinlock è spesso utilizzato nella pratica nei giochi, poiché quando si utilizzano pianificatori più semplici rispetto a quelli in LinuxI test mostrano prestazioni superiori. Linus , che lo scheduler Linux È un sistema universale, perfezionato nel corso di decenni e ottimizzato non solo per computer desktop e videogiochi, ma anche per altri tipi di carichi di lavoro, come i sistemi server, tenendo quindi conto di numerose sfumature nella pianificazione delle attività.
L'aggiunta di ottimizzazioni specifiche per ridurre la latenza nei giochi di Google Stadia può migliorare la reattività in un caso specifico, ma probabilmente ridurrà l'efficienza complessiva dello scheduler. Ad esempio, lo scheduler Windows ottiene risultati migliori nei test discussi, poiché è molto più semplice dello scheduler Linux ed è ottimizzato principalmente per attività specifiche del desktop.
Fonte: opennet.ru
