Вопрос к линуксоидам
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
-
- Частый Гость
- Сообщения: 17
- Зарегистрирован: 08 фев 2008, 23:03
- Откуда: Владивосток - Burnaby
Re: Вопрос к линуксоидам
попробуй один int вместо байта передать
- Marmot
- Графоман
- Сообщения: 39283
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос к линуксоидам
Пробовал и так и так, результат тот же самый, абсолютно.mpako6ec писал(а):блокинг/нонблокинг ресив ?
- Marmot
- Графоман
- Сообщения: 39283
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос к линуксоидам
huh?mpako6ec писал(а):попробуй один int вместо байта передать
- CdR
- Графоман
- Сообщения: 11245
- Зарегистрирован: 11 окт 2004, 19:27
- Откуда: Европа, центр, за углом направо.
Re: Вопрос к линуксоидам
+1Marmot писал(а):huh?mpako6ec писал(а):попробуй один int вместо байта передать
Может какой-то подземностуковый смысл?
-
- Частый Гость
- Сообщения: 17
- Зарегистрирован: 08 фев 2008, 23:03
- Откуда: Владивосток - Burnaby
Re: Вопрос к линуксоидам
остается опытным путем уменьшая размер пакета, определить где начинается задержка+1
Может какой-то подземностуковый смысл?

-
- Частый Гость
- Сообщения: 17
- Зарегистрирован: 08 фев 2008, 23:03
- Откуда: Владивосток - Burnaby
Re: Вопрос к линуксоидам
2 Marmot:
поюзал уже SO_RCVLOWAT & SO_SNDLOWAT ?
поюзал уже SO_RCVLOWAT & SO_SNDLOWAT ?
- Marmot
- Графоман
- Сообщения: 39283
- Зарегистрирован: 17 фев 2003, 17:58
- Откуда: Caulfeild
- Контактная информация:
Re: Вопрос к линуксоидам
Научились наши PHP-исты буферизовать байты, наконец-то, блин...
И все сразу стало хорошо
Дальше я пожалуй копать не буду, лениво, да и не надо уже, хотя проблема сама по себе прикольная...

И все сразу стало хорошо

- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
Re: Вопрос к линуксоидам
Так посылка то и прием асинхронные операции. Пока дело дойдет до обработки первого посланного сообщения, сервер успеет уже кучу всего отправить, и это отправленное и создает задержку.Marmot писал(а):Ну это все конечно так, но проблема том, что даже самый первый байт запаздывает, хотя, ему-то кто мешает?aldep писал(а):Траффик у вас раз в 40 увеличивается примерно, стек тратит на каждый байт по целому IP пакету.Marmot писал(а):Никто не сталкивался с такой хренью.
Если клиент пишет в сокет буфер целиком, то все ок, но если писать тот же буфер, байт за байтом, то на сервере данные появляются с задержкой 40-50ms
TCP_NODELAY выставлен...
Ну никак не пойму, что за что...
И количество прерываний увеличивается соответственно.
Все байтики приходят вместе, но с опозданием...
Кроме того, запаздывание есть даже когда клиент и сервер бегают на одном и том же ящике...
Можно попробовать послать один пакет в 1 байт. Если задержка все равно будет, то я не прав. Но сомневаюсь.
- sobomax
- Маньяк
- Сообщения: 3699
- Зарегистрирован: 29 июн 2006, 22:53
- Откуда: Vancouver
Re: Вопрос к линуксоидам
А чего собственно удивительного? TCP будучи stream-based не гарантирует задержку между отдельными байтиками или то как именно данные будут фреймоватся в потоке. Скорее всего наблюдаем особенности реализации алгоритма буферизации на клиенте и/или сервере. Можно попробовать использовать send() вместо write(), кардинально лечить путем перехода на datagram-oriented protocol (i.e. UDP) ну или на какой нибудь все еще экзотический SCTP.
-Maxim
-Maxim