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

Все, что вы хотели знать о программизме, но боялись спросить.
mpako6ec
Частый Гость
Сообщения: 17
Зарегистрирован: 08 фев 2008, 23:03
Откуда: Владивосток - Burnaby

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

Сообщение mpako6ec »

попробуй один int вместо байта передать
Аватара пользователя
Marmot
Графоман
Сообщения: 39283
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

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

Сообщение Marmot »

mpako6ec писал(а):блокинг/нонблокинг ресив ?
Пробовал и так и так, результат тот же самый, абсолютно.
Аватара пользователя
Marmot
Графоман
Сообщения: 39283
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

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

Сообщение Marmot »

mpako6ec писал(а):попробуй один int вместо байта передать
huh?
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

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

Сообщение CdR »

Marmot писал(а):
mpako6ec писал(а):попробуй один int вместо байта передать
huh?
+1
Может какой-то подземностуковый смысл?
mpako6ec
Частый Гость
Сообщения: 17
Зарегистрирован: 08 фев 2008, 23:03
Откуда: Владивосток - Burnaby

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

Сообщение mpako6ec »

+1
Может какой-то подземностуковый смысл?
остается опытным путем уменьшая размер пакета, определить где начинается задержка 8-)
mpako6ec
Частый Гость
Сообщения: 17
Зарегистрирован: 08 фев 2008, 23:03
Откуда: Владивосток - Burnaby

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

Сообщение mpako6ec »

2 Marmot:
поюзал уже SO_RCVLOWAT & SO_SNDLOWAT ?
Аватара пользователя
Marmot
Графоман
Сообщения: 39283
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

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

Сообщение Marmot »

Научились наши PHP-исты буферизовать байты, наконец-то, блин... :evil:
И все сразу стало хорошо :) Дальше я пожалуй копать не буду, лениво, да и не надо уже, хотя проблема сама по себе прикольная...
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

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

Сообщение aldep »

Marmot писал(а):
aldep писал(а):
Marmot писал(а):Никто не сталкивался с такой хренью.
Если клиент пишет в сокет буфер целиком, то все ок, но если писать тот же буфер, байт за байтом, то на сервере данные появляются с задержкой 40-50ms
TCP_NODELAY выставлен...
Ну никак не пойму, что за что... :(
Траффик у вас раз в 40 увеличивается примерно, стек тратит на каждый байт по целому IP пакету.
И количество прерываний увеличивается соответственно.
Ну это все конечно так, но проблема том, что даже самый первый байт запаздывает, хотя, ему-то кто мешает? :)
Все байтики приходят вместе, но с опозданием...
Кроме того, запаздывание есть даже когда клиент и сервер бегают на одном и том же ящике...
Так посылка то и прием асинхронные операции. Пока дело дойдет до обработки первого посланного сообщения, сервер успеет уже кучу всего отправить, и это отправленное и создает задержку.
Можно попробовать послать один пакет в 1 байт. Если задержка все равно будет, то я не прав. Но сомневаюсь.
Аватара пользователя
sobomax
Маньяк
Сообщения: 3699
Зарегистрирован: 29 июн 2006, 22:53
Откуда: Vancouver

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

Сообщение sobomax »

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

-Maxim
Ответить