Planificadores de Linux: por qué las métricas importan al estudiar los planificadores de CPU

Fuentes: Studying Linux Schedulers, and Why Metrics Matter

Un estudio universitario de la Universidad de Illinois (UIUC) sobre los planificadores del kernel de Linux revela que la métrica correcta lo es casi todo a la hora de evaluar decisiones de planificación. Los autores partieron de la idea clásica de mantener los procesos en el mismo núcleo para conservar caliente la caché, y se preguntaron qué ocurre con el acceso a memoria compartida en máquinas multisocket. En un Xeon de doble socket, según dónde se coloque un hilo, un fallo de caché puede resolverse sin acciones de coherencia, forzando un write-back al L3 compartido dentro del socket, o requiriendo un costoso trasiego entre sockets a través del chipset, con la penalización asimétrica que eso implica.

Para responder a cuánto importa mantener los procesos multi-hilo dentro de un mismo dominio LLC, qué tan bien lo hacen los planificadores actuales y cómo mejorarlos, el equipo comparó el planificador estándar de Linux con LAVD, además de restringir manualmente hilos a un socket con numactl. El hallazgo más llamativo: el planificador estándar y LAVD rindieron de forma muy parecida, pero fijar los hilos a un único socket con numactl aceleró algunas cargas hasta 3 veces, porque el balanceador reparte hilos entre sockets aunque eso perjudique al programa. Aun así, la métrica habitual de fallos read-for-ownership en L3 no siempre explicó el speedup, dejando sin resolver dos misterios —el caso de mediawiki, que apenas mejoró pese a menos fallos, y perlbench, que mejoró muchísimo sin motivo claro— que los autores no lograron cerrar antes de la entrega.