OProfile est un outil de contrôle de performance sur tout le système. Il utilise le matériel de contrôle de performance sur le processeur pour récupérer des informations sur le noyau et les exécutables du système, comme lorsqu'il s'agit de mémoire, le nombre de requêtes de cache L2 et le nombre d'interruptions matérielles reçues. Sur un système Red Hat Enterprise Linux, le paquetage RPM oprofile doit être installé afin d'utiliser cet outil.
De nombreux processeurs incluent du matériel de contrôle dédié à la performance. Ce matériel permet de détecter lorsque certains évènements se produisent (comme les données demandées ne se trouvant pas en cache). Le matériel prend généralement la forme d'un ou plusieurs compteurs qui sont incrémentés chaque fois qu'un évènement se produit. Lorsque la valeur du compteur "redémarre," une interruption est générée, permettant de contrôler la quantité de détails (et ainsi, de coûts) produits par le contrôle de performance.
OProfile utilise ce matériel (ou un substitut basé sur une horloge dans le cas où le matériel de contrôle de performance n'est pas présent) pour recueillir des échantillons de données associées aux performances chaque fois qu'un compteur produit une interruption. Ces échantillons sont écrits périodiquement sur disque ; à une date ultérieure, les données contenues dans ces échantillons peuvent être utilisées pour produire des rapports sur la performance au niveau du système ou des applications.
![]() | Important |
---|---|
La prise en charge du noyau pour OProfile dans Red Hat Enterprise Linux 3 est basé sur le code du noyau de développement 2.5. Lors de références à la documentation de OProfile, des fonctions spécifiques à 2.5 s'appliquent à OProfile dans Red Hat Enterprise Linux 3, même si la version du noyau est 2.4. Il en est de même pour les fonctions de OProfile spécifiques au noyau 2.4 qui ne s'appliquent pas à Red Hat Enterprise Linux 3. |
OProfile est un outil utile, mais faites attention à certaines restrictions lors de son utilisation :
Utilisation de bibliothèques partagées — Les exemples de code dans les bibliothèques partagées ne sont pas attribués à des applications particulières à moins que l'option --separate=library ne soit utilisée.
Les échantillons de contrôle de performance sont inexacts — Lorsque un registre de contrôle de performance déclenche un échantillon, la gestion d'interruptions n'est pas précise comme l'exception d'une division par zéro. Vu que l'exécution d'instructions par le processeur ne fonctionne pas, l'échantillon peut être enregistré sur une instruction voisine.
oprofpp n'associe pas correctement des échantillons pour les fonctions inline — oprofpp utilise un simple mécanisme de gamme d'adresses afin de déterminer dans quelle fonction se trouve une adresse. Les échantillons de fonctions inline ne sont pas attribués à la fonction inline, mais plutôt à la fonction dans laquelle la fonction inline a été insérée.
OProfile accumule les données de plusieurs exécutions — OProfile est un profileur sur tout le système et s'attend à ce que les processus démarrent et s'arrêtent de nombreuses fois. Ainsi, les échantillons de multiples exécutions s'accumulent. Utilisez la commande opcontrol --reset pour supprimer les échantillons d'exécutions précédentes.
Problèmes de performance qui ne sont pas limités au CPU — OProfile trouve en général des problèmes de processus qui sont liés au CPU. OProfile n'identifient pas les processus qui sont endormis vu qu'ils attendent que des verroux ou d'autres évènements se produisent (par exemple, un périphérique E/S qui doit terminer une opération).
Sous Red Hat Enterprise Linux, seuls les noyaux à plusieurs processeurs (SMP) ont le support de OProfile activé. Afin de déterminer quel noyau est en cours d'exécution, exécutez la commande suivante :
uname -r |
Si la version du noyau renvoyée se termine par .entsmp, le noyau multiprocesseur est en cours d'exécution. Dans le cas contraire, installez-le via Red Hat Network ou depuis les CD-ROM de la distribution, même si le système n'est pas un système multiprocesseur. Le noyau multiprocesseur peut être exécuté sur un système à un seul processeur.
Le Tableau 43-1 offre un bref aperçu sur les outils fournis avec le paquetage oprofile.
Commande | Description |
---|---|
opcontrol | Configure les données recueillies. Reportez-vous à la Section 43.2 afin d'obtenir davantage d'informations. |
op_help | Affiche les évènements disponibles pour le processeur du système avec une courte description pour chacun. |
op_merge | Fusionne plusieurs échantillons du même exécutable. Reportez-vous à la Section 43.5.4 pour de plus amples informations. |
op_time | Donne un aperçu sur tous les exécutables. Reportez-vous à la Section 43.5.1 pour de plus amples informations. |
op_to_source | Crée une source annotée pour un exécutable si l'application a été compilée avec des symboles de débogage. Reportez-vous à la Section 43.5.3 pour de plus amples informations. |
oprofiled | Tourne comme un démon pour écrire périodiquement des données échantillon sur le disque. |
oprofpp | Récupère les données du profil. Reportez-vous à la Section 43.5.2 pour de plus amples informations. |
op_import | Convertit des fichiers de base de données échantillons de format binaire étranger en format natif du système. Utilisez cette option uniquement lors de l'analyse d'une base de données échantillon d'une architecture différente. |
Tableau 43-1. Commandes de OProfile
Précédent | Sommaire | Suivant |
Ressources supplémentaires | Niveau supérieur | Configuration de OProfile |