Publication:
OS-level frameworks for rapid prototyping of process scheduling algorithms on Linux

Loading...
Thumbnail Image
Official URL
Full text at PDC
Publication Date
2020
Advisors (or tutors)
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citations
Google Scholar
Research Projects
Organizational Units
Journal Issue
Abstract
Linux is equipped with multiple scheduling algorithms that are implemented as separate scheduling classes. Unfortunately, due to the current design of the scheduler these classes have to be created inside the kernel, which makes difficult to develop and debug new algorithms. In particular, for each new bug detected in the implementation of the algorithm it is necessary to recompile the kernel and reboot the system, thus making development at this level a time-consuming process. Some researchers resorted to prototyping scheduling algorithms via user space programs that use system calls to drive thread-to-core assignments. Nonetheless, this approach comes at the expense of an important overhead and many relevant low-level events cannot simply be monitored outside the kernel. At the same time, recent research has proven that the system performance can be severely degraded as a consequence of the simultaneous execution of threads that make intensive use of memory resources. Hence, the Linux scheduler has substantial room for improvement. Based on these observations, we established two objectives for this project: easing the prototyping of new scheduling algorithms, and putting into practice several solutions proposed for the shared-resource contention problem but that were never implemented at the kernel level. First, we strived to address the prototyping problem with a scheduling framework that could perform dynamic insertion of scheduling algorithms at runtime, without rebooting the system. We tackled this with a new variant of the Linux kernel, the FSAC, Framework for Scheduling Algorithm Creation kernel. Subsequently, we included support for prototyping in the opensource monitoring tool PMCTrack, and named this PMCSched. We did so to be able to develop resource-conscious scheduling algorithms, since PMCTrack already had all the support required for monitoring memory-related events such as cache-misses or memory bandwidth consumption. This second framework, focused on co-scheduling and monitoring, was intended for scheduling algorithms with different requirements. When the PMCSched framework was completed we developed a contention-aware scheduling algorithm MEMSCHED with which we intended to solve the aforementioned shared-resource contention problem. We also performed a comprehensive experimental evaluation of the implemented scheduling algorithm using a system equipped with an octa-core Intel processor, and compared its effectiveness with that of the current Linux scheduler.
Linux está equipado con múltiples algoritmos de planificación implementados como separadas clases de planificación. Desafortunadamente, debido al actual diseño del planificador estas clases deben ser creadas dentro del propio kernel, lo que dificulta el desarrollo y depuración de nuevos algoritmos. Esencialmente, por cada nuevo bug detectado en la implementación del algoritmo, es necesario recompilar el kernel y reiniciar el sistema, haciendo que el desarrollo a este nivel consuma mucho tiempo. Algunos investigadores intentaron prototipar algoritmos de planificación desde programas en espacio de usuario, empleando llamadas al sistema para forzar las asignaciones hilo-a-core. Sin embargo, esta estrategia es a expensas de una importante sobrecarga y muchos eventos de bajo nivel no pueden ser simplemente monitorizados fuera del kernel. Al mismo tiempo, investigación reciente ha demostrado que el rendimiento del sistema se puede ver severamente degradado como consecuencia de la ejecución simultánea de hilos que hacen uso intensivo de los recursos de memoria. Por tanto, el planificador de Linux tiene gran espacio para mejoras. Basados en estas observaciones, establecimos dos objetivos para este proyecto: facilitar el prototipado de nuevos algoritmos de planificación y poner en práctica varias soluciones propuestas para el problema de contención de recursos, que nunca habían sido puestas en práctica al nivel del kernel. Primero, para afrontar el problema del prototipado ideamos un framework de planificado, que podía realizar inserciones dinámicas en tiempo de ejecución, sin reiniciar el sistema. Esto supuso la creación de una variante del kernel de Linux, FSAC Framework for Scheduling Algorithm Creation. Seguidamente, incluimos todo el soporte necesario para prototipado en la herramienta de monitorización open-source PMCTrack, y llamamos a esta nueva utilidad PMCSched. Hicimos esto para ser capaces de desarrollar algoritmos conscientes de la situación de los recursos, dado que PMCTrack ya contaba con todo el soporte requerido para la monitorización de eventos relativos a memoria tales como los fallos de cache o el consumo de ancho de banda. Este segundo framework, centrado en el planificado grupal, fue diseñado para algoritmos con diferentes requisitos. Cuando el framework PMCSched fue completado, desarrollamos un algoritmo consciente de la contención MEMSCHED con el cual pretendíamos solucionar el previamente citado problema de contención de recursos. Realizamos así mismo una exhaustiva evaluación experimental del algoritmo de planificación implementado empleando un sistema octa-core Intel, y comparamos su eficiencia con la del actual planificador de Linux.
Description
Trabajo de Fin de Grado en Ingeniería Informática, Facultad de Informática UCM, Departamento de Arquitectura de Computadores y Automática, Curso 2019/2020.
Unesco subjects
Keywords
Citation