Вместо введения
Представим ситуацию.
- Написали код алгоритма. Оказался медленный.
- Посидели, подумали, перестроили алгоритмы расчета. Ускорился. Мало.
- Применили мета программирование в сложных расчетах. Получше.
- Посидели, по профилировали, нашли узкие места в коде. Ускорили. Уже ничего.
- Применили разные модели распараллеливания кода. Сервисные функции закинули в одно ядро, расчеты раскинули по ядрам. Сидим греем камень. Получше.
- Максимум попытались убрать места, чтобы код не обращался в ОС
В общем что дальше? Дальше ищем прирост в железе. Вроде логично. Про бытовые моменты писать не буду, процессор там погнать или еще чего. Затрону специфичное оборудование.
Сетевой уровень.
Упрощенно схематично, данные с биржи можно получать примерно по такой схеме
Для обычного разработчика тут достаточно много черного ящика. Мол, мое приложение получает данные, а что там и как там происходит, мне не подвластно и закрыто. По запросам западных алготрейдеров, производители пошли на встречу и разработали такое сетевое оборудование, которое такую схему превращает в следующую:
Рассмотрим классическую подробную схему получения сетевых данных на уровне приложения.
Как видим, приложение приходится общаться с ОС. На профессиональном сленге, это звучит как «вывалиться в kernel-space» или «вывалиться в ядро». Дело в том, что общение с ОС это всегда дорого по времени. Разработчики при проектировании всегда стараются оставаться в пределах user-space и не вываливаться в ядро. Тут то на помощь и пришли производители оборудования. По запросу трейдеров начали выпускать специальное сетевое оборудование. И классическая схема на сетевом уровне преобразовывается в следующую схему:
Как видим. ОС мы вообще выключили из цепи. Приложение работает у себя только с памятью. При этом, при правильном построении методов работы, можно значительно сократить операций копирования памяти, операций обработки массивов данных. Все это несомненный плюс приросту.
ТОП производители на сегодняшний день это Intel, Solarflare. Ценовой уровень оригинальных карт хорошего класса на сегодняшний день примерно 1500$. Есть конечно и китайские аналоги на оригинальных чипах, подешевле. Для набития шишек и они наверное пойдут.
Карты так же поставляются с коробочным ПО, при котором разработчику ничего не нужно делать. Коробочное ПО само перехватывает все сетевые вызовы приложения, обрабатывает и отдает результат. Кстати основные разработчики данного ПО — это российская компания из Питера. Мастера своего дела, их знает весь мир.
Так же есть и low-level API, где разработчик сам может опуститься на низкий уровень программирования и поработать с картой напрямую.
Тут я прервусь, сохранюсь и продолжу.
а fast остался еще через инет, не?
Хотел вам предложить померить издержки сокета, да навряд ли получится.
кстати, попутно вопрос возник. А как получаются данные с биржи? Pull или push? То есть, клиент сам запрашивает данные, или биржа рассылает? Или и то и другое доступно? Судя по вашей схеме, там push, но я так подозреваю, что это упрощенная схема, поэтому спрашиваю
На одной из конференций, производителям задали вопрос, а почему вы то и то (какие то фишечки) не реализуете, они так и ответили — а трейдерам это не надо.
Кстати, они же, железяки, прижились и в банковской сфере, там где нагруженный трафик из за транзакций.
— не нужны эти карты за 1.5k — системный вызов используешь для байпаса и все
Если использовать с коробочным ПО, то можно писать на многом.
В тексте речь больше не о подключениях, а о сетевом стеке =)
Другой момент, что брать сразу lan + fpga на одной плате и там два чипа связаны одной шиной, это да. 7500$ цена такого уровня железа.
Есть еще интересный момент. Насчет fpga. Когда intel начали пиарить в 2014году свои процессоры на одной крупной конференции, они провели масштабные тесты, где показали, что такая сетевая карта + их последний cpu на 4 ядра на тот момент, обходит последнюю fpga altera при разборе UDP
Если без сети, то есть типа PCIe FPGA Accelerator Card. Сразу в комп втыкается.
Вы мутите какой-то супер HFT?
Без сети, я все таки придерживаюсь мнения, что уже не так актуально. Я примерно знаю задержки, чтобы доставить пакеты в эту pci-e fpga через общую шину. Скользкий вопрос. Тут нужно обладать результатами многих карт, чтобы сразу потратиться на нужную, а такого никто не даст.
Народ, это было введение.
В следующем посте будет адрес той питерской конторы.
Бабки все приготовили? Ха-ха-ха!