Améliorer la surveillance des logiciels avec un échantillonnage adaptatif
Une nouvelle méthode adapte la collecte de données pour améliorer l'efficacité du suivi logiciel.
― 7 min lire
Table des matières
Surveiller le logiciel pendant qu'il tourne, c'est super important. Ça aide les développeurs à voir comment le logiciel se comporte, à dénicher des erreurs et à l'ajuster si besoin. En gros, ça veut dire qu'on collecte des Données sur le logiciel pendant qu'il est utilisé. Mais, ça peut ralentir le logiciel ou consommer trop de ressources. Pour y remédier, les développeurs choisissent souvent de surveiller seulement certaines parties du logiciel ou de collecter des données moins souvent. Même si ces méthodes aident à réduire la charge sur le système, elles peuvent ne pas donner une image vraie de ce qui se passe dans le logiciel.
Pour régler ce problème, on propose une nouvelle façon de surveiller le logiciel qui change à quelle fréquence on collecte des données selon ce que le logiciel fait. Cette approche est faite pour récolter des données qui représentent vraiment la Performance du logiciel sans trop puiser dans sa puissance ou causer des délais.
Pourquoi surveiller le logiciel ?
Quand un logiciel tourne, il doit gérer plein de tâches. La surveillance aide à capturer des infos importantes sur sa performance. Ces infos peuvent servir à plusieurs trucs, comme :
- Vérifier la qualité : S'assurer que le logiciel tourne bien sans bugs.
- Déboguer : Trouver et corriger les problèmes dans le code.
- Comprendre le comportement : Apprendre comment les utilisateurs interagissent avec le logiciel.
- Ajuster la performance : Modifier le logiciel en fonction de son utilisation en temps réel.
Un type de données communes collectées pendant la surveillance s'appelle "traces d'exécution". Ce sont des enregistrements de ce que le logiciel fait, y compris les fonctions appelées et les données traitées. Mais récupérer ces infos peut ralentir le logiciel, surtout si on collecte des détails.
Défis de la surveillance
Collecter les traces d'exécution tout le temps peut coûter cher en ressources. Si le système est occupé, et que la surveillance prend trop dessus, les temps de réponse pour les utilisateurs peuvent augmenter. Comme solution, les développeurs mettent souvent en place des règles pour collecter des données seulement de certaines parties du logiciel ou échantillonner les données collectées. Échantillonner, ça veut dire choisir un ensemble aléatoire d'opérations au lieu de tout collecter.
Cette méthode peut fonctionner, mais elle conduit souvent à rater des infos importantes. Les taux d'Échantillonnage fixes ne s'alignent pas toujours bien avec les changements soudains dans l'utilisation du logiciel. Par exemple, si plein d'utilisateurs commencent à utiliser le logiciel en même temps, l'échantillonnage fixe pourrait passer à côté de données clés.
Notre solution proposée
Pour recueillir de meilleures infos avec moins d'impact sur la performance, on a développé un processus qui s'adapte à la fréquence de collecte de données selon la charge de travail du logiciel. Le but est de s'assurer que les données récoltées représentent vraiment l'utilisation réelle sans surcharger le système.
Comment fonctionne le processus
Le nouveau processus fonctionne par cycles, avec trois activités clés :
- Décider quoi échantillonner : Il choisit quelles requêtes surveiller selon les conditions actuelles.
- Adapter le taux d'échantillonnage : Il ajuste la fréquence de collecte des données selon la performance du logiciel.
- Évaluer les échantillons : Il vérifie si les données collectées représentent fidèlement la performance globale du logiciel.
En utilisant ces activités ensemble, le processus peut s'ajuster à l'état actuel du logiciel et s'assurer que les données collectées sont à la fois utiles et pas trop lourdes pour la performance.
Les trois activités en détail
1. Décision d’échantillonnage
Cette étape consiste à vérifier si une nouvelle demande d’infos doit être enregistrée. Elle prend en compte le taux d’échantillonnage actuel et si la demande correspond aux modèles d'utilisation globaux.
Le système suit la fréquence de chaque type de demande. Si une certaine demande se produit souvent, elle n’a peut-être pas besoin d’être enregistrée à nouveau. Ce filtrage minutieux aide à s'assurer que tous les types de Demandes sont surveillés sans surcharger le système.
2. Adaptation du taux d’échantillonnage
Dans cette étape, le système regarde comment le logiciel fonctionne et ajuste la fréquence de collecte des données en conséquence. Si le logiciel répond rapidement et efficacement, il peut augmenter le taux d'échantillonnage pour capturer plus de données. Par contre, si ça commence à ralentir, il réduit le taux d'échantillonnage pour diminuer l'impact sur la performance.
Cette activité empêche la surveillance d'interférer avec le fonctionnement normal du logiciel et garantit une expérience utilisateur fluide.
3. Évaluation des échantillons
Après avoir collecté les données, cette étape compare les données surveillées à des normes pour décider si elles représentent bien la performance du logiciel. Si les données respectent des critères spécifiques de qualité et de quantité, elles peuvent être utilisées pour des analyses plus approfondies.
Ça assure que les échantillons collectés sont vraiment utiles pour comprendre et améliorer le logiciel.
Évaluation du processus proposé
Pour s'assurer que notre processus de surveillance fonctionne comme prévu, on l’a testé sur un ensemble d'applications logicielles communes qui reflètent l'utilisation typique dans des situations réelles. On a comparé notre approche adaptative avec deux autres méthodes : une qui échantillonne en fonction de la charge de travail et une autre qui utilise un taux fixe pour l'échantillonnage.
Les résultats ont montré que notre nouvelle méthode a collecté des données qui représentaient mieux la performance globale du logiciel tout en maintenant l'impact sur les temps de réponse au minimum.
Résultats et observations
Lors de l'évaluation, on a découvert que :
- La méthode d'échantillonnage adaptatif a conduit à un taux d'erreur plus bas en comparant les données collectées à la performance réelle. Ça veut dire que les données recueillies étaient plus fiables pour comprendre comment le logiciel fonctionne.
- Il y avait aussi moins d'impact sur la performance globale comparé aux autres méthodes, qui surchargeaient souvent le système et ralentissaient les temps de réponse.
- Le système a pu gérer des pics soudains de demandes d'utilisateurs sans provoquer de gros retards ou rater des données importantes.
Conclusion
En conclusion, surveiller le logiciel en temps réel est essentiel pour maintenir sa qualité et sa performance. Notre nouveau processus d'échantillonnage adaptatif offre une façon de collecter des données représentatives sans trop solliciter les ressources du système.
En ajustant la fréquence de collecte des données selon la charge de travail actuelle du logiciel, on s'assure que les développeurs aient les infos nécessaires pour continuer à améliorer leur logiciel tout en offrant une expérience fluide aux utilisateurs.
Nos découvertes laissent penser que l'utilisation de l'échantillonnage adaptatif pourrait devenir une pratique standard dans l'industrie du développement logiciel, aidant les équipes à prendre des décisions éclairées basées sur des données précises et opportunes.
Les recherches futures se concentreront sur l'implémentation de ce processus dans différents langages de programmation et sur des tests dans des systèmes distribués pour élargir son applicabilité et son efficacité.
Titre: Software Runtime Monitoring with Adaptive Sampling Rate to Collect Representative Samples of Execution Traces
Résumé: Monitoring software systems at runtime is key for understanding workloads, debugging, and self-adaptation. It typically involves collecting and storing observable software data, which can be analyzed online or offline. Despite the usefulness of collecting system data, it may significantly impact the system execution by delaying response times and competing with system resources. The typical approach to cope with this is to filter portions of the system to be monitored and to sample data. Although these approaches are a step towards achieving a desired trade-off between the amount of collected information and the impact on the system performance, they focus on collecting data of a particular type or may capture a sample that does not correspond to the actual system behavior. In response, we propose an adaptive runtime monitoring process to dynamically adapt the sampling rate while monitoring software systems. It includes algorithms with statistical foundations to improve the representativeness of collected samples without compromising the system performance. Our evaluation targets five applications of a widely used benchmark. It shows that the error (RMSE) of the samples collected with our approach is 9-54% lower than the main alternative strategy (sampling rate inversely proportional to the throughput), with 1-6% higher performance impact.
Auteurs: Jhonny Mertz, Ingrid Nunes
Dernière mise à jour: 2023-05-01 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2305.01039
Source PDF: https://arxiv.org/pdf/2305.01039
Licence: https://creativecommons.org/licenses/by-sa/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.