stringtranslate.com

Problema de rebaño atronador

En informática , el problema del rebaño atronador ocurre cuando una gran cantidad de procesos o subprocesos que esperan un evento se despiertan cuando ese evento ocurre, pero solo un proceso es capaz de manejar el evento. Cuando los procesos se despierten, cada uno intentará manejar el evento, pero solo uno ganará. Todos los procesos competirán por los recursos, posiblemente congelando la computadora, hasta que la manada se calme nuevamente. [1]

Mitigación

El kernel de Linux serializa las respuestas a las solicitudes de un único descriptor de archivo, por lo que solo se activa un subproceso o proceso. [2] Para epoll() en la versión 4.5 del kernel de Linux, se agregó el indicador EPOLLEXCLUSIVE. Por lo tanto, varios conjuntos de epoll (diferentes subprocesos o diferentes procesos) pueden esperar en el mismo recurso y sólo se despertará un conjunto. Para determinadas cargas de trabajo, este indicador puede ofrecer una reducción significativa del tiempo de procesamiento. [3]

De manera similar, en Microsoft Windows, los puertos de finalización de E/S pueden mitigar el problema del rebaño atronador, 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. [4]

En sistemas que dependen de un mecanismo de retroceso (por ejemplo, retroceso exponencial ), los clientes reintentarán las llamadas fallidas esperando una cantidad de tiempo específica entre reintentos consecutivos. Para evitar el problema de la manada atronadora, se puede introducir jitter intencionalmente para romper la sincronización entre los clientes, evitando así colisiones. En este enfoque, se agrega aleatoriedad a los intervalos de espera entre reintentos, de modo que los clientes ya no estén sincronizados.

Ver también

Referencias

  1. ^ "Problema del rebaño atronador". El archivo Jergon (versión 4.4.7) . Consultado el 9 de julio de 2019 .
  2. ^ "¿Ya existe el problema Thundering Herd en Linux?". stackoverflow.com . Consultado el 9 de julio de 2019 .
  3. ^ Madars, Vitolines (5 de diciembre de 2015). "Prueba del parche del kernel de Linux EPOLLEXCLUSIVE". mvitolina . Consultado el 11 de agosto de 2020 .
  4. ^ "Puertos de finalización de IO: blog de Matt Godbolt". xania.org . Consultado el 23 de enero de 2019 .

enlaces externos