3 research outputs found

    Surveillance de l'exécution et analyse de préemption entre machines virtuelles

    Get PDF
    RÉSUMÉ Au cours des dernières années, l'infonuagique a pris un essor considérable dans le domaine de l'informatique. Cette technologie oriente les parcs informatiques à grande échelle vers un modèle flexible, portable et souvent écoénergétique. Les fournisseurs de services infonuagiques offrent à leurs clients un environnement isolé, disponible, et surtout adapté à leurs besoins. Les machines virtuelles non seulement répondent à ces critères, mais procurent aussi des avantages supplémentaires. Les coûts de gestion de matériel, de consommation d'électricité et de licences de logiciels sont réduits dans un tel modèle. Ainsi, dans un nuage informatique, un grand nombre de machines virtuelles (VM, ou système invité), gérées par un hyperviseur, cohabitent sur un même poste physique dont elles se partagent les ressources. Cependant, les machines virtuelles sont entièrement isolées les unes des autres et ont toutes l'illusion d'avoir un accès exclusif et absolu aux ressources de leur hôte. Ces ressources sont souvent surengagées, dans le sens où elles apparaissent comme étant plus disponibles qu'elles ne sont réellement. Cette caractéristique introduit inévitablement des baisses de performance aux applications des machines virtuelles, dont les sources dépendent de l'environnement externe et sont à priori impossibles à identifier. L'objectif de cette étude est d'offrir aux administrateurs des machines hôtes un outil permettant de surveiller les interactions des systèmes d'exploitation invités et localiser facilement les anomalies de performance lorsqu'elles surviennent. Notre approche est basée sur le traçage, une méthode de surveillance qui s'est avérée efficace pour la compréhension du détail de fonctionnement d'une application. Par ailleurs, le traçage noyau permet d'effectuer la surveillance de vue globale d'un système d'exploitation. On peut ensuite analyser les interactions entre les applications utilisateurs qu'il sert et le matériel disponible qu'il exploite. En traçant simultanément le système hôte et les machines virtuelles, il est possible d'agréger les informations collectées de ces différentes sources et de présenter en clair à l'utilisateur les interactions entre les différents systèmes qui sont à priori invisibles. Cette étude se concentre sur les CPUs comme ressources partagées. Le déni du CPU à une machine virtuelle par le système hôte y introduit des délais invisibles, mais bien présents. Nous utilisons LTTng, un traceur à bas surcoût d'utilisation, pour collecter des traces noyau générées sur les différents systèmes d'exploitation. Une fois les traces agrégées, il est possible de modéliser l'ensemble des systèmes concernés et d'effectuer un bilan d'utilisation et d'interactions entre ceux-ci. L'indisponibilité du CPU pour chaque VM est alors présentée à l'administrateur du parc informatique, qui peut par la suite prendre les mesures nécessaires pour remédier aux problèmes. Cependant, tel que nous l'expliquerons dans ce mémoire, l'agrégation des traces est une tâche non triviale. En effet, chaque système d'exploitation, hôte ou invité, est responsable de sa propre gestion d'horloge. Par conséquent, les estampilles de temps assignées aux évènements des traces ne sont cohérentes que dans le contexte propre à chaque système. Un algorithme de synchronisation de traces distribuées a été adapté au contexte des machines virtuelles pour remédier à la non-conformité des horloges.----------ABSTRACT Over the past few years, Cloud computing has enjoyed a considerable growth in the field of computer science. This technology is leading warehouse-scale data clusters towards a more flexible, portable, and environmentally friendly model. Cloud providers offer to their customers environments that are isolated, available, and above all adapted to their needs. System virtualization not only meets these criterias, but also provides additional benefits. Management costs of hardware, energy consumption and software licenses are reduced in such a model. Thus, in a Cloud environment, a large number of virtual machines (VM, or guest system), managed by a hypervisor, coexist on the same physical computer whose resources are shared amongst them. However, virtual machines are fully isolated from one another and all have the illusion of absolute and exclusive access to the host's resources. These resources are often overcommitted whereas they appear as being more available than they actually are. This property inevitably induces performance setbacks in virtual machines. Because of system isolation, it is a priori impossible to find the source of performance problems that depend on the external environment. The objective of this study is to provide the host administrators with a tool to monitor the interactions of the guest operating systems, allowing them to easily locate and justify performance anomalies when they occur. Our approach is based on tracing, a monitoring method that has been proven effective to give detailed information about the functioning of an application. Furthermore, kernel tracing allows to monitor the operating system and assess the interactions between users' applications it serves and the available material which it operates. By tracing the host and the virtual machines simultaneously, it is possible to aggregate the information collected from these various systems and present clearly to the user the interactions between the various systems that are usually invisible. This study focuses on the CPU as a shared resource. The denial of a CPU by the host to a VM introduces invisible yet effective latency. We use LTTng, a low overhead userspace and kernel tracer, to collect kernel traces generated on different operating systems. Once the traces are aggregated, it is possible to model all of the systems concerned and to summarize resources contention and interactions between them. The unavailability of the CPU for each VM is then presented to the administrator of the host, which can then take the necessary steps to remedy the problems. However, as we present in this thesis, aggregation of traces turned out to be a non-trivial task. Indeed, each operating system, host or guest, is responsible for its own timekeeping. Therefore, drifts between the clocks of the different systems are introduced, and the timestamps assigned to trace events are not consistent across traces. A portable method to address clock drifts and trace synchronization is also proposed

    Software Tracing Comparison Using Data Mining Techniques

    Get PDF
    La performance est devenue une question cruciale sur le développement, le test et la maintenance des logiciels. Pour répondre à cette préoccupation, les développeurs et les testeurs utilisent plusieurs outils pour améliorer les performances ou suivre les bogues liés à la performance. L’utilisation de méthodologies comparatives telles que Flame Graphs fournit un moyen formel de vérifier les causes des régressions et des problèmes de performance. L’outil de comparaison fournit des informations pour l’analyse qui peuvent être utilisées pour les améliorer par un mécanisme de profilage profond, comparant habituellement une donnée normale avec un profil anormal. D’autre part, le mécanisme de traçage est un mécanisme de tendance visant à enregistrer des événements dans le système et à réduire les frais généraux de son utilisation. Le registre de cette information peut être utilisé pour fournir aux développeurs des données pour l’analyse de performance. Cependant, la quantité de données fournies et les connaissances requises à comprendre peuvent constituer un défi pour les méthodes et les outils d’analyse actuels. La combinaison des deux méthodologies, un mécanisme comparatif de profilage et un système de traçabilité peu élevé peut permettre d’évaluer les causes des problèmes répondant également à des exigences de performance strictes en même temps. La prochaine étape consiste à utiliser ces données pour développer des méthodes d’analyse des causes profondes et d’identification des goulets d’étranglement. L’objectif de ce recherche est d’automatiser le processus d’analyse des traces et d’identifier automatiquement les différences entre les groupes d’exécutions. La solution présentée souligne les différences dans les groupes présentant une cause possible de cette différence, l’utilisateur peut alors bénéficier de cette revendication pour améliorer les exécutions. Nous présentons une série de techniques automatisées qui peuvent être utilisées pour trouver les causes profondes des variations de performance et nécessitant des interférences mineures ou non humaines. L’approche principale est capable d’indiquer la performance en utilisant une méthodologie de regroupement comparative sur les exécutions et a été appliquée sur des cas d’utilisation réelle. La solution proposée a été mise en oeuvre sur un cadre d’analyse pour aider les développeurs à résoudre des problèmes similaires avec un outil différentiel de flamme. À notre connaissance, il s’agit de la première tentative de corréler les mécanismes de regroupement automatique avec l’analyse des causes racines à l’aide des données de suivi. Dans ce projet, la plupart des données utilisées pour les évaluations et les expériences ont été effectuées dans le système d’exploitation Linux et ont été menées à l’aide de Linux Trace Toolkit Next Generation (LTTng) qui est un outil très flexible avec de faibles coûts généraux.----------ABSTRACT: Performance has become a crucial matter in software development, testing and maintenance. To address this concern, developers and testers use several tools to improve the performance or track performance related bugs. The use of comparative methodologies such as Flame Graphs provides a formal way to verify causes of regressions and performance issues. The comparison tool provides information for analysis that can be used to improve the study by a deep profiling mechanism, usually comparing normal with abnormal profiling data. On the other hand, Tracing is a popular mechanism, targeting to record events in the system and to reduce the overhead associated with its utilization. The record of this information can be used to supply developers with data for performance analysis. However, the amount of data provided, and the required knowledge to understand it, may present a challenge for the current analysis methods and tools. Combining both methodologies, a comparative mechanism for profiling and a low overhead trace system, can enable the easier evaluation of issues and underlying causes, also meeting stringent performance requirements at the same time. The next step is to use this data to develop methods for root cause analysis and bottleneck identification. The objective of this research project is to automate the process of trace analysis and automatic identification of differences among groups of executions. The presented solution highlights differences in the groups, presenting a possible cause for any difference. The user can then benefit from this claim to improve the executions. We present a series of automated techniques that can be used to find the root causes of performance variations, while requiring small or no human intervention. The main approach is capable to identify the performance difference cause using a comparative grouping methodology on the executions, and was applied to real use cases. The proposed solution was implemented on an analysis framework to help developers with similar problems, together with a differential flame graph tool. To our knowledge, this is the first attempt to correlate automatic grouping mechanisms with root cause analysis using tracing data. In this project, most of the data used for evaluations and experiments were done with the Linux Operating System and were conducted using the Linux Trace Toolkit Next Generation (LTTng), which is a very flexible tool with low overhead

    Virtual machines CPU monitoring with kernel tracing

    No full text
    corecore