Machine learning en linux kernel: implementacion de un predictor de migraciones forzadas en schedulers multicore
Resumen
Si bien el Completely Fair Scheduler (CFS) de Linux es capaz de proporcionar equidad entre procesos y de manejar la ubicación y migración de estos a través de un load balancer, existen trabajos previos que proponen la integración de Machine Learning (ML) como una herramienta potencial para refinar las decisiones del kernel. En este trabajo, se analiza un caso específico de migración de tareas, donde algunas son migradas forzosamente entre cores. Este escenario es subóptimo especialmente cuando, por condiciones específicas, se migra una tarea que se encuentra “caliente” en cache. Como solución a este problema proponemos el uso de ML de manera similar al trabajo [1] con el fin de predecir incidencias de migraciones forzadas. Para esto implementamos un sistema capaz de recolectar datos de migraciones en llamadas a la función can_migrate_task () y utilizamos estos datos para (i) entrenar modelos de ML, (ii) realizar inferencias en espacio de kernel y (iii) configurar el modelo en tiempo real a través de LibML, una librería que permite hacer uso de redes neuronales de manera híbrida (espacio de usuario y kernel). Los experimentos realizados con modelos entrenados para la predicción de migraciones forzadas muestran que es posible predecir este escenario en espacio de kernel con alta precisión alcanzando alrededor del 97 % de exactitud en promedio para todas las cargas de trabajo utilizadas. Adicionalmente, esta implementación no impacta significativamente el performance del kernel, teniendo el kernel modificado un promedio de tiempos de ejecución 2.3 % menor al del original. Although Linux’s Completely Fair Scheduler (CFS) is capable of achieving fairness and managing task allocation and migration among cores through a load balancer, recent studies have proposed the use of low level Machine Learning (ML) for optimizing kernel decisions. In this work, a specific case of scheduling decisions is studied, where tasks are migrated aggressively between cores, either due to being cache-cold, having different NUMA node affinities or having too many failed balance attempts. This is sub-optimal especially when cache-hot tasks are forcefully migrated due to the latter condition being true. In order to solve this problem, this work proposes the use of ML in a way similar to [1] in order to predict incidences of forced migrations. For this, we implemented a system capable of collecting migration related data from calls to the can_migrate_task () function and using these to (i) train ML models, (ii) make inferences in kernel space, (iii) configure models in real time through LibML, a library that allows the use of neural networks in kernel and user space in a hybrid manner. Experiment results where neural networks were trained in userspace with collected migration datasets show that it is possible to predict the occurrence of aggressive migrations with a high precision, reaching accuracy values above 95 % in general terms when running in kernelspace. Additionally, these inferences don’t seem to impact performance significantly, as the modified kernel’s average runtime for all benchmarks is 2.3 % lower than the original.