El round robin ponderado ( WRR ) es un programador de red para flujos de datos, pero también se utiliza para programar procesos .
La operación por turnos ponderada [1] es una generalización de la programación por turnos . Sirve un conjunto de colas o tareas. Mientras que el round robin recorre las colas o tareas y brinda una oportunidad de servicio por ciclo, el round robin ponderado ofrece a cada una un número fijo de oportunidades, según lo especificado por el peso configurado que sirve para influir en la porción de capacidad recibida por cada cola o tarea. . En las redes informáticas, una oportunidad de servicio es la emisión de un paquete, si la cola seleccionada no está vacía.
Si todos los paquetes tienen el mismo tamaño, WRR es la aproximación más simple al uso compartido generalizado de procesadores (GPS). Existen varias variaciones de WRR. [2] Los principales son el WRR clásico y el WRR entrelazado .
WRR se presenta a continuación como un programador de red . También se puede utilizar para programar tareas de forma similar.
Un programador de red por turnos ponderado tiene colas de entrada, . A cada cola se le asocia un número entero positivo, llamado peso . El planificador WRR tiene un comportamiento cíclico. En cada ciclo, cada cola tiene oportunidades de emisiones.
Los diferentes algoritmos WRR difieren en las distribuciones de estas oportunidades en el ciclo.
En el WRR clásico [2] [3] [4], el programador recorre las colas. Cuando se selecciona una cola , el planificador enviará paquetes, hasta la emisión del paquete o el final de la cola.
Sea , el peso máximo. En IWRR, [1] [5] cada ciclo se divide en rondas. Una cola con peso puede emitir un paquete en ronda sólo si .
Considere un sistema con tres colas y sus respectivos pesos . Considere una situación en la que hay 7 paquetes en la primera cola, A,B,C,D,E,F,G , 3 en la segunda cola, U,V,W y 2 en la tercera cola X,Y . Supongamos que no llega más paquete.
Con WRR clásico, en el primer ciclo, el planificador primero selecciona y transmite los cinco paquetes al principio de la cola, A,B,C,D,E (desde ), luego selecciona la segunda cola, y transmite los dos paquetes en cabeza de cola, U,V (desde ), y por último selecciona la tercera cola, que tiene un peso igual a 3 pero solo dos paquetes, por lo que transmite X,Y . Inmediatamente después del final de la transmisión de Y , comienza el segundo ciclo y se transmiten F,G from , seguido de W from .
Con WRR entrelazado, el primer ciclo se divide en 5 rondas (desde ). En la primera ( r=1 ), se envía un paquete de cada cola ( A,U,X ), en la segunda ronda ( r=2 ) también se envía otro paquete de cada cola ( B,V,Y ) , en la tercera ronda ( r = 3 ), solo las colas pueden enviar un paquete ( , y ), pero como está vacía, solo se envía C de , y en la cuarta y quinta ronda, solo se envían D,E de . Luego comienza el segundo ciclo, donde se envían F,W,G .
La programación de tareas o procesos se puede realizar en WRR de forma similar a la programación de paquetes: cuando se considera un conjunto de tareas activas, se programan de forma cíclica, cada tarea obtiene una cantidad o una porción del tiempo del procesador. [6] [7]
Al igual que la programación por turnos , la programación por turnos ponderada es simple, fácil de implementar, conserva el trabajo y no pasa hambre .
Al programar paquetes, si todos los paquetes tienen el mismo tamaño, entonces WRR e IWRR son una aproximación del uso compartido generalizado del procesador : [8] una cola recibirá una parte a largo plazo del ancho de banda igual a (si todas las colas están activas) mientras el GPS sirve cantidades infinitesimales de datos de cada cola no vacía y ofrecer esta parte en cualquier intervalo.
Si las colas tienen paquetes de longitud variable, la parte del ancho de banda recibido por cada cola depende no sólo del peso sino también del tamaño de los paquetes.
Si se conoce un tamaño medio de paquetes para cada cola , cada cola recibirá una parte a largo plazo del ancho de banda igual a . Si el objetivo es darle a cada cola una porción de la capacidad del enlace (con ), se puede configurar .
Dado que IWRR tiene ráfagas por clase más pequeñas que WRR, implica retrasos más pequeños en el peor de los casos. [9]
La WRR para la programación de paquetes de red fue propuesta por primera vez por Katevenis, Sidiropoulos y Courcoubetis en 1991, [1] específicamente para la programación en redes ATM utilizando paquetes (celdas) de tamaño fijo. La principal limitación de las colas ponderadas por turnos es que proporciona el porcentaje correcto de ancho de banda para cada clase de servicio sólo si todos los paquetes en todas las colas son del mismo tamaño o cuando el tamaño medio de paquete se conoce de antemano. En el caso más general de redes IP con paquetes de tamaño variable, para aproximar el GPS, los factores de peso deben ajustarse en función del tamaño del paquete. Esto requiere una estimación del tamaño promedio de paquete, lo que hace que en la práctica sea difícil lograr una buena aproximación GPS con WRR. [1]
El round robin de déficit es una variación posterior de WRR que logra una mejor aproximación GPS sin conocer de antemano el tamaño medio de paquete de cada conexión. También se introdujeron disciplinas de programación más efectivas que manejan las limitaciones mencionadas anteriormente (por ejemplo, colas justas ponderadas ).