viernes, mayo 16, 2008

Eliminando de Linux la sincronización a través del "Big Kernel Lock"

Linux se diseño originalmente para funcionar en sistemas con un sólo procesador. Conforme fue evolucionando, obtuvo soporte para multiprocesador (SMP). Todas estas migraciones empiezan con la implementación de un mecanismo de sincronizaci?n(Big Kernel Lock) que evita que haya más de un hilo que esté ejecutando código del kernel. A partir de aquí, empieza a utilizarse mecanismos de contención más finos, de tal manera que se permita que existan varios hilos de ejecución ejecutándose en el kernel, en diferentes partes del sistema. Cada subsistema utiliza sus propios objetos de sincronización.
Sin embargo, Linux tiene todavía diversos sitios donde utiliza el big kernel lock, implementado en la función lock_kernel(). Segun un correo mandado por Ingo Molnar a la lista de desarrollo del kernel existen más de 1300 puntos en el kernel que utilizan este mecanismo de sincronización que reduce el paralelismo y crea problemas de latencia cuando se utiliza en sistemas en tiempo real.
Acaban de empezar a remozar todas esas zonas del kernel donde se utiliza el mecanismo implementado en lock_kernel() para sustituirlo por mecanismos que permitan la interrupción, cosa importante para adaptar el sistema a especificacioenes de tiempo real y poca latencia.

Technorati Tags:

No hay comentarios: