UNIVERSITE´ DE MONTREAL´ LOW-IMPACT OPERATING SYSTEM TRACING MATHIEU DESNOYERS DEPARTEMENT´ DE GENIE´ INFORMATIQUE ET GENIE´ LOGICIEL ECOLE´ POLYTECHNIQUE DE MONTREAL´ THESE` PRESENT´ EE´ EN VUE DE L’OBTENTION DU DIPLOMEˆ DE PHILOSOPHIÆ DOCTOR (Ph.D.) (GENIE´ INFORMATIQUE) DECEMBRE´ 2009 c Mathieu Desnoyers, 2009. UNIVERSITE´ DE MONTREAL´ ECOL´ E POLYTECHNIQUE DE MONTREAL´ Cette th`ese intitul´ee : LOW-IMPACT OPERATING SYSTEM TRACING pr´esent´ee par : DESNOYERS Mathieu en vue de l’obtention du diplˆome de : Philosophiæ Doctor a ´et´edˆument accept´ee par le jury constitu´ede : Mme. BOUCHENEB Hanifa, Doctorat, pr´esidente M. DAGENAIS Michel, Ph.D., membre et directeur de recherche M. BOYER Fran¸cois-Raymond, Ph.D., membre M. STUMM Michael, Ph.D., membre iii I dedicate this thesis to my family, to my friends, who help me keeping balance between the joy of sharing my work, my quest for knowledge and life. Je d´edie cette th`ese `ama famille, `ames amis, qui m’aident `aconserver l’´equilibre entre la joie de partager mon travail, ma quˆete de connaissance et la vie. iv Acknowledgements I would like to thank Michel Dagenais, my advisor, for believing in my poten- tial and letting me explore the field of operating systems since the beginning of my undergraduate studies. I would also like to thank my mentors, Robert Wisniewski from IBM Research and Martin Bligh, from Google, who have been guiding me through the internships I have done in the industry. I keep a good memory of these experiences and am honored to have worked with them. A special thanks to Paul E. McKenney, who I found has an insatiable curiosity and never-ending will to teach, discuss and learn. I really enjoyed working with him on the user-space RCU implementations. Thanks to my family, Normand, H´el`ene and Alexandre for their support through the duration of this research. A special thanks to my friend Etienne Bergeron, who helped me making this thesis better with his thorough reviews and relevant criticism. Thanks to everyone who reviewed this thesis: Nicolas Gorse and Matthew Khouzam. Thanks to the students with whom I shared the laboratory for the discussions, always useful to explore the many faces of a problem. Thanks to the Montr´eal Art Caf´estaff for feeding the writing of this thesis with their joviality and excellent Caf´eMoka. Thanks to Google, IBM Research, Ericsson, Autodesk, Natural Sciences and Engi- neering Research Council of Canada and Defence Research and Development Canada for funding this research. Thanks to the countless industry collaborators at Fujitsu, Wind River, Nokia, Siemens, Novell and Monta Vista. Thanks to the SystemTAP team for their collab- oration, especially to Frank Ch. Eigler. Finally, I would like to thank the Linux kernel developers community for their constructive criticism and their input. Special thanks to Ingo Molnar, Steven Rostedt, Andrew Morton, Linus Torvalds, Christoph Hellwig, Christoph Lameter, H. Peter Anvin, Rusty Russell, Andi Kleen, Tim Bird, Kosaki Motohiro, Lai Jiangshan, Peter Zijlstra and James Bottomley. I would not have developed such a thorough knowledge of operating systems without all these heated discussions on the Linux Kernel Mailing list. v Abstract Computer systems, both at the hardware and software-levels, are becoming in- creasingly complex. In the case of Linux, used in a large range of applications, from small embedded devices to high-end servers, the size of the operating system kernels increases, libraries are added, and major software redesign is required to benefit from multi-core architectures, which are found everywhere. As a result, the software de- velopment industry and individual developers are facing problems which resolution requires to understand the interaction between applications and all components of an operating system. In this thesis, we propose the LTTng (Linux Trace Toolkit next generation) tracer as an answer to the industry and open source community tracing needs. The low- intrusiveness of the tracer is a key aspect to its usefulness, because we need to be able to reproduce, under tracing, problems occurring in normal conditions. In some cases, users leave tracers active at all times in production, which makes the tracer overhead definitely critical. Our approach involves the design of synchronization primitives that meet the low-impact requirements. The linearly scalable and wait-free RCU (Read-Copy Update) synchronization mechanism used by the LTTng tracer fulfills these requirements with respect to data read. A custom-made buffer synchronization scheme is proposed to extract tracing data while preserving linear scalability and wait-free characteristics. By measuring the LTTng impact, we demonstrate that it is possible to create a tracer that satisfy all the following characteristics: low latency, deterministic real- time impact (wait-free), small impact on operating system throughput and linear scalability with the number of cores. Experiments on various architectures show that this tracer is portable. We propose a general model for superscalar multi-core systems with weakly- ordered memory accesses to perform formal verification of the RCU correctness and wait-free guarantees by model-checking. The LTTng buffering scheme is also for- mally verified for safety and progress. Formal verification demonstrates that these algorithms allow reentrancy from multiple execution contexts, ranging from standard thread to non-maskable interrupts handlers, allowing a wide instrumentation coverage vi of the operating system. vii R´esum´e Les syst`emes informatiques, tant au niveau mat´eriel que logiciel, deviennent de plus en plus complexes. En ce qui concerne Linux, syst`eme d’exploitation utilis´e dans une vaste cat´egorie d’applications, des petits syst`emes embarqu´es aux serveurs de haut-niveau, la taille des noyaux de syst`emes d’exploitations augmente, des li- brairies sont ajout´ees et une r´eing´enierie logicielle est requise pour b´en´eficier des architectures multi-cœurs, lesquelles sont omnipr´esentes. Par cons´equent, l’industrie du d´eveloppement logiciel et les d´eveloppeurs individuels font face `ades probl`emes dont la r´esolution n´ecessite de comprendre l’interaction entre les applications et tous les composants d’un syst`eme d’exploitation. Dans cette th`ese, nous proposons le traceur LTTng (Linux Trace Toolkit next generation) comme r´eponse aux besoins de tra¸cage de l’industrie et de la commu- naut´edu logiciel libre. La faible intrusivit´edu traceur est un aspect cl´emenant `a son utilisabilit´e, puisqu’il est n´ecessaire de reproduire, sous tra¸cage, des probl`emes observ´es sous des conditions d’ex´ecution normales. Dans certains cas, les usagers souhaitent laisser des traceurs actifs en tout temps sur des syst`emes en production, ce qui rend l’impact en performance d´efinitivement critique. Notre approche implique l’´elaboration de primitives de synchronisation qui rencontrent les requis de faible im- pact. Le m´ecanisme de synchronisation permettant la mise `al’´echelle et sans attente RCU (Read-Copy Update) utilis´epar le traceur LTTng remplit ces requis en ce qui con- cerne la lecture de donn´ees. Nous proposons un m´ecanisme de synchronisation pour extraire les donn´ees de tra¸cage en pr´eservant les caract´eristiques de mise `al’´echelle lin´eaire et de non-attente. En mesurant l’impact du traceur LTTng, nous d´emontrons qu’il est possible de cr´eer un traceur qui satisfait toutes les caract´eristiques suivantes : faible latence, comportement temps-r´eel d´eterministe (sans attente), faible impact sur le d´ebit du syst`eme d’exploitation et une mise `al’´echelle lin´eaire par rapport au nombre de processeurs. Une exp´erimentation sur plusieurs architectures permet d’observer la portabilit´edu traceur. Nous proposons un mod`ele g´en´eral pour les syst`emes superscalaires multi-cœurs avec acc`es m´emoire faiblement ordonn´es pour permettre la v´erification formelle des viii garanties quant `al’exactitude de l’ex´ecution et l’ex´ecution sans attente `al’aide de la v´erification de mod`ele. Le m´ecanisme de tampon de LTTng est ´egalement v´erifi´e formellement quant `ason exactitude et son ex´ecution sans attente. La v´erification formelle permet ´egalement de d´emontrer que ces algorithmes permettent la r´eentrance de plusieurs contextes d’ex´ecution, du fil d’ex´ecution standard aux gestionnaires d’in- terruptions non-masquables, permettant une large couverture d’instrumentation du syst`eme d’exploitation. ix Condens´e en fran¸cais La croissance en complexit´edes syst`emes informatiques actuels rend les tˆaches de d´everminage et l’analyse de performance de plus en plus difficiles. Le besoin en outils d’analyse qui tiennent compte de l’ensemble du syst`eme se fait sentir, mais leur impact en performance est g´en´eralement un obstacle `aleur adoption. Le tra¸cage est une technique ´eprouv´ee pour permettre l’´etude des interactions entre composants d’un syst`eme informatique, mais son impact en performance le rend inutilisable sous plusieurs charges de calcul. Cette recherche tente de rendre le tra¸cage largement utilisable par une vaste cat´egorie d’applications. Il importe ´egalement pour un traceur de modifier le comportement du syst`eme observ´ede fa¸con minimale afin de permettre la reproductibilit´edes probl`emes observ´es sans tra¸cage. Il est ´egalement important que le traceur n’utilise qu’une fraction des ressources du syst`eme et ne modifie son comportement que de fa¸con d´eterministe afin de permettre une activation du tra¸cage sur des syst`emes en production. Le probl`eme ´etudi´edans ce travail est l’extraction d’information de tra¸cage d’un syst`eme d’exploitation, ce qui implique la collecte d’information `apartir de l’ex´ecution de ce syst`eme d’exploitation et le transfert de cette information hors du noyau.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages233 Page
-
File Size-