OVR Metrics Tool est une solution de surveillance des performances pour les casques Meta Quest qui fournit une large gamme d’indicateurs de performances, notamment la fréquence d’images, la chaleur, la limitation du GPU et du CPU, ainsi que le nombre de déchirures d’écran et d’images obsolètes par seconde. En plus des indicateurs système intégrés, les développeur·ses d’applications peuvent définir des indicateurs personnalisés pour suivre les performances ou les informations de débogage propres à l’application. Les indicateurs peuvent être visualisés en temps réel grâce à la superposition à l’écran ou enregistrés automatiquement dans des rapports CSV pour une analyse ultérieure. OVR Metrics Tool propose également des fonctionnalités de gestion des appareils à distance et est disponible sur le Meta Horizon Store.
OVR Metrics Tool est un outil Meta Quest qui peut fournir des informations sur les performances d’une application en cours d’exécution. Une bonne partie de ces informations est identique à celles qui sont fournies par les journaux Logcat VrApi. OVR Metrics Tool donne accès à ces informations dans une application installée sur un appareil et non depuis la ligne de commande. Pour plus d’informations sur l’utilisation de Logcat, consultez l’article Logcat.
Deux modes sont disponibles dans OVR Metrics Tool. En mode rapport, l’outil enregistre un rapport des performances d’une session VR qui pourra être lu une fois que l’outil aura terminé. Les données incluses dans le rapport peuvent facilement être exportées dans un fichier CSV contenant des images PNG. En mode affichage tête haute des performances, l’outil superpose les résultats, affichés sous la forme de graphes et d’informations en temps réel sur les performances, à des applications en cours d’exécution. Les utilisateur·ices peuvent définir ce mode comme leur mode préféré.
Les développeur·ses d’applications peuvent définir et rapporter des indicateurs personnalisés directement à partir de leurs applications, ce qui fournit des statistiques ciblées pour le débogage et l’optimisation pendant le développement. Ces indicateurs peuvent être surveillés en temps réel grâce à la superposition du HUD ou enregistrés dans des fichiers CSV pour une analyse ultérieure. En suivant les indicateurs de performance spécifiques à l’application en plus des indicateurs système standard, les développeurs obtiennent une meilleure visibilité sur le comportement de l’application et peuvent ainsi identifier et résoudre les problèmes plus rapidement.
OVR Metrics Tool propose un certain nombre d’autres statistiques relatives au GPU pour lesquelles l’outil de profilage ovrgpuprofiler doit être activé à partir d’un shell connecté. Pour plus d’informations sur son activation, consultez la page ovrgpuprofiler.
Collecter des données de performances avec OVR Metrics Tool
Les sections suivantes décrivent comment installer OVR Metrics Tool et l’utiliser pour collecter des informations sur les performances d’une application en mode rapport et en mode affichage tête haute des performances.
Installation
Veuillez télécharger la dernière version de l’outil depuis le Meta Horizon Store, puis l’installer. Vous pouvez également effectuer une recherche sur ovr metrics tool et télécharger l’application depuis l’App Store sur votre casque.
Utilisation d’OVR Metrics Tool
Vous pouvez lancer l’application OVR Metrics Tool depuis la bibliothèque d’applications de votre casque. Vous avez aussi la possibilité de connecter le casque à un ordinateur via ADB et de lancer la commande suivante :
adb shell am start omms://app
Au lancement de l’application sur le casque, l’écran principal a l’aspect suivant :
Depuis l’écran principal, vous pouvez activer et configurer les fonctionnalités de l’outil.
Mode rapport
Le mode rapport enregistre les données de performances d’une session VR. Les données incluses dans les rapports peuvent être récupérées depuis le casque ou visionnées dans celui-ci.
Pour activer le mode rapport, activez l’option intitulée Record all captured metrics to csv files (Enregistrer tous les indicateurs collectés dans des fichiers .csv). Vous pouvez également l’activer à l’aide de la commande ADB suivante :
Une fois ce mode activé, vous devez sélectionner les indicateurs à collecter dans l’onglet Stats (Statistiques) manuellement ou à l’aide de l’un des boutons d’option prédéfinis :
Le bouton Basic (Indicateurs de base) inclut les indicateurs suivants :
Niveau de batterie
Niveau CPU
Niveau GPU
Nombre moyen d’IPS
Nombre d’images périmées
Utilisation du CPU
Utilisation du GPU
Temps GPU de l’application
Advanced (Indicateurs avancés) inclut tous les indicateurs du bouton Basic, ainsi que les suivants :
Niveau de fovéation
Nombre d’images précoces
Largeur de l’eye buffer
Hauteur de l’eye buffer
Temps GPU de la distorsion du temps
Temps GPU des limites VrShell+
Nombre d’IPS de la distorsion de l’espace
Max Consecutive Stale Frames (Nombre maximal d’images périmées consécutives)
OVR Metrics Tool offre un accès à un large éventail d’indicateurs de performance pour affichage tête haute. Les utilisateur·ices peuvent sélectionner manuellement les indicateurs à afficher dans la superposition HUD à l’aide de l’onglet Stats pour la lecture de texte en temps réel, et de l’onglet Graphs pour visualiser les tendances historiques à court terme de ces indicateurs. Cela vous permet d’adapter l’affichage tête haute pour afficher les données de performance spécifiques les plus pertinentes par rapport à vos besoins d’application ou d’analyse. Certaines statistiques GPU avancées nécessitent l’activation de l’outil de profilage ovrgpuprofiler à partir d’un shell connecté avant de pouvoir être sélectionnées. Pour plus d’informations, consultez l’article Profilage du GPU avec ovrgpuprofiler.
Ces statistiques sont les suivantes :
Temps GPU limite
Utilisation CPU Core 0-7
VSS, RSS et Dalvik PSS de l’application
Indicateursovrgpuprofiler
Nombre moyen de sommets par image
Pourcentage moyen de remplissage par œil
Nombre moyen d’instructions par fragment
Nombre moyen d’instructions par sommet
Nombre moyen de textures par fragment
Pourcentage de temps de calcul des couleurs des fragments
Pourcentage de temps de calcul des couleurs des sommets
Pourcentage d’arrêts lors de la récupération des données des sommets
Pourcentage d’arrêts lors de la récupération des données des textures
Pourcentage d’échecs de récupération de la texture L1
Pourcentage d’échecs de récupération de la texture L2
Pourcentage d’exemples de textures utilisant le filtrage au plus proche
Pourcentage d’exemples de textures utilisant le filtrage linéaire
Pourcentage d’exemples de textures utilisant le filtrage anisotrope
Après avoir choisi des indicateurs, lancez une application et ouvrez une session de collecte des données. Notez que les données sont consignées à chaque exécution de l’application. Une fois la session terminée, ouvrez OVR Metrics Tool, cliquez sur le menu déroulant dans l’angle supérieur droit, puis sélectionnez View Recorded Sessions (Afficher les sessions enregistrées). Sélectionnez l’entrée correspondant à votre session pour afficher une série de graphes décrivant les performances. Lorsque l’appareil est connecté à un ordinateur, il est possible de récupérer les sessions enregistrées sous la forme d’un fichier CSV depuis /OVRMonitorMetricsService/CapturedMetrics/. La plateforme de développement Meta Quest peut être utilisée pour récupérer les indicateurs du gestionnaire de fichiers.
Mode affichage tête haute des performances
En mode affichage tête haute des performances, un graphe en temps réel des indicateurs sélectionnés s’affiche par-dessus les applications en cours d’exécution. Pour activer ce mode, activez l’option Enable Persistent Overlay (may require reboot) (Activer la superposition permanente (peut nécessiter un redémarrage)) dans l’écran principal. Vous pouvez également l’activer à l’aide de la commande ADB suivante :
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_OVERLAY
Une fois le mode affichage tête haute activé, vous devrez peut-être redémarrer votre casque pour que l’activation soit prise en compte. Selon les indicateurs choisis, les résultats s’afficheront à peu près comme ceci :
Par défaut, aucun indicateur n’est affiché en mode tête haute, même si le graphe Fréquence d’images est présent. Vous devez sélectionner les indicateurs à afficher manuellement dans l’onglet Stats (Statistiques) ou à l’aide des boutons Basic (Indicateurs de base) et Advanced (Indicateurs avancés) décrits à la section Mode rapport. L’onglet Graphs (Graphes) permet de configurer les graphes qui s’afficheront en superposition.
D’autres options de superposition sont disponibles sous les boutons. Il est possible d’activer et de désactiver (activer par défaut) les statistiques et indicateurs inclus dans le graphe. L’option Render Overlay on GPU (Afficher les éléments superposés via le GPU) permet d’activer et de désactiver l’affichage matériel des éléments superposés. Elle est activée par défaut.
L’option Lock Overlay to Head (Verrouiller les éléments superposés au niveau de la tête) est activée par défaut. Si vous la désactivez, l’affichage en mode tête haute est déverrouillé de la vue et les éléments affichés sont positionnés dans l’espace, mais le comportement qui en résulte peut être imprévisible et n’est pas recommandé. Des options de redimensionnement et de repositionnement des éléments affichés en mode tête haute sont disponibles sous cette option.
L’option Screenshot on Dropped Frames (Capture d’écran des images perdues) s’affiche au bas de l’écran principal. Si vous l’activez, une capture d’écran est effectuée si le nombre d’images perdues dépasse la limite définie pour la période spécifiée.
De nombreuses options d’affichage en mode tête haute peuvent être contrôlées à partir de la ligne de commande :
Activer la superposition
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_OVERLAY
Cette commande peut être suivie des paramètres facultatifs suivants :
--eb headlocked (true|false) // whether the overlay should be locked to view
--ef pitch (-90.0 to 90.0) // the pitch of the overlay (negative is down)
--ef yaw (-180.0 to 180.0) // the yaw of the overlay (negative is left)
--ei scale (1, 2, or 3) // the scale of the overlay
--ef distance (0.1+) // the distance the overlay appears (headlocked only)
Désactiver la superposition
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_OVERLAY
Activer/Désactiver l’ensemble des graphes ou statistiques
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_GRAPH // enable all graphs
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_STATS // enable all stats
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_GRAPH // disable all graphs
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_STATS // disable all stats
Activer/Désactiver des graphes ou statistiques individuels
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_GRAPH --es stat <stat> // add graph for <stat> to overlay
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_STAT --es stat <stat> // add <stat> to overlay
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_GRAPH --es stat <stat> // disable graph for <stat>
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_STATS --es stat <stat> // remove <stat> from overlay
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_CSV // records all metrics to CSV files in /sdcard/OVRMontorMetricsService/CapturedMetrics/
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_CSV // disables writing metrics to disk
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.ENABLE_DROPPED_FRAME_SCREENSHOT --ei count <count> --ei time <time> // enables functionality that will take a screenshot if <count> frames are missed within a window of <time>
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.DISABLE_DROPPED_FRAME_SCREENSHOT // disables automatic screenshot functionality
adb shell am broadcast -n com.oculus.ovrmonitormetricsservice/.SettingsBroadcastReceiver -a com.oculus.ovrmonitormetricsservice.LOG_STATE // prints a json blob to logcat with the current configuration state of OVR Metrics Tool, useful for automated tooling
Boîte à outils OVR Metrics Tool pour Unity
La boîte à outils OVR Metrics Tool propose des fonctionnalités d’intégration des données OVR Metrics dans votre application. Elle permet à votre application d’ajouter ces données aux rapports et aux éléments superposés d’OVR Metrics Tool.
Télécharger la boîte à outils
Téléchargez le package de la boîte à outils à partir de cette page.
Extrayez le fichier Unity/OVRMetricsToolSDK.unitypackage à partir du package téléchargé.
Dans Unity, accédez à Assets > Import Package > Custom Package et importez le package.
Accéder aux données des indicateurs
Les données des indicateurs se trouvent dans la structure OVRMetricsToolSDK.MetricsSnapshot qui contient un horodatage et des champs pour l’ensemble des valeurs de <stat> mentionnées ci-dessus.
L’extrait suivant illustre une méthode que vous pouvez utiliser pour afficher les données d’OVR Metrics dans votre application Unity :
AppendCSVDebugString permet d’ajouter des données de développement personnalisées au fichier CSV qui est généré lorsque l’option Record To CSV (Enregistrer dans un CSV) est sélectionnée. Les données de débogage seront placées dans la dernière colonne du fichier CSV. Si elles sont saisies à une fréquence supérieure à 1 Hz, elles seront placées dans une nouvelle ligne du fichier CSV avec des colonnes d’indicateurs vides. Pour cela, nous vous suggérons de marquer les transitions de scènes pour faciliter l’analyse du fichier CSV.
Définir une chaîne de débogage pour les éléments superposés
SetOverlayDebugString permet d’afficher des informations personnalisées sur les éléments superposés OVR Metrics Tool. Pour rendre visibles ces données, assurez-vous que l’option Show Debug Data (Afficher les données de débogage) est activée. Les données apparaissent au bas des éléments superposés. La chaîne de débogage des éléments superposés peut être mise à jour une fois par image et elle n’est pas conservée. Par défaut, cette chaîne de débogage est blanche, mais il est possible de personnaliser sa couleur en y incluant des balises <color=#{hex value}>...</color>.
La méthode suivante définit la chaîne dans le SDK Mobile natif :
Définir et soumettre des indicateurs d’application
Définissez des indicateurs personnalisés pour suivre les données propres à l’application, comme la santé du joueur ou du joueuse, le nombre d’ennemis ou tout autre indicateur de performance propre au jeu. Appelez cette fonction une fois pendant l’initialisation, généralement dans Start() :
displayName : nom en langage naturel affiché dans l’outil OVR Metrics
group : catégorie pour organiser les indicateurs (par exemple, « Joueur », « Gameplay »)
rangeMin/rangeMax : plage de valeurs valide pour l’indicateur
graphMin/graphMax : plage pour affichage du graphe
redPercent : seuil pour l’indicateur d’avertissement rouge (0,0 à 1,0)
greenPercent : seuil pour l’indicateur vert (0,0 à 1,0)
showGraph : afficher l’indicateur dans la vue du graphe
showStat : afficher l’indicateur sous forme de statistique textuelle
Après avoir défini vos indicateurs personnalisés, mettez-les à jour régulièrement (en général en Update() ou lorsque les valeurs changent) :
void Update()
{
// Update metrics with current values
OVRMetricsToolSDK.Instance.UpdateAppMetric("player_health", currentHealth);
OVRMetricsToolSDK.Instance.UpdateAppMetric("active_enemies", enemyCount);
}
Recommandation : n’envoyez pas d’indicateurs pour chaque image si les valeurs n’ont pas changé. Mettez à jour uniquement si nécessaire afin de réduire les dépenses.
Rapports sur les indicateurs clés
Les indicateurs intégrés de Unity peuvent être automatiquement suivis et visualisés dans OVR Metrics Tool grâce au composant Core Metrics Reporting. Cette fonctionnalité offre une surveillance en temps réel des données de performance critiques d’Unity, notamment l’utilisation de la mémoire et les statistiques de rendu, ce qui facilite l’identification des goulots d’étranglement en termes de performances pendant le développement.
Pour activer la fonctionnalité Core Metrics Reporting dans votre projet Unity :
Sélectionnez le GameObject Camera Rig (Support caméra) dans la hiérarchie de votre scène.
Dans l’Inspecteur, cliquez sur Add Component (Ajouter un composant) et recherchez OVR Metrics Manager.
Une fois ajouté, l’UI du composant offre des options pour configurer les indicateurs à surveiller :
Indicateurs de mémoire : suivez l’allocation de mémoire et les schémas d’utilisation
Indicateurs de rendu : surveillez les données de performance du rendu
Pour chaque catégorie d’indicateurs, vous pouvez choisir le format de visualisation :
Statistiques : affichez les indicateurs sous forme de valeurs numériques dans la superposition
Graphes : visualisez les indicateurs sous forme de graphes en temps réel montrant les tendances dans le temps
Les indicateurs Unity s’intègrent de manière transparente aux fonctionnalités de superposition et d’enregistrement au format CSV de l’outil OVR Metrics, et apparaissent aux côtés des données de performance du système. Cette vue unifiée vous permet de corréler les indicateurs propres à Unity avec les indicateurs de performance de l’appareil pour une analyse complète.