Страница 2 из 2

Re: Вопрос к линуксоидам

Добавлено: 04 май 2008, 21:44
mpako6ec
попробуй один int вместо байта передать

Re: Вопрос к линуксоидам

Добавлено: 04 май 2008, 22:43
Marmot
mpako6ec писал(а):блокинг/нонблокинг ресив ?
Пробовал и так и так, результат тот же самый, абсолютно.

Re: Вопрос к линуксоидам

Добавлено: 04 май 2008, 22:50
Marmot
mpako6ec писал(а):попробуй один int вместо байта передать
huh?

Re: Вопрос к линуксоидам

Добавлено: 04 май 2008, 23:21
CdR
Marmot писал(а):
mpako6ec писал(а):попробуй один int вместо байта передать
huh?
+1
Может какой-то подземностуковый смысл?

Re: Вопрос к линуксоидам

Добавлено: 05 май 2008, 09:14
mpako6ec
+1
Может какой-то подземностуковый смысл?
остается опытным путем уменьшая размер пакета, определить где начинается задержка 8-)

Re: Вопрос к линуксоидам

Добавлено: 05 май 2008, 09:51
mpako6ec
2 Marmot:
поюзал уже SO_RCVLOWAT & SO_SNDLOWAT ?

Re: Вопрос к линуксоидам

Добавлено: 05 май 2008, 10:52
Marmot
Научились наши PHP-исты буферизовать байты, наконец-то, блин... :evil:
И все сразу стало хорошо :) Дальше я пожалуй копать не буду, лениво, да и не надо уже, хотя проблема сама по себе прикольная...

Re: Вопрос к линуксоидам

Добавлено: 05 май 2008, 12:37
aldep
Marmot писал(а):
aldep писал(а):
Marmot писал(а):Никто не сталкивался с такой хренью.
Если клиент пишет в сокет буфер целиком, то все ок, но если писать тот же буфер, байт за байтом, то на сервере данные появляются с задержкой 40-50ms
TCP_NODELAY выставлен...
Ну никак не пойму, что за что... :(
Траффик у вас раз в 40 увеличивается примерно, стек тратит на каждый байт по целому IP пакету.
И количество прерываний увеличивается соответственно.
Ну это все конечно так, но проблема том, что даже самый первый байт запаздывает, хотя, ему-то кто мешает? :)
Все байтики приходят вместе, но с опозданием...
Кроме того, запаздывание есть даже когда клиент и сервер бегают на одном и том же ящике...
Так посылка то и прием асинхронные операции. Пока дело дойдет до обработки первого посланного сообщения, сервер успеет уже кучу всего отправить, и это отправленное и создает задержку.
Можно попробовать послать один пакет в 1 байт. Если задержка все равно будет, то я не прав. Но сомневаюсь.

Re: Вопрос к линуксоидам

Добавлено: 13 май 2008, 13:17
sobomax
А чего собственно удивительного? TCP будучи stream-based не гарантирует задержку между отдельными байтиками или то как именно данные будут фреймоватся в потоке. Скорее всего наблюдаем особенности реализации алгоритма буферизации на клиенте и/или сервере. Можно попробовать использовать send() вместо write(), кардинально лечить путем перехода на datagram-oriented protocol (i.e. UDP) ну или на какой нибудь все еще экзотический SCTP.

-Maxim