Google ha comenzado a implementar el modelo de flujos M:N

La empresa Google ofreció para incluir en el núcleo de Linux el primer conjunto de parches que implementan componentes necesarios para el funcionamiento del modelo de hilos M:N. La iniciativa de Google está relacionada con la apertura de una API que se desarrollaba a puertas cerradas SwitchTo para el núcleo de Linux, que permite el funcionamiento de un subsistema multihilo implementado en el espacio de usuario, utilizando el modelo de hilos M:N. Este subsistema es utilizado por Google para brindar servicios que requieren mínimas latencias. La planificación y gestión de la distribución de hilos se realiza completamente en el espacio de usuario, lo que permite reducir significativamente el número de operaciones de cambio de contexto gracias a la minimización de las llamadas al sistema.

Para garantizar el funcionamiento de dicho subsistema a nivel del núcleo de Linux, se ha implementado la API SwitchTo, que ofrece tres operaciones básicas: wait, resume y swap (cambio). Se ha propuesto un código para la nueva operación FUTEX_SWAP, que complementa FUTEX_WAIT y FUTEX_WAKE, y proporciona la base para crear bibliotecas multihilo en el espacio de usuario. FUTEX_SWAP también se puede utilizar para el envío de mensajes entre tareas, similar a RPC. Por ejemplo, actualmente para enviar un mensaje entre tareas se requiere realizar al menos cuatro llamadas a FUTEX_WAIT y FUTEX_WAKE, mientras que el uso de FUTEX_SWAP permitirá hacerlo con una sola operación, que se ejecutará de 5 a 10 veces más rápido.

Google ha comenzado a implementar el modelo de flujos M:N

En la práctica, actualmente se utilizan principalmente los modelos de hilos 1:1 y N:1. El modelo 1:1 se utiliza en NPTL (hilos POSIX) y LinuxThreads,y implica un mapeo directo de un hilo en el espacio de usuario a un hilo (unidad de planificación de ejecución) a nivel del núcleo. El modelo N:1 está implementado en GNU Pth,desplaza la planificación de hilos al espacio de usuario y permite que N hilos en el espacio de usuario se vinculen a un hilo en el núcleo, mientras que el núcleo no tiene información sobre los hilos de usuario.

La principal desventaja del modelo 1:1 son los altos costos de cambio de contexto entre el núcleo y el espacio de usuario. El modelo N:1 resuelve este problema, pero crea uno nuevo, ya que el flujo en el núcleo es una unidad indivisible de planificación de ejecución, los flujos de usuario vinculados a un flujo en el núcleo del sistema operativo no pueden escalarse a través de los núcleos de la CPU y quedan atados a un solo núcleo de la CPU.

El modelo M:N es híbrido y elimina todas las desventajas mencionadas anteriormente al emparejar N flujos en el espacio de usuario con M flujos en el núcleo del SO, lo que permite reducir los costos de cambio de contexto y garantizar la escalabilidad a través de los núcleos de la CPU. El precio de esta opción es una complejidad considerable en la implementación del planificador de flujos en el espacio de usuario y la necesidad de mecanismos de coordinación con el planificador del núcleo.

Reproducir video

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster