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

Serge Pavlovsky =?iso-8859-1?q?pal_=CE=C1_interexc=2Ecom?=
Пт Сен 10 21:21:34 MSD 2004


On Птн, 2004-09-10 at 06:54 +0400, Денис Смирнов wrote:
> On Fri, Sep 10, 2004 at 02:51:00AM +0300, Serge Pavlovsky wrote:
> 
>  >> Если вы приведёте пример, когда на x86 100 тысяч тредов являются
>  >> оптимальным решением, я буду вам очень благодарен.
>  SP> если они все спят в чтении из сокетов
>  SP> можете приводить пример грузовика ;)
> 
> epoll, например :)
> 
> select/poll на худой конец.

когда вы в последний раз измеряли производительность epoll/select/poll
на 100к сокетов ?
конечно, epoll быстрее, чем select, но недостаточно

> kevent в FreeBSD.
> 
> aio.

чтобы почаще threads стартовать, чтоли ? ;)

> Самое разумное -- выносить в отдельные нити _обработку_, а как раз ждать и
> данными кидаться в небольшом количестве нитей (в несколько раз больше чем
> количество процессорв, для большей равномерности).

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





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