Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Mesurer les performances avec le profileur intégré

Firefox a maintenant un profileur intégré (nom de code SPS). Ce profileur permet, entres autres, de mieux mesurer la réactivité, de déterminer plus précisément à quoi est dû un changement dans les performances, et s'exécute dans des environnements et des plate formes pour lesquelles les profileurs externes ne sont généralement pas disponibles, telles que l'ordinateur d'un utilisateur standard, ou un appareil Android fermé par son constructeur.

Note: La plate forme technique du profileur est terminée, mais nous travaillons encore sur l'ajout de fonctionnalités. Surveillez le composant "Gecko Profiler" dans Bugzilla pour plus d'informations.

"Stackwalking" contre "pseudostack"

Le profileur est conçu pour opérer dans deux modes différents : "Pseudostack" (par défaut) ou "stackwalking".

Pseudostack

Pseudostack (le défaut) requiert une version de Firefox qui a été intrumentée au niveau du code source avec SAMPLE_LABEL("NAMESPACE", "NAME");'. Ceci ajoute un élément dans la pile d'appel qui est utilisé par le profileur pour déterminer par échantillonnage quel code est en train de s'exécuter. Ce mode est compatible avec toutes les architectures et environnements techniques.

For this to be effective, you do need to liberally use SAMPLE_LABEL throughout the code, and unfortunately it won't be able to dig into system library and drivers.

Because of the small overhead of the instrumentation, the sample label shouldn't be placed inside hot loops. A profile reporting that a large portion is spent in "Unknown" code indicates that the area being executed doesn't have sample label. As we focus on using this tool and add additional sample labels this will improve.

"Stackwalking"

"Stackwalking" est une fonctionnalité dépendant de l'architecture de la plate forme d'exécution dont la prise en charge est encore incomplète. L'objectif est de déterminer quel code s'exécute en parcourant la pile des appels sans instrumentation, sur les architectures où cela est possible. Ceci permet d'avoir plus de détails sur les appels, et aide à analyser les problèmes dans lesquels du temps est passé dans les librairies systèmes ou les pilotes. Nous travaillons sur les fonctions nécessaires pour ce parcours de pile et l'identification des symboles, et toute aide est la bienvenue.

Disponibilité

Le profileur fonctionne en mode soit "Pseudostack" soit "stackwalking" en fonction de votre environment. Voir la description au-dessus pour les différences entre ces 2 modes.

  Compilé en local Version "Nightly" Version officielle (Gecko 15.0+)
Windows Stackwalking (étapes de configuration à suivre) Stackwalking Pseudostack
Mac Stackwalking Stackwalking Pseudostack
Linux Pseudo stack (Bug concernant l'activation du stackwalking) Pseudo stack (Bug concernant l'activation du stackwalking) Pseudostack
Fennec Pseudostack Non supporté (Bug) Non supporté(Bug)
B2G Pseudostack (patchs à appliquer au source) ??? Non supporté(Bug)

Exécuter le profileur

  1. Utiliser une version "nightly" ou compiler avec ac_add_options --enable-profiling (activez aussi les optimizations afin que que le profilage soit significatif).
  2. Installer la dernière version de l'extension Profileur. Si le module n'est pas visible, activer 'Affichage ->Barre d'outils->Barre des modules'. Laissez l'extension se mettre à jour.
  3. Contrôler l'exécution du profileur depuis le menu qui s'ouvre en cliquant sur la partie Profileur de la barre des module en bas à droite.
  4. Démarrer le profiler avant d'exécuter l'action anormalement lente ou le laisser simplement tourner
  5. Utilisez le bouton "Analyse" ou le raccourci Ctrl-Shift-O (Cmd-Shift-O sur Mac OS X) pour visualiser le résultat en cours sur le site du Profileur
  6. Sauvegarder le profil en local, ou utiliser l'option Upload et mémoriser l'URL associée.
  7. Ouvrir un bug sur bugzilla concernant le problème de performance avec le fichier ou l'URL joint, ou les transmettre à une personne capable de s'en occuper

Profiler une compilation en local sous Windows

If you built Firefox for Windows locally and you would like to use the local symbols with the profiler, you will need to run an additional tool; see Profiling with the Built-in Profiler and Local Symbols on Windows.

Profiler Firefox mobile

  1. You'll need a custom build, this build should be built with optimization, STRIP_FLAGS="--strip-debug" and ac_add_options --disable-elf-hack (until we fix bug 747033) but should NOT be built with --enable-profiling.
  2. You'll need to have adb and arm-eabi-addr2line in your bash PATH, so use locate arm-eabi-addr2line (on linux) or mdfind name:arm-eabi-addr2line (on OS X) and stick an export to its location in ~/.bash_profile. The extension will invoke bash to use adb and addr2line.
  3. Install the latest version of the extension in your host machine's Firefox browser that has your phone reachable via ADB.
  4. On your first run use "Get Libs". You'll need to repeat this step when switching phones.
  5. Start Firefox mobile normally and hit "Pull". This will recognize the instance of Firefox mobile and restart it with profiling enabled. Run your benchmark and hit "Pull" again.

Profiler "Boot to Gecko"

Note: Pour l'instant une carte SD est requise, jusqu'à ce que le  bug 758697 soit fermé.

  1. You'll need a local build of Boot to Gecko; the default build configuration is fine.
  2. You'll need to have adb and arm-eabi-addr2line in your bash PATH, so use locate arm-eabi-addr2line (on linux) or mdfind name:arm-eabi-addr2line (on OS X) and stick an export to its location in ~/.bash_profile. The extension will invoke bash to use adb and arm-eabi-addr2line. If they are not there the process will fail or you'll only see raw addresses
  3. In order to get symbols to work you may need to avoid stripping them. I'm not sure the best way to do this. Some candidates are adding STRIP_FLAGS="--strip-debug"  to gonk-misc/default-gecko-config (this is copied to objdir-gecko/.mozconfig by some part of the build system)
  4. Install the latest version of the extension in your host (Desktop) machine's Firefox browser that has your phone reachable via ADB.
  5. On your first run use "Get Libs". You'll need to repeat this step when switching reflashing/switching phone (this step needs to be done every time you update gecko). "Get Libs" will skip any existing files, so you'll need to delete them so that the new ones get pulled. They are stored in /tmp/[device id]/
  6. Make sure B2G is running and hit "Pull". This will recognize the instance of B2G and restart it with profiling enabled. Run your benchmark and hit "Pull" again.

Profiling content processes. Apply this patch to the profiler add-on.

Warning: When you're done profiling restart Boot to Gecko using adb shell stop b2g && adb shell start b2g.

Contribuer

Le bug listant les problèmes ouverts est le bug 713227. Le source se situe dans tools/profiler.

Le source de l'extension Profileur se trouve sur : https://github.com/bgirard/Gecko-Profiler-Addon.

Le dépôt de source Cleopatra se trouve sur : https://github.com/bgirard/cleopatra.

Fonctionnalités prévues

Here's a list of feature ideas that we haven't committed to yet; feel free to add your ideas:

  • A "Doctor" extension that would detect if the user's browser periodically hangs for more than 500 ms and provide a UI notification with some profile data. The profile data can either be reported to Mozilla to correlate problems, have built in heuristics for resolving the problem (disabling the offending add-on, plug-in tab, db caches etc...), or be used by support for diagnostics.
  • Automatically turn on the profiler a few seconds prior to triggering the hang detectors and attach a profile to the minidump.

Capture d'écran

3b.png

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : tchevalier, Jmdesp
 Dernière mise à jour par : tchevalier,