Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Операционные системы
>
Unix и другие
>
BSD
(Модераторы:
MOPO3
,
Sla
,
McZim
) > Тема:
BSD sockets & nonblocked send()
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: BSD sockets & nonblocked send() (Прочитано 8831 раз)
0 Пользователей и 1 Гость смотрят эту тему.
comm
Гость
BSD sockets & nonblocked send()
«
:
27-10-2004 19:22 »
Народ! не подскажет кто?
Проблема есть по сокетам, уже забодался с ними.. (
дано
серверный сокет находится в неблокирующем режиме
клиентский - в блокирующем
режим - STREAM
размер сообщений ~20 байт
обмен производится через localhost
платформа FreeBSD 4.9
проблема
при протоколе обмена SRR (send-receive-reply)
скорость обмена получается весьма низкой около 4-5 транзакций/сек
в тоже время при однонаправленной передаче (типа спама канала) скорость 800 транзакций/сек в любую сторону
сервер накручивает около 7000 циклов/сек (цикл послать если есть что, принять если есть что)
симтомы похожи на буферизацию выходного потока
в манах начитал про SO_SNDTIMEO/SO_SNDLOWAT , крутил оба параметра никакого эффекта
вопрос
как это вылечить ? (чтобы нормальная скорость была по SRR)
куда читать лучше?
Записан
npak
Команда клуба
Offline
Пол:
BSD sockets & nonblocked send()
«
Ответ #1 :
28-10-2004 08:41 »
comm
, в клиенте и сервере поставь опцию TCP_NODELAY
По-умолчанию, TCP накапливает данные перед отправкой, чтобы выдать сегмент большого размера. Опция TCP_NODELAY указывает реализации, что данные надо отправлять немедленно.
Записан
UniTesK -- индустриальная технология надежного тестирования.
http://www.unitesk.com/ru/
comm
Гость
BSD sockets & nonblocked send()
«
Ответ #2 :
28-10-2004 13:43 »
спасибо! именно это мне и нужно было! скорость обмена возросла на порядок
Записан
npak
Команда клуба
Offline
Пол:
BSD sockets & nonblocked send()
«
Ответ #3 :
28-10-2004 14:15 »
comm
, если протокол заключается только в трёх сообщениях, размер сообщений небольшой, сетка надёжная, то можно воспользоваться UDP. Минимум накладных расходов.
Записан
UniTesK -- индустриальная технология надежного тестирования.
http://www.unitesk.com/ru/
comm
Гость
BSD sockets & nonblocked send()
«
Ответ #4 :
29-10-2004 07:29 »
Цитата: npak
comm
, если протокол заключается только в трёх сообщениях, размер сообщений небольшой, сетка надёжная, то можно воспользоваться UDP. Минимум накладных расходов.
UDP я рассматривал как вариант, но мне нужен синхронный протокол, а UDP по природе асинхронный
к тому же у меня библиотека есть, реализующая весь клиентский протокол сообщений на потоках
(в ней и был баг)
а сетка надежней некуда, localhost %)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Операционные системы
>
Unix и другие
>
BSD
(Модераторы:
MOPO3
,
Sla
,
McZim
) > Тема:
BSD sockets & nonblocked send()
Загружается...