Saltar al contenido

¿La activación por nivel o la activación por flanco son más eficaces?

Hacemos una verificación exhaustiva cada noticias de nuestra web con el objetivo de mostrarte siempre información veraz y actualizada.

Solución:

No esperaría ver una gran diferencia de rendimiento entre el borde y el nivel activado.

Para la activación por borde, siempre tiene que drenar el búfer de entrada, por lo que tiene una llamada al sistema recv inútil (que solo devuelve EWOULDBLOCK). Pero para el nivel activado, puede usar más llamadas al sistema epoll_wait. Como señala la página del manual, evitar el hambre puede ser un poco más fácil en el modo activado por nivel.

La verdadera diferencia es que cuando desee utilizar varios subprocesos, tendrá que utilizar el modo activado por borde (aunque aún tendrá que tener cuidado con la sincronización correcta).

La diferencia solo es visible cuando usa sesiones de larga duración y se ve obligado a detenerse/iniciar constantemente debido a que los búferes están llenos/vacíos (normalmente con un proxy). Cuando hace esto, lo más frecuente es que necesite un caché de eventos, y cuando su caché de eventos esté procesando eventos, puede usar ET y evitar todo el baile epoll_ctl(DEL)+epoll_ctl(ADD). Para sesiones de corta duración, los ahorros son menos obvios, porque para ET necesitará al menos una llamada epoll_ctl(ADD) para habilitar el sondeo en el FD, y si no espera tener más de ellos durante la vida de la sesión (por ejemplo: los intercambios son más pequeños que los búferes la mayor parte del tiempo), entonces no debe esperar ninguna diferencia. La mayoría de sus ahorros generalmente provendrán del uso de un caché de eventos solo, ya que a menudo puede realizar muchas operaciones (por ejemplo, escrituras) sin encuestas gracias a los búferes del kernel.

Calificaciones y comentarios

Recuerda algo, que tienes el privilegio valorar este artículo si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *