[sisyphus] Re: Как ускорить работу с потоками?

Денис Смирнов =?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Сб Сен 11 01:32:53 MSD 2004


On Fri, Sep 10, 2004 at 08:21:34PM +0300, Serge Pavlovsky wrote:
>> epoll, например :)
>> select/poll на худой конец.
 SP> когда вы в последний раз измеряли производительность epoll/select/poll
 SP> на 100к сокетов ?
 SP> конечно, epoll быстрее, чем select, но недостаточно

Я не мерял на 100k сокетов. Поделитель тестовым кодом, если вы меряли?
И думается мне, что на 100k сокетов будет эффективнее всего работать
смешаная модель (epoll + нити).

>> kevent в FreeBSD.
>> aio.
 SP> чтобы почаще threads стартовать, чтоли ? ;)

:-))))

>> Самое разумное -- выносить в отдельные нити _обработку_, а как раз ждать и
>> данными кидаться в небольшом количестве нитей (в несколько раз больше чем
>> количество процессорв, для большей равномерности).
 SP> многие весьма неглупые на вид люди тоже так наивно полагают. на самом
 SP> деле это получится один в один доморощенная реализация user-level
 SP> threads - там тоже один большой select. только вот сложность получается
 SP> O(n^2) - чем больше потоков, тем чаще им надо читать * на тем больше
 SP> накладных расходов на каждый select. спрашивается, зачем делать самому
 SP> userlevel threads и зачем вообще это делать если оно очень быстро
 SP> начинает дико тормозить ?

Причём тут userlevel threads? Видимо вы меня неправильно поняли. Я не
предлагаю городить диспетчер, который бы распихивал по потокам пришедшие
события, боже упаси. Я предлагаю гораздо более тупую (т.е. простую) и
эффектвиную схему: в момент создания соединения сокет привязывается
статически к одной из нитей, и обрабатывается уже только ей. Нити
используем для более эффективного использования нескольких процессоров (да
и одного тоже несколько нитей будут эффективнее использовать) а epoll для
формирования очереди сообщений на обработку.

Ну и на 100k нитей что-то мне не верится что Linux на этом не будет
загибаться.

-- 
С уважением, Денис

http://freesource.info




Подробная информация о списке рассылки Sisyphus