Articulo de referencia

Nueva API

La nueva API (también conocida como NAPI ) es una interfaz para utilizar técnicas de mitigación de interrupciones para dispositivos de red en el núcleo de Linux . Este enfoque t...

La nueva API (también conocida como NAPI ) es una interfaz para utilizar técnicas de mitigación de interrupciones para dispositivos de red en el núcleo de Linux . Este enfoque tiene como objetivo reducir la sobrecarga de la recepción de paquetes. La idea es posponer el procesamiento de mensajes entrantes hasta que haya una cantidad suficiente de ellos para que valga la pena procesarlos todos a la vez.

Motivación

Un método sencillo para implementar un controlador de red es interrumpir el núcleo mediante la emisión de una solicitud de interrupción (IRQ) para cada uno de los paquetes entrantes. Sin embargo, el mantenimiento de las IRQ es costoso en términos de recursos del procesador y tiempo. Por lo tanto, la implementación sencilla puede ser muy ineficiente en redes de alta velocidad, interrumpiendo constantemente el núcleo con miles de paquetes por segundo. Como resultado, el rendimiento general del sistema, así como el rendimiento de la red, pueden verse afectados.

El sondeo es una alternativa al procesamiento basado en interrupciones. El núcleo puede comprobar periódicamente la llegada de paquetes de red entrantes sin ser interrumpido, lo que elimina la sobrecarga del procesamiento de interrupciones. Sin embargo, es importante establecer una frecuencia de sondeo óptima. Un sondeo demasiado frecuente desperdicia recursos de la CPU al comprobar repetidamente si hay paquetes entrantes que aún no han llegado. Por otro lado, un sondeo demasiado infrecuente introduce latencia al reducir la reactividad del sistema a los paquetes entrantes y puede provocar la pérdida de paquetes si el búfer de paquetes entrantes se llena antes de ser procesado.

Como compromiso, el kernel de Linux utiliza el modo controlado por interrupciones de manera predeterminada y solo cambia al modo de sondeo cuando el flujo de paquetes entrantes excede un cierto umbral, conocido como el "peso" de la interfaz de red.

Conductores compatibles

Un controlador que utiliza la interfaz NAPI funcionará de la siguiente manera:

  • Las interrupciones de recepción de paquetes están deshabilitadas.
  • El controlador proporciona un método de sondeo al núcleo. Ese método buscará todos los paquetes entrantes disponibles en la tarjeta de red o en un anillo DMA , para que luego sean procesados ​​por el núcleo.
  • Cuando se lo permite, el núcleo llama al método de sondeo del dispositivo para posiblemente manejar muchos paquetes a la vez.

Ventajas

  • La carga inducida por las interrupciones se reduce incluso aunque el núcleo tenga que realizar sondeos.
  • Es menos probable que los paquetes se reordenen, mientras que el manejo de paquetes fuera de orden podría ser un cuello de botella en caso contrario. [ cita requerida ]
  • En caso de que el núcleo no pueda manejar todos los paquetes entrantes, no tiene que hacer ningún trabajo para descartarlos: simplemente se sobrescriben en el búfer de anillo de entrada de la tarjeta de red . Sin NAPI, el núcleo tiene que manejar todos los paquetes entrantes independientemente de si hay tiempo para atenderlos, lo que conduce a un bloqueo .

Historia

NAPI fue un esfuerzo de más de tres años de Alexey Kuznetsov, Jamal Hadi Salim y Robert Olsson. El esfuerzo inicial por incluir a NAPI se topó con la resistencia de algunos miembros de la comunidad, sin embargo, David Miller trabajó arduamente para garantizar la inclusión de NAPI.

Antes de su inclusión, se realizaron muchas pruebas en la red de la Universidad de Uppsala . De hecho, www.slu.se fue el primer sistema operativo basado en NAPI de producción y todavía funciona con enrutadores Bifrost/Linux basados ​​en NAPI. El generador de tráfico pktgen también nació en esa época. Pktgen se utilizó ampliamente para probar escenarios NAPI no inducidos por el tráfico del mundo real.

Referencias

Lectura adicional

  • Jamal Hadi Salim; Robert Olsson; Alexey Kuznetsov (10 de noviembre de 2001). Beyond softnet (PDF) . 5.ª edición de la Linux Showcase & Conference (ALS '01). pp. 165–172 . Consultado el 6 de marzo de 2011 .El clásico artículo NAPI.
  • Jonathan Corbet (28 de abril de 2003). "Portación de controladores: controladores de red". LWN.net . Consultado el 6 de marzo de 2011 .
  • Jonathan Corbet (18 de diciembre de 2006). "Reworking NAPI" (Reelaboración de NAPI). LWN.net . Consultado el 6 de marzo de 2011 .
  • Jonathan Corbet; Alessandro Rubini; Greg Kroah-Hartman (febrero de 2005). "Capítulo 17: Controladores de red" (PDF) . Controladores de dispositivos Linux (3.ª ed.). O'Reilly Media. ISBN 978-0-596-00590-0. Consultado el 6 de marzo de 2011 .
  • Trabajos iniciales de NAPI [ enlace inactivo ]
  • Descripción de NAPI en Linux Foundation Archivado el 11 de junio de 2016 en Wayback Machine
  • Descripción general de la red, 19 de noviembre de 2009, The Linux Foundation, por Rami Rosen (archivado desde el original el 30 de octubre de 2011)
Retrieved from "https://en.wikipedia.org/w/index.php?title=New_API&oldid=1169799715"