[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