Articulo de referencia

Problema de manada atronadora

El problema de la sobrecarga de procesos es un fenómeno que degrada el rendimiento en informática y redes informáticas y que ocurre cuando un gran número de procesos o hilos se ...

El problema de la sobrecarga de procesos es un fenómeno que degrada el rendimiento en informática y redes informáticas y que ocurre cuando un gran número de procesos o hilos se activan simultáneamente, generalmente en respuesta a un evento específico o a la disponibilidad de un recurso. Sin embargo, solo un proceso puede responder al evento o acceder al nuevo recurso, lo que provoca que la mayoría de los demás procesos fallen y vuelvan a entrar en estado de espera. Esta activación innecesaria consume CPU y otros recursos del sistema, lo que puede reducir el rendimiento general y ralentizar el proceso que sí se ejecuta correctamente. [ 1 ]

Cuando se produce el problema de la multitud enfurecida al intentar acceder a un caché, a menudo se le denomina estampida de caché . [ 2 ]

Mitigación

El kernel de Linux serializa las respuestas a las solicitudes a un único descriptor de archivo , por lo que solo se activa un hilo o proceso. [ 3 ] En epoll()la versión 4.5 del kernel de Linux, se añadió la bandera EPOLLEXCLUSIVE. De este modo, varios conjuntos epoll (diferentes hilos o diferentes procesos) pueden esperar en el mismo recurso y solo se activará un conjunto. Para ciertas cargas de trabajo, esta bandera puede proporcionar una reducción significativa del tiempo de procesamiento. [ 4 ]

De manera similar, en Microsoft Windows, los puertos de finalización de E/S pueden mitigar el problema de la sobrecarga de procesos, ya que se pueden configurar de manera que solo uno de los subprocesos que esperan en el puerto de finalización se active cuando ocurre un evento. [ 5 ]

En sistemas que utilizan un mecanismo de retroceso (por ejemplo, retroceso exponencial ), los clientes reintentan las llamadas fallidas esperando un tiempo determinado entre reintentos consecutivos. Para evitar el problema de la avalancha de llamadas, se puede introducir jitter de forma intencionada para romper la sincronización entre los clientes y, de este modo, evitar colisiones. En este enfoque, se añade aleatoriedad a los intervalos de espera entre reintentos, de modo que los clientes dejan de estar sincronizados.

Véase también

Referencias

  1. "Problema de la manada atronadora" . The Jargon File (versión 4.4.7) . Consultado el 9 de julio de 2019 .
  2. Plataforma, The Tech (06-06-2023). "Cómo prevenir problemas de estampida de caché (manada atronadora)" . The Tech Platform . Recuperado el 10-11-2025 .
  3. "¿Existe todavía el problema de la manada atronadora en Linux?" . stackoverflow.com . Consultado el 9 de julio de 2019 .
  4. Madars, Vitolins (2015-12-05). "Pruebas de parches del kernel de Linux EPOLLEXCLUSIVE" . mvitolin . Recuperado el 2020-08-11 .
  5. "Puertos de finalización de E/S — Blog de Matt Godbolt" . xania.org . Consultado el 23 de enero de 2019 .
  • Un análisis de esta observación en Linux
  • Mejores reintentos con retroceso exponencial y fluctuación