Блог им. zuheren

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

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

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

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

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

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

Так же добавлю что многие ведутся на короткий пинг до шлюза с виртуалок (1-2мс против 10мс), это очень наивное решение проблемы.
avatar
Спасибо. Ответа на свой вопрос я не знаю, имею некоторые домыслы которые начинают подтверждаться.
avatar
Вот живая картинка как выглядит задержка вычисления на планшетном селероне, на двухядерном хеоне и на 8миядерном виртуальоном ксеоне. Комментарии излишни. Горизонталь итерации, вертикаль микросекунды.
avatar
Cristopher Robin, Исчерпывающе. Огромное спасибо!
avatar
Андрей, если найдете ДЦ с коротким пингом до РТС, где можно взять сервер в аренду, буду благодарен за наводку.
avatar
По РТС к сожалению не в курсе, моя тема EUREX 
avatar
Единственно правильный ответ дан в самом начале. Все остальное — это мерить питона попугаями.
avatar
Вот с декабря сел на виртуалку от Финама+Плаза. Пинг до Moex 3мс. Плюс терминал создаёт задержку. Максимально время исполнения от 5 до 7 мс 
avatar
Safonov, тут вопрос не в том сколько времени понадобится на исполнение ордера, а в том сколько понадобится времени системе на принятие решения об отдаче приказа на открытие.
avatar
Safonov, Я тестировал DMA Финама с плазой, пинг действительно 2-4 мс, но сам сервак тупит так, что запустить что-то с таймфреймом меньше минуты физически невозможно — процессор ложится на планку 100% и никуда оттуда не уходит. Мне давали до 8 ядер — результат тот же. Есть какая-то очень глобальная проблема в самой технологии виртуализации.

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

теги блога Андрей

....все тэги



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