Вопрос к программистам. Кто работал с Registered Input/Output (RIO) API Extensions (Windows)? Продолжение вопроса в первом комментарии

ВНИМАНИЕ! КОММЕНТАРИИ ПЕРВОГО УРОВНЯ В ВОПРОСАХ УПОРЯДОЧИВАЮТСЯ ПО ЧИСЛУ ПЛЮСИКОВ, А НЕ ПО ВРЕМЕНИ ПУБЛИКАЦИИ.
Ссылка на описание: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/hh997032(v%3Dws.11)
Функции: https://learn.microsoft.com/ru-ru/windows/win32/api/mswsock/ns-mswsock-rio_extension_function_table?redirectedfrom=MSDN

Информации в интернете мало, нашел только тривиальные примеры на сайте майкрософта да пару простых примеров в сети наподобие эхо-сервера и проб использования функций с каким-никаким объяснением как использовать RIO и по-мелочи на stackoverflow.
На форуме Майкрософта все печально — те немногие топики, относящиеся к теме — глас вопиющего в пустоту:
https://social.msdn.microsoft.com/Forums/en-US/home?category=&forum=wsk&filter=&sort=relevancedesc&brandIgnore=true&searchTerm=Registered+I%2FO

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

Подразумевается использование TCP-протокола (не UDP)

   1) RIO. Нужно ли получать таблицу функций для каждого сокета или достаточно сделать это один раз (для самого первого созданного сокета)?
Вызов «WSAIoctl()» для получения таблицы не создает каких-то внутренних структур или связей для сокета, указанного в качестве аргумента? Просто возвращает статичные адреса процедур, как при линковке dll?

   2) RIO. Есть ли возможность использовать WSAAccept() ии Connect() в неблокирующем режиме? Решение как для стандартных сокетов (подписка на событие FD_Read с помощью Select() перед Bind()) не работает — Select() возвращает ошибку 10038 «WSAENOTSOCK»
https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
avatar
За летенси боремся? ) тогда лучше сразу на Линя переходить
avatar
Андрей К, нет, все намного банальнее — я злостный изобретатель велосипедов. После бэктестера пилю свою программу для торговли, и раз уж все равно заморачиваться, то почему бы сразу не делать с РИО, раз уж мелкомягкие его так хвалят в описании.
avatar
Дед Нечипор, Я даже спецом глянул что это… А этот рио с 2013 года вообще хоть как то развивается? 
avatar
CloseToAlgoTrading, без понятия. Судя по скудности информации — не похоже, чтобы было востребовано
avatar
Дед Нечипор, насколько я понял, это по сути все тот же Winsock api, просто немного вглубь — избавляемся от копирования данных для отправки и уменьшаем количество переключений в режим ядра за счет извлечения множественных данных одним запросом
avatar
Дед Нечипор, вам тогда DPDK лучше. Там не сложно
avatar
Дед Нечипор, вы сколько данных для отправки копируете, и сколько наносекунд это занимает на современном процессоре?
Пинг в виндовс 32-мя байтами через бытовой роутер занимает ~200 микросекунд на гигабитной сети.
avatar
Denis, меня не столько гонка за микросекундами увлекла, сколько факт, что если я все равно буду писать работу с сетью на Winsock API, то можно сделать небольшой дополнительный шажок и делать это на практически все той же Winsock, только с бонусом в виде расширенного контроля. Это если на практике не проявятся подводные камни.
В плане трудозатрат это не сильно добавит мне работы. А вот внедрение упомянутого здесь DPDK без четкого понимания зачем мне это нужно с околонулевыми начальными знаниями будет явно неоправданным.
avatar
Дед Нечипор, в агло много важных задач. Что касается контроля, то тут нужны карты Intel с хардверным ускорением стека tcp и linux. А, те, драйвера, что есть у виндовс часто не обеспечивают никаких преимуществ для данных техник. Те более, что все равно запустите робота в виртуалке, а там будет еще один слой копирования данных. В этом плане дает больше кэширование и оптимизации логики на миллисекунды.
avatar
нет, все намного банальнее — я злостный изобретатель велосипедов.


Дед Нечипор, тогда уж лучше сразу перейти на DPDK for Windows

Велосипеднее не придумаешь, да и latency меньше, чем в DPDK, не найти.

avatar
Unworldly, открываю указанную ссылку, и первая же фраза на главной странице вводит меня в ступор секунд на 10…
DPDK 21.08 supports running testpmd and examples with mlx5, i40e, and ice HW, vmxnet3 paravirtual devices in QEMU, or with PCAP virtual devices

боюсь, не осилю даже описания, не то что портирование на Delphi
avatar
боюсь, не осилю даже описания, не то что портирование на Delphi

Дед Нечипор, тогда от DPDK придётся отказаться.
avatar
предполагаю программисты не пользуются таким уже лет десять

avatar
kiryushka, Ну, winsock api существенно поболее лет будет, думаю, даже им  пользуются. Вон, SECRET упоминал, что свой софт на сокетах беркли писал
avatar
Дед Нечипор, он даже говорил, что на Delphi ) но время беспощадно идет вперед, многое становится не совсем актуально
avatar
RIO живы, но напрямую с ними работают мало. За столько лет уже сделали библиотеки для всех популярных языков. Тот же .NET Core новых версий, вроде как, использует RIO внутри.
avatar

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

Залогиниться

Зарегистрироваться

теги блога Дед Нечипор

....все тэги



UPDONW
Новый дизайн