Громоподобная проблема стада

Проблема распределения ресурсов в информатике

В информатике проблема громоподобного стада возникает, когда большое количество процессов или потоков, ожидающих события, пробуждаются, когда это событие происходит, но только один процесс способен обработать событие. Когда процессы просыпаются, каждый из них пытается обработать событие, но только один из них победит. Все процессы будут конкурировать за ресурсы, возможно, замораживая компьютер, пока стадо снова не успокоится. [1]

Смягчение

Ядро Linux сериализует ответы на запросы к одному файловому дескриптору, поэтому пробуждается только один поток или процесс. [2] Для epoll() в версии 4.5 ядра Linux был добавлен флаг EPOLLEXCLUSIVE. Таким образом, несколько наборов epoll (разные потоки или разные процессы) могут ожидать на одном и том же ресурсе, и только один набор будет пробужден. Для определенных рабочих нагрузок этот флаг может дать значительное сокращение времени обработки. [3]

Аналогично в Microsoft Windows порты завершения ввода-вывода могут смягчить проблему громоподобного стада, поскольку их можно настроить таким образом, что при возникновении события пробуждается только один из потоков, ожидающих на порту завершения. [4]

В системах, которые полагаются на механизм отсрочки (например, экспоненциальную отсрочку ), клиенты будут повторять неудачные вызовы, ожидая определенное количество времени между последовательными повторными попытками. Чтобы избежать проблемы громового стада, можно намеренно ввести джиттер , чтобы нарушить синхронизацию между клиентами, тем самым избегая коллизий. При таком подходе случайность добавляется к интервалам ожидания между повторными попытками, так что клиенты больше не синхронизированы.

Смотрите также

Ссылки

  1. ^ "Проблема громового стада". Файл жаргона (версия 4.4.7) . Получено 9 июля 2019 г.
  2. ^ "Существует ли проблема Thundering Herd в Linux еще"? stackoverflow.com . Получено 09.07.2019 .
  3. ^ Madars, Vitolins (2015-12-05). "Тестирование исправлений ядра Linux EPOLLEXCLUSIVE". mvitolin . Получено 2020-08-11 .
  4. ^ "IO Completion Ports — блог Мэтта Годболта". xania.org . Получено 23.01.2019 .
  • Обсуждение этого наблюдения на Linux
  • Улучшенные повторные попытки с экспоненциальной задержкой и джиттером
Взято с "https://en.wikipedia.org/w/index.php?title=Проблема_громового_стада&oldid=1177436868"