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 le gameplay, le timing de la simulation et la réplication se comportent sous une charge multijoueur réelle. L'objectif est d'identifier les goulets d'étranglement et les limites de performance, ainsi que les risques de stabilité avant qu'ils n'impactent les joueurs ou l'infrastructure de production.

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

  • Quels facteurs limitent ou surconsomment le CPU, et pourquoi (par exemple, le nombre de joueurs, le taux de tick, l'IA, la physique ou la réplication) ?

  • Quels sous-systèmes dominent le coût par tick, et comment les changements de taux de tick affectent la qualité du gameplay, la stabilité de la simulation et l'utilisation du réseau ?

  • Qu'est-ce qui provoque des tremblements de réseau, des pics de réplication ou une désynchronisation côté serveur ?

  • Quelles allocations entraînent l'utilisation de la mémoire, comment la mémoire évolue-t-elle au fil du temps ou par joueur, et quelles conditions pourraient entraîner des crashes OOM (out-of-memory) ?

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

Epic Games fournit à tout utilisateur d'Unreal Engine des outils de profilage pouvant être utilisés avec Edgegap :

Unreal Trace Server

Unreal Trace Server est le “collecteur” de données de profilage de serveur.

En détail, c'est un service léger qui collecte, stocke et 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 CPU, la mémoire, le réseau et le comportement temporel en temps réel ou hors ligne.

Comment l'utiliser avec Edgegap :

  1. Configurer le traçage dans votre serveur Unreal Engine (événements intégrés et personnalisés).

  2. Enregistrer la trace sur le disque du serveur avec -tracefile, télécharger sur un stockage tiers et analyser hors ligne,

Unreal Insights

Unreal Insights est le “enregistreur” de données de profilage de serveur.

En détail, c'est l'outil de visualisation et d'analyse de performance 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, l'utilisation de la mémoire, le threading, le réseau et le comportement temporel pour identifier les goulets d'étranglement et les problèmes de scalabilité.

Comment l'utiliser avec Edgegap :

  1. Analyser les Insights de Mémoire et les Insights de Réseau.

  2. Utiliser ces insights pour Optimiser les Construits de Serveur.

Les Logs de Conteneur d'Edgegap

Disponibles sur la page de détail du déploiement de votre serveur de jeu, les logs de conteneur sont chaque action qui se produit dans le déploiement.

Ils vous aident à inspecter les logs de votre serveur de jeu en cas de problèmes, ou lors du débogage :

Attention: Une fois le déploiement arrêté, les logs de conteneur sont supprimés. Configurer un stockage tiers S3 de logs pour enregistrer les logs.

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

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

  • Détecter des modèles d'implémentation inefficaces causant des pics d'utilisation des ressources;

  • Localiser une utilisation inefficace des ressources dans des scénarios particuliers;

  • Vérifier les changements dans l'utilisation des ressources du serveur lors de l'optimisation;

  • Evaluer la consommation et la durée des ressources lors de l'initialisation du serveur.

  • Remarque: Les métriques historiques affichent les moyennes de valeur avec une période de temps de 1 minute, disponibles dans le niveau gratuit.

Des informations supplémentaires sur le déploiement peuvent être récupérées au format JSON :

Les Métriques de Conteneur d'Edgegap

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

La Supervision du Tableau de Bord d'Edgegap

Le tableau de bord d'Edgegap vous donne la possibilité de surveiller la scalabilité de votre serveur avec des analyses approfondies.

Disponible pour les utilisateurs qui passent à la formule “pay as you go” (ajoutez simplement une carte de crédit à votre compte gratuit, aucune dépense requise), il fournit des insights sur :

  • General Insights: surveillez les versions avec le nombre de serveurs en direct par version + aperçu de l'utilisation des ressources,

  • CPU Insights: résoudre les problèmes de serveurs lents dus à des opérations lourdes pour le processeur,

  • Memory Insights: atténuer les redémarrages de serveurs dus à la surcharge de mémoire allouée,

  • Networking Insights: détecter des modèles de réseaux inefficaces et optimiser le code réseau.

Quelle 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éliorer l'expérience de vos joueurs et 2. Réduire vos frais de cloud computing.

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

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

Comment faire des tests A/B

  1. Comparer les métriques sous différents nombres de joueurs pour mesurer l'évolution.

  2. Itérer sur l'optimisation et valider par rapport aux objectifs de performance.

Insights CPU

Objectif: Réduire les goulets d'étranglement du CPU pour permettre un nombre de joueurs plus élevé ou des tailles d'instance plus petites.

Ce qu'il faut examiner :

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

  • Ajuster les taux de tick des serveurs pour équilibrer la fidélité de la simulation par rapport à la charge du CPU.

  • Vérifier les contentions de threads ou les tâches bloquées dans le graphique de tâches.

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

Insights Mémoire

Objectif: Minimiser l'empreinte mémoire et prévenir les crashes OOM, permettant un empaquetage de serveurs plus dense.

Ce qu'il faut examiner :

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

  • Suivre les allocations transitoires et réduire le renouvellement des objets temporaires.

  • Évaluer la fréquence et la durée de la collecte de déchets.

  • S'assurer que la mémoire évolue de manière linéaire avec le nombre de joueurs.

Insights de l'Utilisation du Réseau

Objectif: Réduire l'utilisation d'egress et les pics réseau, améliorer la stabilité et supporter plus de joueurs simultanés.

  • Profilage de la réplication des acteurs et des propriétés ; supprimer les mises à jour inutiles.

  • Réduire la taille et la fréquence des paquets où possible.

  • Utiliser la réplication delta des propriétés et la compression.

  • Surveiller les pics de bande passante lors de l'arrivée des joueurs/de l'exécution d'actions.

Temps de Tick & Stabilité du Frame

Objectif: Maintenir des taux de tick stables pour éviter les pics de CPU et les désynchronisations réseau.   

Utilisation des Actifs & I/O

Objectif: Réduire les pics d'I/O en temps d'exécution qui impactent indirectement les performances du CPU et du réseau.

Ce qu'il faut examiner :

  • Profilage du streaming d'actifs et du chargement en temps réel.

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

  • Réduire les pics d'I/O disque pouvant affecter le CPU/réseau.

Écrit par

l'équipe Edgegap

Intégrer Edgegap facilement en quelques minutes

Intégrer Edgegap facilement en quelques minutes

Intégrer Edgegap facilement en quelques minutes