Андрей
Андрей личный блог
02 декабря 2015, 16:24

Влияние виртуальной среды на производительность HFT систем

Всем день добрый!

Коллеги, ведь наверняка у нас тут есть люди, которые по взрослому занимаются HFT.
Я в самом начале пути и хочется прояснить для себя некоторые моменты связаные с организацией рабочей инфраструктуры.
Вопросы изложеные ниже касаются трейдинга только косвенно, так что сильно не пинайте. Если кто подскажет что-то путное, буду благодарен. 
Думаю многие, для торговли чтобы быть поближе к бирже используются виртуальные сервера (ВПС) это решение довольно дёшево и вполне себя оправдывает если не нужна высокая производительность.
Вот тут и возник вопрос, а какую задержку в обработку данных вносит виртуальная среда? На сколько миллисекунд будет отставать реакция софта установленного на виртуальном сервере по сравнению с простеньким выделенным сервером? Ведь данные с физического порта сетевой карты хост сервера на котором крутится виртуалка сначала должны попасть на виртуальный коммутатор гипервизора, потом на порт виртуальной машины, которая опять же програмно эмулируется, не говоря уже о том что виртуальная машина обладает крайне ограниченным пулом аппаратных ресурсов которые может использовать для вычислений, вплоть до ошибок связанных с дискретизацией времени из за неправильного подсчёта тактов процессора. По идее все эти программные обработки могут вносить неслабую задержку.
Но есть и другая сторона, современные аппаратные средства обладают серьёзной производительностью и  аппаратной поддержкой систем виртуализации. Частота процессоров измеряется в гигагерцах, а это значит что счёт тактов  в аппаратной системе идёт на наносекунды.

Вот и возникла дилемма, имеет ли смысл переносить своё хозяйство на выделенный сервер и какой выигрыш по времени реакции это даст. 
10мс для меня это уже ощутимое время, ради этого можно и заморочиться.

Если кто обладает опытом по данной теме прошу поделиться.
Заранее спасибо.
12 Комментариев
  • Юрий Елисов
    02 декабря 2015, 16:37
    Зачем ты задаешь вопрос этот, если в принципе как я понял разбираешься в железке неплохо… Если занялся HFT, важно понять одну и самую главную мысль — не важно насколько ты быстр в абсолютных величинах, важно на сколько ты быстр в относительных… То есть на примере твоего вопроса — если ты запустил свою hft — стратегию на виртуалке(есть потери производительности), и кто то запустил аналогичную не на виртуалке(нет потерь производительности), а на своей железке, то он тебя обставит и ты не заработаешь или заработаешь, но мало… и так во всех аспектах hft… Ну виртуалка вообще не вариант — мое мнение… на hft код выкручивать надо на производительность, доходит до очень тонких настроек и щипитильного подбора железяки… А вы про виртуалку рассуждаете… Ну если только ваша стратегия настолько уникальна, что кроме вас там никого нет больше…
    • Cristopher Robin
      02 декабря 2015, 16:43
      Юрий Елисов, скорее всего автор знает правильный ответ на свой вопрос, тут вы правы, может он хочет найти подтверждение или просто пообщатся с людьми которые те же проблемы исследуют.

  • Cristopher Robin
    02 декабря 2015, 16:41
    1. Задержка не стационарна
    2. Чем быстрее вычисление, тем больше влияние задержки
    3. Для редких событий, чем есть торговые сигналы, эта величина значительно больше чем 10 мс
    4. Общая задержка зависит от очень большого количества факторов
    5. Не только для HFT, но и для просто торговли внутри 1 секунды варинт виртуалки исключен

    Так же добавлю что многие ведутся на короткий пинг до шлюза с виртуалок (1-2мс против 10мс), это очень наивное решение проблемы.
  • Cristopher Robin
    02 декабря 2015, 16:48
    Вот живая картинка как выглядит задержка вычисления на планшетном селероне, на двухядерном хеоне и на 8миядерном виртуальоном ксеоне. Комментарии излишни. Горизонталь итерации, вертикаль микросекунды.
      • Cristopher Robin
        02 декабря 2015, 16:55
        Андрей, если найдете ДЦ с коротким пингом до РТС, где можно взять сервер в аренду, буду благодарен за наводку.
  • Евгений
    02 декабря 2015, 17:06
    Единственно правильный ответ дан в самом начале. Все остальное — это мерить питона попугаями.
  • Safonov
    03 декабря 2015, 23:11
    Вот с декабря сел на виртуалку от Финама+Плаза. Пинг до Moex 3мс. Плюс терминал создаёт задержку. Максимально время исполнения от 5 до 7 мс 
    • daphoenix
      15 августа 2016, 18:15
      Safonov, Я тестировал DMA Финама с плазой, пинг действительно 2-4 мс, но сам сервак тупит так, что запустить что-то с таймфреймом меньше минуты физически невозможно — процессор ложится на планку 100% и никуда оттуда не уходит. Мне давали до 8 ядер — результат тот же. Есть какая-то очень глобальная проблема в самой технологии виртуализации.

      P.S. У меня дома в ближнем Подмосковье стоит ноутбук, подключенный кабелем к Ростелекому, средний пинг у него 6 мс.
      За что платить всем этим DMA-сервисам, я не очень понимаю.

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

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