<  Back to the Polytechnique Montréal portal

Performance Analysis of Complex Multi-Thread Applications Through Critical Path Analysis

Majid Rezazadeh

Masters thesis (2019)

[img] Restricted to: Repository staff only until 6 October 2021.
Cite this document: Rezazadeh, M. (2019). Performance Analysis of Complex Multi-Thread Applications Through Critical Path Analysis (Masters thesis, Polytechnique Montréal). Retrieved from https://publications.polymtl.ca/4094/
Show abstract Hide abstract

Abstract

La performance est un sujet critique pour les applications multi-fils énormes et complexes. De nombreux facteurs tels que le conflit de ressources, les algorithmes de synchronisation inadéquats, les opérations de disque lentes, etc. peuvent affecter la performance. De nombreux développeurs ne connaissent pas la nature de la cause fondamentale des latences inattendues, en raison de la grande base de code des applications et des multiples niveaux d’abstraction entre le code de l’application et le matériel. Le traçage est une technique qui enregistre les activités dans un système. De nombreux problèmes de performances peuvent être diagnostiqués à l’aide des informations collectées par une trace d’exécution. En raison du surcoût négligeable des traceurs reconnus, nous pouvons les déployer sur des systèmes en production, pour capturer les bogues qui se produisent rarement. Nous pouvons naviguer efficacement dans le grand nombre d’événements contenus dans les traces d’exécution à l’aide d’outils spécialisés. Cependant, même avec ces outils, il est difficile d’identifier la cause fondamentale des problèmes de performance sans une connaissance approfondie du système analysé. Dans les applications complexes telles que le navigateur Chromium, qui est notre objectif dans ce projet de recherche, le premier défi consiste à pouvoir collecter des informations unifiées et précises à partir de plusieurs couches de l’application et du système. L’objectif de ce projet de recherche est de proposer une solution pouvant faciliter le diagnostic des problèmes de performance en utilisant une analyse du chemin critique des exécutions. Après avoir expliqué notre méthode de traçage pour collecter simultanément les données de l’application et du noyau du système d’exploitation, nous compilons les données de traçage, collectées à partir de plusieurs couches du système, dans un modèle unifié et les utilisons pour analyser les flux de contrôle au niveau du noyau pour les actions du navigateur au niveau utilisateur. Ceci sert afin de détecter les problèmes de latence et d’identifier leurs causes principales. Nous montrons l’efficacité de la méthode proposée en détectant trois problèmes de performance de Chromium et en trouvant leurs causes fondamentales. Bien que nos cas d’utilisation soient basés sur le navigateur Chromium, la méthode proposée et les leçons apprises sont directement applicables à d’autres applications complexes multi-fils. En outre, nous proposons notre méthode d’extraction de flux critiques des actions des utilisateurs du navigateur, qui est directement utilisée dans la détection et l’analyse de problèmes de latence. À l’aide de l’analyse du chemin critique, nous pouvons identifier les goulots d’étranglement des exécutions qui affectent directement le temps d’exécution total. Par conséquent, ce genre de problèmes méritent d’être analysés.----------ABSTRACT: Performance is a critical subject for huge and complex multi-thread applications. Many factors such as resource contention, inadequate synchronization algorithms, slow disk operations, etc. can affect performance. Many developers are not aware of the existence of the root cause of unexpected latencies, due to the large codebase of applications and the multiple levels of abstraction between the application code and hardware. Tracing is a technique which records events occurring in the system. Many performance issues can be diagnosed using the information gathered by an execution trace. Because of the negligible overhead of popular tracers, we can deploy them on production systems to capture bugs that occur infrequently. We can efficiently navigate in the large number of events, contained in execution traces, using specialized tools. However, even with these tools, it is difficult to identify the real root cause of performance bugs, without a deep knowledge of the analyzed system. In complex applications like the Chromium browser, which is our focus in this research project, being able to collect precise unified information from several layers of the application/system is the first challenge. The objective of this research project is to propose a solution which can facilitate the diagnosis of performance issues using the critical path analysis of executions. After explaining our tracing method for collecting data, from the application and the operating system kernel simultaneously, we compile the tracing data collected from several layers of the system into a unified model and use it to perform kernel-level control flow analysis for user-level browser actions. This serves to detect latency issues and identify their main causes. We show the effectiveness of the proposed method by detecting three Chromium performance bugs and finding their root-causes. Although our use-cases are based on the chromium browser, the proposed method and lessons learned are directly applicable to other complex multi-thread applications. In addition, we propose our method on critical flow extraction of browser user actions, which is used directly in latency problem detection and analysis. Using critical path analysis, we can identify the bottlenecks of executions which directly affect the total execution time. Hence, these kinds of problems are worth analysing.

Open Access document in PolyPublie
Department: Département de génie informatique et génie logiciel
Academic/Research Directors: Michel Dagenais
Date Deposited: 06 Oct 2020 13:51
Last Modified: 06 Oct 2020 13:51
PolyPublie URL: https://publications.polymtl.ca/4094/

Statistics

Total downloads

Downloads per month in the last year

Origin of downloads

Repository Staff Only