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

Денис Смирнов =?iso-8859-1?q?mithraen_=CE=C1_freesource=2Einfo?=
Вт Сен 14 00:02:57 MSD 2004


On Mon, Sep 13, 2004 at 03:19:15AM +0300, Serge Pavlovsky wrote:

 >> Я не мерял на 100k сокетов. Поделитель тестовым кодом, если вы меряли?
 SP> я пробовал реальное приложение. при сотнях штук уже кроме селекта ни на
 SP> что времени не оставалось. и зависимость таки была скорее квадратичная,
 SP> чем линейная.

Можно пример тестового кода? Какое количество дескрипторов передавалось
одному select'у?

 >> И думается мне, что на 100k сокетов будет эффективнее всего работать
 >> смешаная модель (epoll + нити).
 SP> спящие нити при правильном ( О(1) ) шедулере никому не мешают. а epoll -
 SP> мешает

Хм, именно _e_poll? :-(((
То, что poll/select нельзя передавать много дескрипторов я знаю.

А O(1) шедулер вроде только с 2.6 в основной ветке, или в 2.4 тоже есть?

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

 SP> userlevel threads, если от них отрезать переключение контекста, как раз
 SP> представляют собой генерацию одного большого select на каждый чих вроде
 SP> read() или write(). и тормозит как раз это, а не переключение контекста.

Ясно.

>> Ну и на 100k нитей что-то мне не верится что Linux на этом не будет
>> загибаться.
 SP> ну, на нашем ядре/libc - будет. но мы ведь дождемся светлого будущего ;)

В смысле 2.6+NPTL?

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

http://freesource.info




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