Что такое latency? Low latency? Ultra-low latency?

Для понимания понятия latency возьмем простой пример. Представьте себе некий «черный ящик» с одним входом и одним выходом. Вы подаете сигнал на вход и ожидаете появление сигнала на выходе. При проведении экспериментов вы замечаете, что при подаче сигнала на вход сигнал на выходе появляется через 1 секунду. Причем это происходит постоянно с отклонением +/- 10 миллисекунд. То есть выдача сигнала на выходе происходит с определенной задержкой. Это и есть latency — время задержки.

Latency вокруг нас

close up of snail on ground

Photo by invisiblepower on Pexels.com

Где-то в далекой-далекой галактике сейчас взорвалась сверхновая. Но мы узнаем об этом только через несколько сотен лет, когда свет от взрыва дойдет до Земли. Это latency в астрономии.

На другом конце комнаты кто-то открыл банку с формалином. Запах формалина дошел до вас только через несколько минут. Это latency в физике газов.

Вы написали письмо другу и бросили его в почтовый ящик. Ваш друг получил его через месяц. Это latency Почты России.

Вы повернули выключатель, а свет в спортивном зале загорелся через несколько секунд, когда сработали все реле и разрядники газоразядных ламп. Это latency в электротехнике.

Вы выпили стакан водки, а опьянели через несколько минут. Это latency в биологии.

Latency в IT

В компьютерных системах задержка latency присутствует на всех уровнях имманентно. Мы говорим о latency в памяти (время, когда данные на считывание были посланы в память, и когда они были реально считаны), latency в сети (время, когда данные были посланы в сеть, и когда они были приняты на другом конце), latency в приложении (время, когда произошло определенное действие, и когда проищошла реакция на него: нажатие кнопки и выполнение действия на это нажатие).

Конечно программистам и пользователям хотелось бы, чтобы latency была равна 0: чтобы данные передавались по сети моментально, чтобы в память данные записывались тут же, чтобы по нажатии кнопки сразу получался результат. К сожалению против этого идеала работают законы физики (сигнал не может передаваться по сети быстрее скорости света), и ошибки программистов (неверно написанные код, неверное выбранные стркутуры данных, неверный дизайн, архитектура приложения, неверно выбранная платформа). Соответственно, задача программиста — сделать так, чтобы предложение не только работало, работало правильно и без ошибок, но также работало быстро и желательно настолько быстро, насколько это возможно. Чем ниже latency, тем лучше.

Latency в финансах

Latency — главный объект, на который обращают внимание в финансовых торговых приложениях. Приложение не просто должно работать быстро, а должно укладываться в определенные временные рамки. Выход за эти временный рамки грозит убытками, либо упущенными возможностями.

Давно прошли те времена, когда торги осуществлялись вручную, ордера на биржу передавались по телефону, а цены биржевых сделок распространялись по телеграфу и выводились на ленту механическим тикером. Latency тогда исчислялась часами: вы видели текущую цену на тикере (tick), отправляли ордер (trade) своему брокеру, брокер — маклеру на бирже, маклер на бирже исполнял ваш ордер, перезванивал брокеру, а он вам. За это время рыночная цена акции конечно могла измениться и  ваш ордер мог быть исполнен вовсе не по той цене, которую вы видели час назад на ленте тикера. Это называется «slippage» (буквально «проскальзывание»), когда из-за latency вы получаете не мгновенное исполнение ордера и соответственно по другой рыночной цене, чем ожидали, или вообще не получаете никакого исполнения.

В настоящее время все торги ведутся компьютерами. На передачу рыночных данных и исполнение ордера тратятся уже не часы, а секунды, миллисекунды, микросекунды. Latnecy уменьшилась, но все равно не равна нулю. В этой гонке конкурентное преимущество получает тот, кто тратит на все операции принятия решения (tick-to-trade) меньше времени, чем другие. Медали за второе место в торгах не существует: кто первый отреагировал на новую цену, на новость, на изменения на других рынках и совершил сделку — тот победитель, проигравшему остается только надежда успеть сделать следующую сделку быстрее других.

Гонка за low latency

Гонка за снижение latency охватывает все уровни компьютерной системы участника торгов: от оптимизации приложений, до тонких настроек операционной системы, выбора более быстрой аппаратной платформы, более быстрой памяти, самых быстрых процессоров, самых лучших сетевых карт, самых лучших сетевых проводов, самых быстрых сетевых коммутаторов, самого близкого расположения к бирже и источникам рыночных данных.

В 1997 году low latency означала задержку в 1 миллисекунду.

В 2005 году low latency это 500 микросекунд.

В 2018 году, говоря о low latency, мы имеем в виду задержки уже порядка 100 микросекунд, не больше.

Ultra-Low Latency

pexels-photo-1537268.jpeg

Photo by Stas Knop on Pexels.com

Задержки порядка 10-20 микросекунд это уже ultra-low latency.

Можете ли вы написать приложение, которое способно за 10-20 микросекунд обработать пришедший по TCP/IP пакет данных, разобрать его на значимые блоки, проанализировать их, на основании анализа сформировать рыночный ордер, закодировать его в FIX-сообщение, и послать его на биржу?

Каким языком программирования вы воспользуетесь? Какой операционной системой? С какими настройками? Какой аппаратной платформой? С какими параметрами? Какой сетевой картой? Каким сетевым кабелем? Какой длины? Сколько времени у вас займет написание этой программы и сборка всей системы готовой для реальных торгов на бирже? В какой бюджет вы уложитесь? Как быстро вы сможете вносить изменения в эту систему и выкладывать ее в Production?

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s