Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];

Вниз

Магические числа при асинхронном чтении из канала.   Найти похожие ветки 

 
тимохов   (2008-09-11 18:49) [0]

Здравствуйте.

У меня есть вопрос познавательного характера о именованных каналах.

У меня есть сервер, где транспорт реализован посредством именованных каналов.

Клиент к серверу подключается по сети, а не локально.

На стороне сервера с помощью функции ReadFile я асинхронно читаю из именованного канала.

В моем случае функция ReadFile сразу "сваливается" в фоновую работу, т.е. сразу происходит из нее выход и GetLastError возвращает ERROR_IO_PENDING. После этого я жду с помощью функции WaitForMultipleObjects завершения операции. После чего с помощью функции GetOverlappedResult узнаю сколько реально было прочитано.

Размер буферов именованного канала в моем случае 32кб. Также я провожу чтение блоками по 32 кб.

При анализе логов я заметил, что значение BytesTransfered, возвращаемое функцией GetOverlappedResult, имеет всего 2 значения: 4292 или 1155, причем первое число встречается значительно чаще.

ВОПРОС.
Есть ли какие-то "магические" числа, сходные с указанными выше? Ну там, размеры пакетов IP или еще что?

Просто интересно.

Спасибо :)


 
тимохов   (2008-09-11 19:13) [1]

А, еще забыл сказать, что каналы имеют тип PIPE_TYPE_BYTE. Т.е. это потоки байтов, а не сообщения. Протокол я определяю сам - вначала 4 байта длины, потом сами данные.


 
Сергей М. ©   (2008-09-11 21:33) [2]


> ВОПРОС.
> Есть ли


ОТВЕТ:
Нет.
И быть не может.


 
тимохов   (2008-09-11 22:20) [3]

Не, ну должно быть что-то закономерное в этом. У меня нагрузочное тестирование было в течении нескольких часов - результат именно такой-же.
Видимо как-то с размером пакета IP связано. Или вообще что-то с канального уровня поднимается такое. Ибо локально такой закономерности нет.

Ладно, спасибо и  на этом. Видимо, если и есть здесь закономерность, то ее знают только производители оборудования.


 
Сергей М. ©   (2008-09-11 22:26) [4]


> Видимо как-то с размером пакета IP связано


Какой нафих IP ?

Стек протоколов, базирующихся на IP, может быть вообще не инсталлирован в твоей системе, однако именованые пайпы обязаны работать ..


 
тимохов   (2008-09-11 22:40) [5]


> Какой нафих IP ?
>
> Стек протоколов, базирующихся на IP, может быть вообще не
> инсталлирован в твоей системе, однако именованые пайпы обязаны
> работать ..


Сергей, но я же и говорю явно про мой конкретный случай. Ну интересно же из частного вопроса сделать общий вывод с помощью авторитетного мнения специалистов.

Собственно вопрос имеет и практический смысл. Может я что-то неверно написал в своем сервере, что идет чтение такими, в общем-то, небольшими кусками по 4кб. Я обнаружил по логу, что почти 100% операций ReadFile никогда не выполняются синхронно, а сразу сваливаются в оверлаппед режим, хотя, судя по MSDN, синхронное выполнение чтения даже при задании последним параметром структуры OVERLAPPED все равно возможно (как минимум при запуске сервера и клиента на одной машине *большинство* операций чтения заканчиваются синхронно).

У меня сложилось такое ощущение, что постоянно сваливание ReadFile в асинхронный режим и последующий вызов WaitForMultipleObjects не очень производительно. Я всегда думал, что оверлаппед чтение призвано повышать производительность - можно обойтись одним потоком для чтения запросов от множества клиентов, что приведет к тому, что не будет переключения между множество потоков.

В общем, я в некотором замешательстве относительно производительности моего сервера. Может именованный каналы вообще штука не очень быстрая?

Если есть у кого опыт написание серверов на именованных каналах, поделитесь, пожалуйста, опытом.

Спасибо.


 
Германн ©   (2008-09-12 02:50) [6]

Оп-ля. А кто перекинул сей топик из WinAPI в "Прочее"?
И почему?



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
15-1252088993
Гость
2009-09-04 22:29
2009.11.01
Подскажите Эксперт для Дельфи


15-1252186826
Германн
2009-09-06 01:40
2009.11.01
Новые веяния в установке устройств PnP? Или что?


1-1222090596
Dmitry S
2008-09-22 17:36
2009.11.01
Как задать толщину линии TPen.Width равную 1 мм?(продожение темы)


2-1252569523
Shyrick
2009-09-10 11:58
2009.11.01
Обработка log файла


2-1252165263
PIROTEX777
2009-09-05 19:41
2009.11.01
ошибка в данных CRC





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский