производительность epoll

Может любой помогать мне ответить на вопросы о epoll_wait.

  1. Это - излишество для использования многих потоков, которые называют epoll_wait на том же наборе fds для обслуживания приблизительно в 100K активные сокеты? или просто будет достаточно создать только 1 поток для выполнения epoll_wait?

  2. Сколько потоков проснется от epoll_wait, когда, например, только один сокет будет готов считать данные? я имею в виду, может там быть ситуация, когда 2 или больше потока проснутся от epoll_wait, но будут иметь тот же fds в законченных событиях?

  3. Что является лучшим способом организовать потоки в сервере, который работает со многими активными клиентами (например, 50K +). Лучшим способом я думаю: 1 Рабочий поток ввода-вывода, который выполняет epoll_wait и i/o операции. + Много потоков Обработки данных, которые обработают данные, полученные от рабочего потока ввода-вывода (может занять много времени, такие как любая игровая логика) и составляют новые данные для рабочего потока ввода-вывода для отправки клиенту. Действительно ли я прав в этом подходе, или кто-либо может помочь мне узнать лучший способ организовать это?

Заранее спасибо, Valentin

9
задан Valentin 18 January 2010 в 16:55
поделиться

2 ответа

  1. При использовании epoll, вы хотите изменить размер потока в целом на количество физических ядер процессора (или гиперпоточных блоков диспетчеризации), которое вы хотите использовать для обработки. Использование только одного потока для работы означает, что одновременно будет активным не более одного ядра.

  2. Это зависит от режима дескриптора файла epoll. События могут быть "срабатывающими по краю", что означает, что они происходят только один раз атомически, или "срабатывающими по уровню", что означает, что любой вызывающий абонент получает событие, если в буфере есть место.

  3. Недостаточно информации. Для простоты я бы предложил вообще не иметь специальных потоков, а просто обрабатывать "команду" каждого события в потоке, в котором оно получено. Но очевидно, что это зависит от характера вашего приложения.

9
ответ дан 4 December 2019 в 21:10
поделиться

Я рекомендую вам это чтение с 2006 года: http://www.kegel.com/c10k.html

4
ответ дан 4 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: