On Mon, Dec 17, 2001 at 09:30:00PM +0300, AT wrote:
> В солярисе select(3) реализован поверх poll(2). Вообще, весь интерфейс
> BSD-sockets там в отдельной библиотеке. Напротив, в ранних линуксах
> (2.0) poll реализуется поверх select -- man 2 poll. Так что в таких
> системах сравнивать что-либо бессмысленно, просто -- как аксиома -- в
> солярисе лучше использовать poll а в старых линуксах select.
Как это бессмысленно? Утверждение о том, что основное время идет на
копирование структур, реализация внутри ядра никак не отменяет.
> Далее, насчёт увеличения производительности при большом числе
> дескритпторов. Не забывайте о том, что poll может вернуть и (-1) -- по
> самым разным причинам. И при большом числе дескрипторов такие причины
> становятся всё более вероятными.
Есть идеи, почему в линуксе эта "вероятность" оказывается строго равна 1,
начиная с 33-го дескриптора? И в Солярисе очень похожее поведение.
Если бы в солярисе select() был реализован как libc-level поверх poll(),
пик задержки на 16-32 дескрипторах (я приводил здесь тест) явно отражался бы
пиком в select(). Чего не видно. Нестыковочка, однако.
> Или что-нибудь в этом духе. Тут нужно ещё бы порыться где-нибудь в glibc
> и посмотреть, что там на самом деле делает poll. Но мне как-то влом, я
> себе уже всё доказал... :)
С учетом того, что в современных линуксах poll(2) - сискол, также как и
select(2) - насколько я понимаю, glibc тут уже не при чем.
--
Eugene Berdnikov
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =