Задержка (информатика и телекоммуникации)

В сферах информатики и телекоммуникаций задержка/лате́нтность (от англ. Latency — задержка) — это реальное время отклика по сравнению с ожидаемым.

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

Термин латентность имеет различные значения в зависимости от контекста, его исходное значение (широко используемое в психологии, медицине и большинстве других дисциплин) происходит от латинского слова latent — скрытый[1]. Есть современная версия происхождения слова, как сходного со словом поздно (англ. late), образованного от древнеанглийского «laet»[2].

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

Ощутимая задержка оказывает значительное негативное влияние на удовлетворённость пользователей и удобство использования в области взаимодействия человека с компьютером.

Задержка информации при прохождении по сети связи

Если разложить путь прохождения информации с момента её генерирования каким либо приложением до момента, когда она попадёт в точку назначения, и соотнести его с эталонной моделью OSI, то можно увидеть, что задержка сигнала соотносится с физическим уровнем и средой передачи сигналов, а латентность сигнала — со всеми вышестоящими уровнями (канальный, сетевой, транспортный, сеансовый, представительский и прикладной).

Таким образом, латентность информации можно разделить на четыре категории:

  • задержка распространения;
  • задержка физического слоя;
  • аппаратная латентность;
  • программная латентность.

Задержкой сигнала (delay) называется время, затраченное сигналом для физического прохождения через элемент без какой-либо обработки, то есть на передачу информации по каналу связи. Характеризуется физикой процессов в элементе.

Латентность сигнала (latency) — это задержка сигнала, которая превышает время физического прохождения через элемент из-за его попутной обработки, то есть затраченное программным обеспечением и устройствами сети на подготовку к передаче информации по каналу связи. Характеризуется алгоритмами обработки информации.

Латентность информации — это общее время, затрачиваемое сетью связи на процесс передачи информации (передача информации из точки возникновения в точку назначения). Является суммой задержки сигнала и удвоенной латентности сигнала (на приеме и передаче)[3].

Основные виды задержки

  • Сетевая задержка (англ. Network latency) — задержка при передаче данных по сети (сколько времени требуется пакету данных для прохождения от одной намеченной точки сети к другой), применительно к сетевым коммутаторам — время прохождения пакета через коммутатор;
  • системная задержка (англ. System latency) — время, необходимое компьютерной системе для обработки и реакции на ввод;
  • задержка приложения (англ. Application latency) — задержка между действием пользователя и ответом приложения или веб-сайта[4];
  • латентность оперативной памяти — время (в тактах) выполнения команды процессора или ожидания доставки данных из памяти;
  • механическая задержка — например, в жёстких дисках.

Измерение задержки

Задержка обычно измеряется в миллисекундах (мс), при этом более низкие значения указывают на лучшую производительность. Основные инструменты для измерения задержки:

  • Ping — простой инструмент командной строки, который измеряет время кругового прохода до конкретного назначения.
  • Traceroute — показывает путь прохождения данных к месту назначения; показывает задержку на каждом этапе.
  • Wireshark — инструмент с бо́льшими возможностями для детального анализа сети, включая измерения задержки.

При интерпретации измерений задержки важно учитывать контекст. Например, задержка в 30 мс может быть отличной для производительности веб-сайта, но она может быть проблематичной для онлайн-игр.

Основные факторы, влияющие на латентность

  • Расстояние — физическое расстояние между источником и назначением значительно влияет на задержку распространения;
  • маршрутизация — если передача данных проходит через множество маршрутизаторов и коммутаторов, это может вызывать задержки;
  • перегрузка сети — высокий трафик может увеличить задержки в очереди и обработке;
  • аппаратные ограничения — устаревшие или недостаточно мощные устройства могут приводить к задержкам в обработке;
  • неэффективность программного обеспечения — недостаточно оптимизированный код или неэффективные алгоритмы могут вызвать задержки приложения;
  • среда передачи — разные типы соединений (проводные, беспроводные) имеют разную скорость и задержку;
  • потеря пакетов — если во время передачи пакеты данных теряются и их нужно пересылать, задержка увеличивается.

В сфере телекоммуникаций нижний предел задержки определяется средой, используемой для передачи информации. В надёжных двусторонних системах связи задержка ограничивает максимальную скорость, с которой информация может передаваться, поскольку часто существует ограничение на объём информации, находящейся в процессе передачи в любой момент времени[4].

Сетевая задержка

Сетевая задержка состоит из четырёх основных компонентов:

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

Понимание этих компонентов имеет решающее значение для выявления узких мест и оптимизации производительности сети[4].

Сети с коммутацией пакетов

Сетевая задержка в сетях с коммутацией пакетов измеряется либо как односторонняя (время от отправки пакета источником до его получения назначением), либо как круговая задержка (односторонняя задержка от источника до получателя плюс односторонняя задержка от получателя обратно к источнику). Чаще используется измерение круговой задержки, поскольку её можно измерить из одной точки.

Многие программные платформы предоставляют сервис под названием ping, который можно использовать для измерения круговой задержки. Ping использует протокол ICMP (Internet Control Message Protocol) с эхо-запросом, который заставляет получателя отправить полученный пакет в качестве немедленного ответа, и таким образом обеспечивается измерение примерного времени круговой задержки. Ping не может выполнять точные измерения[5], в первую очередь потому, что ICMP предназначен только для диагностических или контрольных целей и отличается от реальных коммуникационных протоколов, таких как TCP. Кроме того, маршрутизаторы и интернет-провайдеры могут применять различные политики управления трафиком к различным протоколам[6][7]. Для более точных измерений используется специализированное программное обеспечение, например: hping, netperf или iperf.

Однако, в сложной сети (с нестандартной архитектурой) типичный пакет будет пересылаться через несколько каналов и шлюзов, каждый из которых не начнёт пересылать пакет, пока он не будет полностью получен. В такой сети минимальная задержка — это сумма задержки передачи каждого канала плюс задержка пересылки каждого шлюза. На практике минимальная сетевая задержка также включает задержки очереди и обработки. Задержка в очереди возникает, когда шлюз получает несколько пакетов от разных источников, направляющихся одному и тому же месту назначения. Поскольку обычно одновременно может передаваться только один пакет, некоторые пакеты должны ожидать своей передачи в очереди, что вызывает дополнительные задержки. Задержки обработки возникают, когда шлюз определяет, что делать с вновь полученным пакетом. Также проблема излишней сетевой буферизации может вызывать увеличение задержки на порядок или более. Сочетание разных видов задержек часто создаёт сложный и переменный профиль сетевой задержки.

Задержка ограничивает общую пропускную способность в надёжных двусторонних коммуникационных системах.

Волоконная оптика

Сетевая задержка в оптоволокне в значительной степени определяется скоростью света. Это соответствует задержке в 3,33 мкс на каждый километр длины пути. Показатель преломления большинства оптоволоконных кабелей составляет около 1,5, что означает, что свет распространяется в вакууме примерно в 1,5 раза быстрее, чем в кабеле, что приводит к задержке примерно 5,0 мкс на каждый километр. В более коротких городских сетях может наблюдаться более высокая задержка из-за дополнительного расстояния в стояках зданий и кросс-коммутациях. Для расчёта задержки соединения необходимо знать расстояние, пройденное волокном, которое редко является прямой линией, так как оно должно обходить географические контуры и препятствия, такие как дороги и железнодорожные пути и т. п.

Из-за несовершенств волокна и, как следствие, деградации качества передачи сигнала по нему, необходимо использование специальных волоконно-оптических усилителей или регенераторов на сетях с большой протяжённостью (более 100 километров). Соответственно необходимо учитывать задержку, вносимую этими компонентами.

Спутниковая связь

Спутники на геостационарных орбитах находятся достаточно далеко от Земли, поэтому сетевая задержка связи становится значительной — примерно четверть секунды для передачи сигнала от одного наземного передатчика к спутнику и обратно к другому наземному передатчику; около половины секунды для двусторонней связи от одной наземной станции к другой и обратно к первой. Низкая околоземная орбита иногда используется для сокращения этой задержки, но это требует более сложного отслеживания спутников на Земле и необходимости в большем количестве спутников в спутниковой группировке для обеспечения непрерывного покрытия.

Онлайн игры

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

Онлайн-игры чувствительны к задержке, поскольку быстрое время отклика (реакция) на новые события, происходящие во время игрового сеанса, вознаграждается, в то время как медленное время отклика может повлечь за собой штрафы. C интернет-соединением с высокой задержкой может демонстрировать медленные реакции, несмотря на адекватное время реакции. Это даёт игрокам с низкой задержкой соединения техническое преимущество[8].

Биржевая торговля

В биржевой торговле, использующей компьютерные сети, сетевая задержка может повлечь за собой серьёзные финансовые потери. Джоэл Хасбрук и Гидеон Саар (2011) измеряют задержку выполнения финансовых транзакций на основе трёх компонентов: время, необходимое для того, чтобы информация достигла трейдера; время на выполнение алгоритмов трейдера для анализа информации и принятия решения о ходе действий; и время, за которое сгенерированное действие достигает биржи и реализуется. Хасбрук и Саар противопоставляют это способу измерения задержек многими торговыми площадками, которые используют гораздо более узкие определения, такие как задержка обработки, измеряемая от ввода заказа (на компьютере поставщика) до передачи подтверждения (с компьютера поставщика)[9].

Торговля с использованием компьютеров развилась до такой степени, что улучшения сетевой скорости на миллисекунды предоставляют конкурентное преимущество финансовым учреждениям.

Задержка звука и видео

Задержка звука — это задержка между поступлением аудиосигнала в систему и его выходом из неё. Наиболее возможные причины задержки в аудиосистеме: аналого-цифровое преобразование, буферизация, цифровая обработка сигналов, время передачи, цифро-аналоговое преобразование и скорость звука в воздухе.

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

Механическая задержка

Любой механический процесс сталкивается с ограничениями, описываемыми классической механикой.

Задержка в дисководах является примером механической задержки. В данном случае она состоит из: времени поиска (англ. seek time), необходимого для того, чтобы приводной механизм был установлен над соответствующей дорожкой, и вращательной задержки (англ. rotational latency) — задержка ожидания вращения диска для того, чтобы нужный сектор диска оказался под головкой чтения/записи.

Аппаратное и программное обеспечение

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

Например, предположим, что процесс требует установить выходное напряжение компьютерной карты в режиме высокое-низкое-высокое-низкое и так далее с частотой 1000 Гц. Операционная система планирует процесс для каждого перехода (высокий-низкий или низкий-высокий) на основе аппаратных часов, таких как таймер событий высокой точности. Задержка — это время между событиями, сгенерированными аппаратными часами, и фактическими переходами напряжения с высокого на низкое или с низкого на высокое.

Некоторые операционные системы для настольных компьютеров имеют ограничения производительности, которые создают дополнительную задержку. Проблема может быть смягчена с помощью расширений и исправлений в реальном времени, таких как PREEMPT RT — набор патчей для ядра Linux, которые реализуют возможности вычислений в режиме реального времени.

Во встраиваемых системах выполнение команд в реальном времени часто поддерживается операционной системой реального времени.

В программных системах (Software system) оценка производительности по средней и медианной задержке может вводить в заблуждение, поскольку несколько выбросов могут исказить эти показатели. Вместо этого архитекторы и разработчики программного обеспечения должны использовать «99-й процентиль»[10].

Методы уменьшения задержки

Использование технологий Content Delivery Network и Edge Computing существенно уменьшают задержки.

Латентность оперативной памяти может быть уменьшена применением технологий упреждающего чтения и многопоточности.

Сетевая задержка

  • Платформы Edge Computing обрабатывают данные ближе к источнику и кэшируют контент ближе к пользователям, что значительно снижает задержку и необходимость в передаче данных на большие расстояния.
  • Балансировка нагрузки — распределение трафика между несколькими серверами помогает предотвратить перегрузку и уменьшить задержку.
  • Механизмы кэширования — хранение часто запрашиваемых данных в памяти снижает необходимость в длительных запросах к базе данных.
  • Оптимизация протоколов — технологии, такие как HTTP/2 и QUIC, повышают эффективность передачи данных.

Улучшения аппаратного обеспечения и инфраструктуры

  • Оптоволоконные сети обеспечивают более низкую задержку и бо́льшую пропускную способность по сравнению с традиционными медными кабелями.
  • Принятие новых беспроводных стандартов 5G и Wi-Fi 6 со значительно более низкой задержкой.
  • Развёртывание edge computing — обработка данных ближе к источнику снижает необходимость в передаче данных на большие расстояния.
  • Компоненты с низкой задержкой — специализированные сетевые карты и коммутаторы могут сократить критически важные миллисекунды.

Оптимизация программного обеспечения и приложений

  • Написание оптимизированного кода и использование подходящих структур данных может снизить время обработки.
  • Архитектура микросервисов — разделение приложений на более мелкие, независимо развёртываемые сервисы может улучшить оперативность.
  • Оптимизация запросов к базе данных — хорошо спроектированные индексы и эффективные запросы могут значительно снизить задержку базы данных.
  • Асинхронная обработка — обработка времязатратных задач асинхронно предотвращает блокировку основного потока приложения.
  • Нативные приложения edge computing — создание приложений, работающих без серверов и сохраняющих данные в децентрализованных базах данных, трансформирует бизнес и опыт пользователей[4].

Примечания

Литература

Ссылки