12 de enero de 2006

dynticks

El blog de Dave Jones es interesante porque es uno de los pocos hackers del kernel que se dedican a blogear y además de eso sobre cosas relacionadas con el kernel. Trabaja para redhat y como buen redhatero, mantiene cosas de Fedora, y entre ayer y hoy ha contado uno y dos de los trucos que utiliza para encontrar bugs. Eso de usar métodos absurdos para encontrar bugs es una de las cosas que menos se suelen hacer, pero es muy interesante

Pero lo más interesante (al menos para mi) es el último, sobre dynticks. Dynticks es una cosa bastante curiosa, que ahora mismo mantiene Con Kolivas (ese médico que sin tener ni puta idea de programar nada le entro curiosidad por el kernel y tan solo 6 meses despues de aprender las cosas básicas de C se puso a reescribir partes del gestor de procesos). Como explica Dave Jones la idea es simple: En vez de llamar al timer en una frecuencia regular para ver si hay algun temporizador que atender, espera a que el siguiente "temporizador" del kernel expire, sin estar mirandolo todo el rato como si estuviera haciendo "polling". Como desventaja tiene que es peor para el rendimiento o peor para la latencia o algo asi, por eso solo se activa despues de un tiempo de estar "idle"

Como ventaja, como comenta Dave Jones tiene que ahorra energía: Menos "ticks", menos trabajo, mas tiempo para descansar. A él le llega a ahorrar 2 Watios, y según cuenta hay algún que otro temporizador que se activa con demasiada frecuencia que se podría mirar a ver que hay (hay algunos que no se pueden arreglar, como dice ahi parece que la especificación USB es una puta mierda y no se puede hacer nada). Es muy interesante, porque durante la mayor parte del tiempo la frecuencia con la que se llamaba al timer del sistema eran 1000 Hz (mil veces por segundo), en vez del de 2.4 que era 100. Las ventajas son de latencia: Menos tiempo de respuesta. Las desventajas, que el estar a 1000 implica la pérdida de un poco de rendimiento (se cambia demasiado de contexto, se "ensucia" el cache del procesador, etc, razón por la algunos servidores usan HZ=100). Otra desventaja de tener HZ=1000 era que se consumía más energía, lo cual era malo para los portátiles, razón por la que muchos portatiles tambien se volvieron a 100 HZ. Con dynticks, los portátiles podrán disfrutar de HZ=1000 (minima latencia) mientras que se ahorra más energía de lo normal cuando no se esté haciendo nada. Dave Jones nos recuerda que Windows XP no tiene nada similar y que consume más que linux con dynticks estando "idle", y sinceramente me extrañaría que lo tuviera Mac OS X, es un "truco" demasiado. Que conste que si no recuerdo mal, Linus propuso hacer esto de una manera distinta y algo más sencilla (cuando el sistema no esté haciendo nada, contar solo ticks en el kernel cada X número de ticks, o algo asi)

No hay comentarios:

Publicar un comentario en la entrada