천둥 무리 문제

Thundering herd problem

컴퓨터 과학에서 천둥 무리 문제는 이벤트를 기다리는 많은 프로세스 또는 스레드가 해당 이벤트가 발생할 때 각성될 때 발생하지만 이벤트를 처리할 수 있는 프로세스는 1개뿐입니다.프로세스가 기동하면, 각각 이벤트를 처리하려고 합니다만, 1개만이 승리합니다.모든 과정은 자원을 두고 경쟁할 것이며, 무리가 다시 [1]진정될 때까지 컴퓨터를 동결시킬 수도 있습니다.

경감

Linux 커널은 단일 파일 기술자에 대한 요청에 대한 응답을 직렬화하기 때문에 하나의 스레드 또는 프로세스만 [2]웨이크업됩니다.Linux 커널 버전 4.5의 epoll()의 경우 EPOLLEXCLUSIVE 플래그가 추가되었습니다.따라서 여러 epoll 세트(다른 스레드 또는 다른 프로세스)가 동일한 리소스 상에서 대기할 수 있으며 한 세트만 웨이크업됩니다.특정 워크로드에서는 이 플래그가 처리 시간을 대폭 [3]단축할 수 있습니다.

마찬가지로 Microsoft Windows 에서는 I/O 완료 포트를 사용하여 완료 포트에서 대기하고 있는 스레드 중 하나만 이벤트 [4]발생 시 웨이크업되도록 구성할 수 있기 때문에 천둥 치는 무리 문제를 완화할 수 있습니다.

백오프 메커니즘(예를 들어 지수 백오프)에 의존하는 시스템에서는 클라이언트는 연속적인 재시도 사이에 특정 시간 동안 대기함으로써 실패한 콜을 재시도합니다.천둥 무리 문제를 피하기 위해 클라이언트 간의 동기화를 중단하기 위해 지터를 의도적으로 도입하여 충돌을 회피할 수 있습니다.이 방법에서는 재시도 간격에 랜덤성이 추가되어 클라이언트가 동기화되지 않게 됩니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Thundering Herd Problem". The Jargon File (version 4.4.7). Retrieved 9 July 2019.
  2. ^ "Does the Thundering Herd Problem exist on Linux anymore". stackoverflow.com. Retrieved 2019-07-09.
  3. ^ Madars, Vitolins (2015-12-05). "EPOLLEXCLUSIVE Linux Kernel patch testing". mvitolin. Retrieved 2020-08-11.{{cite web}}: CS1 maint :url-status (링크)
  4. ^ "IO Completion Ports — Matt Godbolt's blog". xania.org. Retrieved 2019-01-23.

외부 링크