[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