↑は別件でepollの話だった。Linux 4.5で入ったEPOLLEXCLUSIVEで解決するようになった。難しい。https://t.co/4aYd9L1BXB
— Ryuichi@k8s再入門中:|| (@ryuichi_1208) 2021年6月27日
概要
epoll(2)のオプションのEPOLLEXCLUSIVEについて気になったので調べたメモ
EPOLLEXCLUSIVEとは
EPOLLEXCLUSIVE (since Linux 4.5) Sets an exclusive wakeup mode for the epoll file descriptor that is being attached to the target file descriptor, fd. When a wakeup event occurs and multiple epoll file descriptors are attached to the same target file using EPOLLEXCLUSIVE, one or more of the epoll file descriptors will receive an event with epoll_wait(2). The default in this scenario (when EPOLLEXCLUSIVE is not set) is for all epoll file descriptors to receive an event. EPOLLEXCLUSIVE is thus useful for avoiding thundering herd problems in certain scenarios.
epoll_ctl(2) - Linux manual page
ざっくりいうとepoll_waitで複数プロセスがlistenを待っているケースでこれまでは全てのプロセスに対して通知を行なっていたのを1つ以上のプロセスに制限するというものらしい