Développeur de jeux Malte Skarupke comparaison des performances des verrouillages basés sur et l'utilisation de différents planificateurs de tâches. Les tests ont montré des délais anormalement longs lors de l'utilisation de Spinlock avec le planificateur de tâches par défaut utilisé sous Linux. L'auteur des tests a conclu que le planificateur de tâches Linux présente des problèmes qui nuisent aux jeux développés pour le service Google Stadia, où les jeux s'exécutent sur le GPU dans un environnement cloud, et où le contenu de l'écran est simplement transmis au client en streaming à une fréquence allant jusqu'à 60 images par seconde. Dans de telles conditions, il est nécessaire d'assurer une sortie rapide des images à l'écran et les délais dépassant une milliseconde deviennent perceptibles.
À la discussion des tests Linus Torvalds, qui les a qualifiés de déchets (« pure garbage ») et d'exemple de la manière de tirer des indicateurs qui ne reflètent pas la réalité sans comprendre complètement le sujet. Spinlock est un primitif de bas niveau qui doit être utilisé avec une grande prudence dans l'espace utilisateur et avec une compréhension complète des détails, sinon on risque d'obtenir ce qui a été démontré par l'auteur du test. Linus a conseillé aux développeurs de jeux de ne pas utiliser spinlock et de ne pas essayer de créer leurs propres systèmes de verrouillage basés sur cela, mais d'utiliser des mécanismes existants éprouvés qui informent le système de l'attente de la libération du verrou pour exclure l'impact du planificateur.
Les extensions basées sur Spinlock ne doivent être utilisées que si l'on est totalement sûr que le planificateur ne va pas interrompre leur exécution. Les verrouillages basés sur spinlock utilisés dans les tests sont implémentés à travers un enveloppement fait maison fonctionnant dans l'espace utilisateur. Le planificateur de tâches peut à tout moment aléatoire prendre le contrôle pendant l'exécution de cette enveloppe et basculer vers l'exécution d'une autre tâche. Étant donné que la mesure des performances est effectuée sur la base des valeurs absolues du minuteur, certains délais mesurés dans les tests incluent non seulement les délais dans le gestionnaire de verrou, mais aussi le code qui a été exécuté dans un autre contexte, c'est-à-dire mesurent non seulement ce que l'auteur du test a essayé de mesurer, mais aussi le « bruit » provenant d'autres calculs dans le système.
L'auteur du test contredire Linus en soulignant que l'utilisation de systèmes de verrouillage basés sur spinlock est souvent utilisée dans les jeux, car des tests montrent une performance plus élevée avec des planificateurs plus simples que ceux de Linux. Linus , que le planificateur Linux est universel, perfectionné depuis des décennies et optimisé non seulement pour les bureaux et les jeux, mais aussi pour d'autres types de charges de travail, comme les systèmes serveur, prenant ainsi en compte de nombreux détails lors de la planification de l'exécution des tâches.
Ajouter des optimisations spécifiques pour réduire les délais dans les jeux Google Stadia pourrait améliorer la réactivité dans ce cas particulier, mais risque probablement de diminuer l'efficacité globale du planificateur. Par exemple, le planificateur Windows se comporte mieux dans les tests en question, car il est beaucoup plus simple que celui de Linux et est principalement optimisé pour des tâches spécifiques aux bureaux.
Source : opennet.ru
