Qu'est-ce qu'un profileur continu ?
UN profileur continu est unoutil d'aide au développement de code. Ce système fonctionne en notant les ressources dont chaque ligne a besoin. Ce type de service permet aux développeurs de voir les effets de chaque fonction d'un programme, et ainsi de retracer la cause première des problèmes de performances, qui peuvent être dus à des conflits avec les verrous sur les ressources détenues par d'autres logiciels.
Voici notre liste des quatre meilleurs profileurs continus :
- Profileur continu Datadog Cet outil fait partie d'une plate-forme plus complète d'outils de surveillance du système et est proposé dans un package avec un moniteur de performances des applications.
- Granulés gProfiler Il s'agit d'un outil autonome disponible dans les versions pour Google Cloud Platform, Azure, AWS et les serveurs sur site.
- Amazon CodeGuru Ce service en ligne est proposé dans des versions destinées aux développeurs et aux applications en direct exécutées sur la plateforme AWS.
- Générateur de profils Google Cloud Ce service de Google s'adresse aux développeurs et peut analyser le code sur d'autres plateformes cloud, pas seulement Google. Il peut également examiner les performances du code sur vos serveurs.
Vous pouvez en savoir plus sur chacune de ces options dans les sections suivantes.
Leprofileur continudonne un aperçu en direct des opérations du code que les programmeurs mettaient traditionnellement en place débogage messages à révéler.
Bien que les développeurs utilisent principalement des profileurs continus, ils peuvent également être utiles lors des tests du système, des tests d'acceptation et des opérations. Les commentaires d'un programme exécuté dans différents environnements changeront en fonction des différentes capacités de ressources et des autres logiciels en concurrence pour les mêmes ressources.
Il est prévu qu'un test de production soit révéler des problèmes cela n’était pas apparent dans l’environnement de test. Ces révélations peuvent entraîner le renvoi de programmes à l'équipe de développement pour être retravaillés.
Pourquoi utiliser un profileur continu ?
Un profil continu offre un service de test automatisé qui analyse l'accès aux ressources et ne recherche pas les erreurs de codage. Au lieu de cela, le rapport du profileur zoome sur les parties du programme qui semblaient présenter des problèmes. La résolution de ces problèmes peut éviter les blocages de ressources et également aider le code à s'exécuter plus rapidement.
Les profileurs continus examinent spécifiquement CPU , mémoire , et Interface E/S activité. Ils enregistrent le temps passé sur le processeur et le pourcentage de la capacité du processeur utilisé par le code. Les demandes d'E/S, l'allocation de mémoire au fil du temps et le temps total nécessaire à l'exécution d'une tâche sont également enregistrés.
Il n’y a pas de directives spécifiques sur la quantité CPU ou mémoire un processus devrait utiliser. Cependant, dans de nombreux cas, il est clair que l’utilisation de ces ressources augmente pendant l’exécution du code.
Problèmes avec le profilage continu
Bien qu’un examen du fonctionnement d’un programme en cours de développement puisse être utile, ces tests ne sont pas concluants. Même lors des tests d’acceptation dans un environnement sandbox, vous n’obtenez pas une image complète des performances d’un programme lorsqu’il est opérationnel. En effet, les profileurs continus sont généralement déployés une fois qu'une application a est passé à la production .
Même une fois le logiciel opérationnel, ses problèmes peuvent ne pas apparaître immédiatement. Par exemple, la combinaison de logiciels exécutés simultanément peut entraîner des problèmes, et ceux-ci problèmes de ressources ne se produira pas toujours. Ainsi, le logiciel peut fonctionner pendant un certain temps avant de rencontrer un ensemble spécifique de circonstances avec une combinaison précise d'autres logiciels en cours d'exécution qui créent un problème. La question se pose de savoir si le nouveau programme doit être adapté ou si l’un des autres programmes a contribué au manque de ressources.
Cela signifie que le profileur continu devra être exécuté, comme son nom l'indique, continu ETpour repérer les problèmes. Bien sûr, il se peut qu’il n’y ait jamais de problèmes, vous exécutez donc constamment ce logiciel de test système sans réel avantage. Si tu as outils de surveillance du système en place, vous détecterez alors les pénuries de ressources du serveur. Si vous avez un moniteur de performances des applications , cela vous dirait quel logiciel pousse le processeur à bout.
Types de profileurs continus
Il existe deux types d'outils de profilage continu. Ceux-ci sont profileurs d'échantillonnage et profileurs d'instrumentation .
Profileur d'échantillonnage
Un profileur d’échantillonnage ne prend pas une lecture constante de l’utilisation du processeur et de la mémoire. Au lieu de cela, il vérifie périodiquement , d'où le nom ' échantillonnage ' vient de. Le profileur examine également la pile d’appels de l’application, qui extrait la ligne du code exécuté à ce moment-là.
Profils d'instrumentation
Un profileur d'instrumentation est une version automatisée de ce que les programmeurs font traditionnellement pour déboguer un programme. Autrement dit, il insère des messages et des tests système qui sont écrits dans un fichier journal.
Les procédures du système de profileur d'instrumentation peuvent créer beaucoup de temps système et générer beaucoup de données de rétroaction. Par conséquent, ce type de profileur est moins populaire que le profileur d’échantillonnage.
Utiliser un profileur continu
Le profileur continu propose une trace de l'utilisation des ressources avec un enregistrement du point dans le code que le programme a atteint à ce moment. Ces profils peuvent être exécutés pendant une période. Il est alors courant de comparer les profils les uns par rapport aux autres. Cela vous permet de voir anomalies . Si, par exemple, vous obtenez une activité similaire du processeur et de la mémoire à plusieurs reprises, puis obtenez un pic dans les métriques, vous pouvez alors revenir à ce moment-là et voir exactement ce qui était en cours d'exécution.
Certains systèmes de profilage continu effectueront des comparaisons pour vous. Une autre option consiste à introduire la sortie du profileur de constantes dans un outil d'analyse de données , comme Splunk, pour comparer les périodes de fonctionnement pour les variations de performances.
Étant donné que la valeur du profilage d’exécution de code nécessite d’établir une référence en matière de performances, vous devez également démarrer et arrêter la trace. Le choix des heures de profilage est connu sous le nom de profilage ad hoc plutôt qu’un profilage continu. La décision quant au moment d’effectuer ces traces est une décision personnelle. Une stratégie alternative pour le profilage ad hoc consisterait à échantillonner des périodes quotidiennes à intervalles réguliers sur une semaine. Le démarrage et l'arrêt de la trace peuvent alors être automatisés selon un planning.
Graphiques de flamme
Une présentation fréquemment utilisée pour communiquer les résultats d'un profileur continu est la graphique de flamme . Ceux-ci montrent la consommation d'une ressource, telle que la capacité du processeur, ainsi que une pile avec les processus les plus longs à la base, en s'adaptant au processus le plus court à un moment donné. La coloration choisie pour le graphique de flamme est souvent jaune, orange et rouge, soulignant le nom de ce format visuel.
Tous les outils de profilage continu n'utilisent pas ce format. Certains services de surveillance utilisent le graphique de flamme pour d'autres fonctions ainsi que le profileur de constante. Par exemple, Datadog a utilisé un graphique de flamme pour son profileur continu et son service de traçage distribué dans son écran de sortie.
Outils pour le profilage continu
Il existe aujourd'hui un petit nombre de profileurs continus disponibles sur le marché. Un facteur important à prendre en compte lors du choix d'un profileur continu est le langage de programmation dans lequel votre code est écrit. En effet, les profileurs constants doivent entrer dans le code et comprendre son format pour identifier chaque instruction. Une autre variable à surveiller est la plate-forme sur laquelle le profileur continu s'exécutera. Par exemple, si votre code s'exécute dans un compte AWS, vous devez exécuter votre profileur constant dans ce même environnement.
Notre méthodologie de sélection d'un profileur continu
Nous avons examiné le marché des outils de profilage continu et analysé les options en fonction des critères suivants :
- Le choix du profilage ad hoc ainsi que du profilage constant
- Un outil qui a une sortie graphique pour les profils
- Une fonctionnalité pour comparer les profils
- La possibilité d'exporter des profils pour analyse dans d'autres outils
- Un package capable de parcourir de nombreux langages de programmation différents
- Un essai gratuit ou un système de démonstration pour une évaluation gratuite
- Un système qui peut s'intégrer aux applications et aux plateformes cloud mais qui est proposé à un prix raisonnable
En utilisant cet ensemble de critères, nous avons examiné les outils de profilage continu . Malheureusement, il n'existe pas beaucoup de systèmes disponibles, mais nous avons veillé à inclure des outils autonomes et des profileurs continus qui font partie d'une suite plus complète d'outils de surveillance et de gestion du système.
Les meilleurs profileurs continus
1. Profileur continu Datadog
Chien de données est une plateforme SaaS qui propose différents modules de surveillance du système. L'un des plans disponibles sur cette plateforme est le Moniteur de performances des applications + profileur continu . La combinaison de ces deux services vous permet de laisser l'APM fonctionner en permanence tout en utilisant le profileur pendant des périodes spécifiques qui présentent des problèmes de performances inquiétants. Le profileur continu utilise la même technologie que celle utilisée par Datadog. traçage distribué pour les microservices.
Le profileur continu est destiné à être utilisé en production. Il peut fonctionner via du code écrit en .NET, Python, Go, Node JS, C++, Java, Ruby et PHP.
Le package APM + Continu Profiler est un service d'abonnement, et il peut être utilisé conjointement avec d'autres modules, tels que Datadog Infrastructure, pour améliorer la surveillance des ressources. De plus, Datadog met à disposition le profileur continu et d'autres modules sur un Essai gratuit de 14 jours .
deux. Granulés gProfiler
Granulé est une plateforme d'optimisation de système et propose un outil supplémentaire dans son profileur continu appelé gProfils . Le système est disponible sur de nombreux supports, avec installation sur la plateforme sur laquelle vous souhaitez mettre en œuvre le profilage ; cela inclut Google Cloud Platform, AWS, Azure et les serveurs sur site via Docker. Ce système est conçu pour le profilage des applications en direct.
Le gProfiler peut parcourir Java, Go, Python, Scala, Clojure et Kotlin. Il est destiné à être configuré pour fonctionner en continu plutôt que sur une base ponctuelle.
Le gProfiler est un gratuit , système open source, mais il peut être inclus avec un abonnement à la plateforme centrale Granulate, vous offrant ainsi des analyses de performances et des actions d'optimisation.
3. Amazon CodeGuru
Amazon CodeGuru est disponible pour analyser les programmes hébergés sur la plateforme AWS ou votre site. Le système est disponible en deux versions : CodeGuru Critique , à l'usage des développeurs, et Profileur CodeGuru , pour une utilisation en production. De plus, le système peut analyser le code écrit en Java et Python.
CodeGuru Profiler effectue une référence lorsqu'il capture des statistiques, il n'est donc pas nécessaire de créer un instantané de l'activité régulière pour comparer également les performances en cours. De plus, le package utilise Apprentissage automatique routines pour établir cette norme pour chaque application plutôt que d'attendre un profil de performances typique.
Le service suivra les performances du code exécuté sur Amazon EC2, Amazon ECS, AWS Fargate, Amazon EKS, AWS Lambda ou sur site. L’outil se concentre principalement sur Utilisation du processeur, et l'analyseur inclus dans le package recommandera des modifications au code qui amélioreront les performances et l'efficacité.
Amazon propose les deux services CodeGuru pour gratuit pendant 90 jours .
Quatre. Générateur de profils Google Cloud
Profileur de cloud de Google est un service gratuit pour les clients de Google Cloud. Bien que ce système soit hébergé sur le Plateforme Google Cloud , il peut effectuer un profilage continu pour les programmes exécutés sur AWS et Azure. Il peut également suivre les performances des applications exécutées sur vos serveurs.
Le Cloud Profiler est destiné à être utilisé avec des applications exécutées en production. Il suit l'activité dans le CPU et mémoire . Il est conçu pour fonctionner en continu et utilise la stratégie de profilage des échantillons. Le système comporte deux éléments : un agent et un serveur, qui incluent le tableau de bord.
La console du système affiche des graphiques de séries chronologiques en direct, y compris un graphique d'incendie . Il met également à disposition des statistiques tracées pour une analyse ultérieure. De plus, le système peut profiler du code écrit en Java, Go, Node.js et Python.
Même si tu as besoin un compte Google Cloud pour utiliser Cloud Profiler, vous pouvez commencer avec un essai gratuit structuré sous la forme d'un crédit de 300 $ pour les services Google Cloud mesurés, qui doivent être utilisés sur 90 jours. L’utilisation de Cloud Profiler n’utilisera aucun crédit.