Thread scheduling in multi-core operating systems : how to understand, improve and fix your scheduler
Ordonnancement de fils d'exécution dans les systèmes d'exploitation multi-coeurs
Résumé
In this thesis, we address the problem of schedulers for multi-core architectures from several perspectives: design (simplicity and correctness), performance improvement and the development of application-specific schedulers. The contributions presented are summarized as follows : - Ipanema, a domain-specific language dedicated to thread schedulers for multi-core architectures. We also implement a new abstraction in the Linux kernel that enables the dynamic addition of schedulers written in Ipanema. - a series of performance and bug tracking tools. Thanks to these tools, we show that the Linux scheduler, CFS, suffers from a problem related to frequency management on modern processors. We propose a solution to this problem in the form of a patch submitted to the community. This patch allows to significantly improve the performance of numerous applications. - a scheduler model in the form of a “feature tree”. We implement these features independently in order to offer a new fully modular scheduler. This modular scheduler allows us to study exhaustively the different combinations of features, thus paving the way for the development of application-specific schedulers.
Dans cette thèse, nous traitons du problème des ordonnanceurs pour architectures multi-cœurs en l’abordant sous plusieurs angles : celui de la conception (simplicité et correction), celui de l’amélioration des performances et enfin celui du développement d’ordonnanceurs sur mesure pour une application. En résumé, les contributions présentées sont les suivantes : - Ipanema, un langage dédié au développement d’ordonnanceurs de processus pour multi-coeurs. Nous implémentons également au coeur du noyau Linux une nouvelle abstraction permettant d’ajouter dynamiquement un nouvel ordonnanceur écrit en Ipanema. - une série d’outils de recherche de bogues de performance. Grâce à ces outils, nous montrons que l’ordonnanceur de Linux, CFS, souffre d’un problème lié à la gestion de la fréquence sur les processeurs modernes. Nous proposons une solution à ce problème sous la forme d’un patch soumis à la communauté. Ce patch permet d’améliorer significativement les performances de nombreuses applications. - une modélisation des ordonnanceurs sous forme d’un “feature tree”. Nous implémentons ces fonctionnalités de façon indépendantes afin de proposer un nouvel ordonnanceur entièrement modulaire. Cet ordonnanceur modulaire nous permet d’étudier exhaustivement les différentes combinaisons de fonctionnalités ouvrant ainsi la voie au développement d’ordonnanceurs spécifiques à une application donnée.
Origine | Version validée par le jury (STAR) |
---|