Андрей К
Андрей К личный блог
22 марта 2017, 18:19

Современные железяки в алго.

Вместо введения


Представим ситуацию.

  • Написали код алгоритма. Оказался медленный.
  • Посидели, подумали, перестроили алгоритмы расчета. Ускорился. Мало.
  • Применили мета программирование в сложных расчетах. Получше.
  • Посидели, по профилировали, нашли узкие места в коде. Ускорили. Уже ничего.
  • Применили разные модели распараллеливания кода. Сервисные функции закинули в одно ядро, расчеты раскинули по ядрам. Сидим греем камень. Получше.
  • Максимум попытались убрать места, чтобы код не обращался в ОС
В общем что дальше? Дальше ищем прирост в железе. Вроде логично. Про бытовые моменты писать не буду, процессор там погнать или еще чего. Затрону специфичное оборудование.

Сетевой уровень.


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


Для обычного разработчика тут достаточно много черного ящика. Мол, мое приложение получает данные, а что там и как там происходит, мне не подвластно и закрыто. По запросам западных алготрейдеров, производители пошли на встречу и разработали такое сетевое оборудование, которое такую схему превращает в следующую:
Современные железяки в алго.
Рассмотрим классическую подробную схему получения сетевых данных на уровне приложения.
Современные железяки в алго.

Современные железяки в алго.
Современные железяки в алго.

Как видим, приложение приходится общаться с ОС. На профессиональном сленге, это звучит как «вывалиться в kernel-space» или «вывалиться в ядро». Дело в том, что общение с ОС это всегда дорого по времени. Разработчики при проектировании всегда стараются оставаться в пределах user-space и не вываливаться в ядро. Тут то на помощь и пришли производители оборудования. По запросу трейдеров начали выпускать специальное сетевое оборудование. И классическая схема на сетевом уровне преобразовывается в следующую схему:

Современные железяки в алго.
Современные железяки в алго.
     Как видим. ОС мы вообще выключили из цепи. Приложение работает у себя только с памятью. При этом, при правильном построении методов работы, можно значительно сократить операций копирования памяти, операций обработки массивов данных. Все это несомненный плюс приросту.
     ТОП производители на сегодняшний день это Intel, Solarflare. Ценовой уровень оригинальных карт хорошего класса на сегодняшний день примерно 1500$. Есть конечно и китайские аналоги на оригинальных чипах, подешевле. Для набития шишек и они наверное пойдут.
     Карты так же поставляются с коробочным ПО, при котором разработчику ничего не нужно делать. Коробочное ПО само перехватывает все сетевые вызовы приложения, обрабатывает и отдает результат. Кстати основные разработчики данного ПО — это российская компания из Питера. Мастера своего дела, их знает весь мир.
     Так же есть и low-level API, где разработчик сам может опуститься на низкий уровень программирования и поработать с картой напрямую. 

Тут я прервусь, сохранюсь и продолжу.
37 Комментариев
  • TT
    22 марта 2017, 18:43
    Давайте лучше про приоритезацию интернет-трафика. Ну чтоб мои пакеты вперед всех прочих ходили.
      • QJGlXS3Ars
        22 марта 2017, 18:57
        Андрей К, все современные гейтвеи игнорят этот флаг, т.к. есессно все производители начали обузить его чтоп лучше на фоне казаться
      • flextrader
        22 марта 2017, 19:23
        Андрей К, это лажа  не так, просто все решения, так или иначе юзающие DSCP/TOS вендороспецифичные, и т.о. требующие условного VPN, реализуемого инфраструктурой одного ISP оператора или не одного (но на базе некой договоренности), а не так, чтоб весь такой ip-трафик ходил безусловно с приоритетом ч/з любую железку
      • flextrader
        22 марта 2017, 19:35
        Андрей К, я б даже сказал, все мультисервисные продукты и (кстати) «мультикастовые» решения за счет различных реализаций QoS седня и живут. для отдельных приложений  в рамках нескольких vpn-сетей (ту же биржу взять, вне коло).

        а fast остался еще через инет, не?
  • Stoic
    22 марта 2017, 19:01
    Про алготрейдинг будет че?)
  • sortarray sortarray
    22 марта 2017, 19:01
    Это все как то наивно:). Неужели издержки на работу с сокетами оси настолько критичны по сравнению с издержками на саму сеть(передачу данных)? Не является ли это классикой преждевременной оптимизации?
      • Авентадор
        22 марта 2017, 21:21
        Андрей К, очень понравились диалоги между железяками! рисуйте ещё! :)
    • ale osetr
      22 марта 2017, 19:15
      sortarray sortarray, с коробочным ПО уже критично получается, наверное )
  • sortarray sortarray
    22 марта 2017, 19:09
     данные с биржи можно получать примерно по такой схеме

    кстати, попутно вопрос возник. А как  получаются данные с биржи? Pull или push? То есть, клиент сам запрашивает данные, или биржа рассылает? Или и то и другое доступно? Судя по вашей схеме, там push, но я так подозреваю, что это упрощенная схема, поэтому спрашиваю
  • SAI
    22 марта 2017, 19:21
    Та это все детский сад, уже есть решения на масс маркете куда по продвинутее, но все ровно будет проигрывать всякого рода айсикам.
      • Cristopher Robin
        22 марта 2017, 22:25
        Андрей К, Алексей имел в виду, что шунтирование IP слоя в приложение не является эксклюзивной задачей трейдеров. Это очень популярная технология и применяется для многих high-load сетевых решений. На счет lan+fpga, это может имееть смысл для аппаратного декодирования fast. Идея правильная им всячески интересная, но пока биржа не разберется с тем как ущербно она распространяет дату, это все не имеет смысла, по крайней мере на срочке.
  • nbvehrfr
    22 марта 2017, 19:49
    — а почему ничего не сказано по миграцию части кода на GPU ?
    — не нужны эти карты за 1.5k — системный вызов используешь для байпаса и все
  • Чёрный кот
    22 марта 2017, 20:57
    На чем писали? Какой терминал? Какое подключение?
      • Чёрный кот
        22 марта 2017, 21:18
        Андрей К, понятно)  Ну GPU думаю не поможет, т.к. там больше для параллельной обработки нескольких потоков вычислений. Если потоков мало, то нет ничего быстрее FPGA.
          • Чёрный кот
            22 марта 2017, 23:48
            Андрей К, так вроде полно плат с lan + fpga, а 7500 это за какую плис?

            Если без сети, то есть типа PCIe FPGA Accelerator Card. Сразу в комп втыкается.

            Вы мутите какой-то супер HFT?
  • rename37
    22 марта 2017, 21:24

    Народ, это было введение.

    В следующем посте будет адрес той питерской конторы. 

    Бабки все приготовили? Ха-ха-ха!

  • да… щас бы ос выкинуть нахрен как ненужный рудимент когда сидишь по инету из дома и пару раз в секунду чёто там где-то проверяешь)))
  • Vadim S
    23 марта 2017, 09:02
    Интересно и полезно для образования. Пиши дальше.
  • БорисыЧ
    20 апреля 2017, 10:42
    Господа, а может просто поторгуем :))))

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн