Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.2. Cerrojos en bucle de tiquetes

Una parte clave de cualquier diseño de sistema, es garantizar que un proceso no altere la memoria utilizada por otro proceso. Los datos no controlados en memoria pueden corromper la información y ocasionar fallas del sistema. Para evitarlo, el sistema operativo le permite a un proceso bloquear una parte de memoria, realizar una operación y luego desbloquear o liberar la memoria.
Una implementación de cerramiento de memoria común, es a través de 'Spinlocks' o cerrojos en bucle, los cuales le permiten a un proceso verificar continuamente si el cerrojo está disponible y tomarlo cuando lo esté, tan pronto como sea posible. Si hay varios procesos compitiendo por el mismo cerrojo, el primero en solicitar el cerrojo después de que haya sido liberado, lo obtendrá. Cuando todos los procesos tienen el mismo acceso a memoria, este enfoque es "justo" y funcionará bastante bien.
Lamentablemente, en un sistema NUMA, no todos los procesos tienen el mismo acceso a los bloques. Los procesos en el mismo nodo de NUMA como el cerrojo tienen pocas ventajas al obtener el cerrojo. Los procesos en nodos remotos de NUMA experimentan bloqueos y disminución en el rendimiento
Para solucionarlo, Red Hat Enterprise Linux implementó los cerrojos en bucle de tiquetes. Esta funcionalidad adiciona un mecanismo de cola de reserva para el cerrojo que permite a todos los procesos tomar un cerrojo en el orden que lo solicitaron. De esta manera se eliminan problemas de tiempo y ventajas no equitativas en solicitudes de cerrojo.
Aunque los cerrojos en bucle de tiquetes tienen más sobrecarga que un cerrojo en bucle común, escalan mejor y proporcionan mejor rendimiento en sistemas NUMA.