Comment analyser et optimiser les serveurs de jeu d'Unreal Engine avec le profilage de serveur

Comment analyser et optimiser les serveurs de jeu d'Unreal Engine avec le profilage de serveur
Comment analyser et optimiser les serveurs de jeu d'Unreal Engine avec le profilage de serveur
Comment analyser et optimiser les serveurs de jeu d'Unreal Engine avec le profilage de serveur

Qu'est-ce que le Profilage de Serveur dans Unreal Engine ?

Le profilage de serveur est le processus de collecte et d'analyse des données de performance d'un serveur de jeu dédié afin de comprendre comment il consomme des ressources critiques telles que le CPU, la mémoire et la bande passante réseau.

Dans Unreal Engine, le profilage de serveur fournit une visibilité sur la façon dont les systèmes tels que la physique, les adversaires IA et la réplication se comportent sous une vraie charge multijoueur. L'objectif est de identifier les goulets d'étranglement de performance et les limites, ainsi que les risques de stabilité avant qu'ils n'affectent les joueurs ou l'infrastructure de production.

Le processus de profilage de serveur aide généralement les développeurs à répondre à des questions telles que :

  • Quels acteurs consomment le plus de mémoire, comment la mémoire évolue-t-elle avec le nombre d'instances d'acteurs, au fil du temps ou par joueur, et quelles conditions pourraient entraîner des plantages par manque de mémoire (OOM) ?

  • Quelles fonctions ou fonctionnalités consomment le plus de cycles CPU, et pourquoi (par exemple, nombre de joueurs, fréquence de ticks, IA, physique ou réplication) ?

  • Quelles fonctionnalités dominent le coût de ressources par tick, et comment les changements de fréquence de ticks affectent-ils la qualité du gameplay, la stabilité de la simulation et l'utilisation du réseau ?

  • Qu'est-ce qui cause le jitter réseau, les pics de latence ou la désynchronisation côté serveur ?

Comment profiler les serveurs dans Unreal Engine et outils de profilage de serveur les meilleurs ?

Epic Games fournit à tous les utilisateurs d'Unreal Engine des outils de profilage qui peuvent être utilisés avec Edgegap :

Unreal Trace Server

Unreal Trace Server est le « collecteur » des données de profilage de serveur.

C'est un service léger qui collecte, stocke et, si nécessaire, diffuse les données de trace émises par les applications Unreal Engine pendant l'exécution.

Il permet à des outils comme Unreal Insights de se connecter à des serveurs en cours d'exécution ou à des sessions enregistrées pour analyser le comportement du CPU, de la mémoire, du réseau et du chargement des ressources en temps réel ou hors ligne.

Comment l'utiliser avec Edgegap :

  1. Configurez la traçabilité dans votre serveur Unreal Engine (événements intégrés et personnalisés).

  2. Enregistrez la trace sur le disque du serveur avec -tracefile, téléchargez-la sur un stockage tiers et analysez-la hors ligne ;

    • Alternativement, diffusez les données de trace avec les Déploiements d'Edgegap pendant les tests de développement pour le port interne 1981 via le protocole UDP.

Unreal Insights

Unreal Insights est le « visionneur » des données de profilage de serveur.

En détail, c'est l'outil d'analyse de performance et de visualisation d'Unreal Engine pour examiner les données de trace capturées à partir d'applications et de serveurs en cours d'exécution.

Il permet aux développeurs d'analyser l'exécution du CPU, le threading, l'utilisation de la mémoire, le chargement des ressources et le comportement réseau pour identifier les goulets d'étranglement et les problèmes de scalabilité.

Comment l'utiliser avec Edgegap :

  1. Analysez les Insights Mémoire et les Insights Réseau.

  2. Utilisez ces insights pour Optimiser les Constructions de Serveur et l'utilisation des ressources en runtime.

Journaux du Conteneur d'Edgegap

Disponibles dans la page de détail du déploiement de votre serveur de jeu, lisez les journaux Unreal Engine pour trouver et dépanner les erreurs de serveur, et suivez la trace de la pile avec les symboles de débogage Unreal Engine pour identifier le code problématique.

Avertissement : Une fois le déploiement arrêté, les journaux de conteneur sont supprimés. Configurez un stockage de journaux tier-partie S3 pour sauvegarder les journaux.

Examinez les métriques de conteneur (processeur, mémoire, réseau) pour :

  • identifier les problèmes de connexion courants lors du dépannage ;

  • détecter les schémas d'implémentation inefficaces causant des pics d'utilisation des ressources ;

  • identifier l'utilisation inefficace des ressources dans des scénarios particuliers ;

  • vérifier les changements dans l'utilisation des ressources de votre serveur pendant l'optimisation ;

  • évaluer la consommation de ressources et la durée d'initialisation de votre serveur.

Edgegap crée un identifiant unique pour chaque déploiement, vous permettant de suivre exactement l'utilisation des performances et de lier les rapports des joueurs et des testeurs au déploiement et de suivre les ressources (en direct ou après le match)

Métriques du Conteneur d'Edgegap

Également disponibles dans la page de détail du déploiement de votre serveur de jeu, les métriques de conteneur (comme le nom l'indique) fournissent des données de performance de votre conteneur à travers le processeur, la mémoire, le réseau.

Remarque : Les métriques historiques affichent des moyennes de valeurs avec une période de temps de 1 minute, disponibles dans le niveau Gratuit. Mettez à niveau vers le niveau Pay as you Go et débloquez des métriques brutes non agrégées en temps réel avec un intervalle de rapport de 1 seconde.

Tableau de Bord de Supervision d'Edgegap

Le Tableau de Bord d'Edgegap vous offre la capacité de surveiller la scalabilité de votre serveur avec des analyses approfondies.

Disponible pour les utilisateurs qui passent au niveau Pay as you Go (il suffit d'ajouter une carte de crédit à votre compte gratuit, aucune dépense requise), il fournit des insights sur :

  • Insights Généraux : suivez les versions avec le nombre de serveurs en direct par version + aperçu de l'utilisation des ressources.

  • Insights CPU : résolvez les serveurs lents en raison d'opérations intensives en processeur.

  • Insights Mémoire : atténuez les redémarrages de serveur causés par le dépassement de la mémoire allouée.

  • Insights Réseau : détectez les schémas de réseau inefficaces et optimisez le netcode.

Quel Ressource Évaluer dans le Profilage de Serveur et Pourquoi

En fin de compte, réduire l'utilisation des ressources de vos serveurs de jeu dédiés signifie 1. Améliore la stabilité et l'expérience de vos joueurs et 2. Réduit vos coûts de calcul en cloud.

Il est essentiel d'évaluer chacun des éléments suivants et de revoir, en fonction de vos tests et de votre situation unique, ce sur quoi vous devriez passer du temps à optimiser.

Remarque : il y a évidemment plus, mais la liste de contrôle suivante est là pour vous aider à démarrer avec votre processus de profilage de serveur.

Comment Effectuer un Test A/B

  1. Configurez deux ou plusieurs variantes du jeu traitant d'un problème de performance particulier.

  2. Servez les nouvelles variantes à une petite sous-population de votre jeu, en utilisant la segmentation de votre backend de jeu.

  3. Comparez les métriques normalisées et la signification statistique pour quantifier l'amélioration de chaque variante.

  4. Iterez sur l'optimisation, préparez de nouvelles variantes et validez par rapport aux objectifs de performance.

Insights CPU

Objectif : Réduire l'utilisation du CPU pour permettre un nombre de joueurs plus élevé, une fréquence de ticks plus élevée ou des tailles d'instance plus petites.

Que revoir :

  • Identifiez les sous-systèmes à coût élevé par tick (IA, physique, réplication, logique de gameplay).

  • Ajustez les fréquences de tick des serveurs pour équilibrer la fidélité de la simulation par rapport à la charge CPU.

  • Recherchez les contentions de thread ou les tâches bloquées dans le Graphique des Tâches.

  • Optimisez les boucles lourdes ou les événements par tick.

Insights Mémoire

Objectif : Minimiser l'empreinte mémoire et éviter les plantages OOM, permettant un emballage de serveur plus dense.

Que revoir :

  • Surveillez les allocations persistantes (UObjects, grands tableaux).

  • Optimisez la mise en commun des objets :

    • Suivez les allocations transitoires et réduisez le recyclage des objets temporaires.

    • Évaluez la fréquence et la durée de la collecte des ordures.

  • Assurez-vous que l'utilisation de la mémoire évolue de manière linéaire avec le nombre de joueurs.

  • Réduisez la fidélité des modèles et des textures pour les acteurs lointains ou autrement non importants.

  • Envisagez des maillages statiques instanciés hiérarchiquement pour réduire l'utilisation des ressources de simulation de foule.

    • Intégrez les textures et les animations dans un seul matériau pour réduire l'empreinte mémoire.

Insights d'Utilisation du Réseau

Objectif : Réduire l'utilisation de l'égouttement, éliminer le décalage et améliorer la stabilité pour prendre en charge plus de joueurs simultanés.

  • Profitez du volume de données des acteurs et propriétés répliqués ; supprimez les mises à jour inutiles.

  • Optimisez les types de données pour réduire la taille des paquets dans la mesure du possible.

  • Mettez en œuvre la réplication delta et la compression avec la réplication par instantané comme solution de repli en cas de désynchronisation.

  • Réduisez les pics de bande passante lorsque les joueurs rejoignent ou effectuent des actions en consolidant plusieurs actions qui ne peuvent pas se produire séparément dans un appel de procédure à distance paramétrisé.

Temps de Tick et Stabilité des Frames

Objectif : Maintenir des fréquences de ticks stables pour éviter les pics de CPU et les désynchronisations réseau.   

Utilisation d'Actifs et d'E/S

Objectif : Réduire les pics d'E/S en runtime qui affectent indirectement les performances du CPU et du réseau.

Que revoir :

  • Profitez du streaming d'actifs et du chargement en runtime.

  • Surveillez le coût de la sérialisation pour les opérations de réplication et de sauvegarde/chargement.

  • Réduisez les pics d'E/S disque pouvant affecter le CPU/réseau.

Écrit par

l'équipe Edgegap