Измерение задержки TCP от ядра Linux

TCP не отдает приоритет трафику, как IP. Когда открыто много фоновых соединений TCP, которые загружают данные (например, когда BitTorrent выполняет раздачу в фоновом режиме), может возникнуть задержка для определенного сокета, потому что TCP будет выбирать только один сокет за раз для отправки своих пакетов на уровень IP. Таким образом, конкретный сокет должен ждать своей очереди, помимо множества других соединений, без какого-либо приоритета, что приводит к задержке.

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

Я хочу загрузить данные на сервер с помощью TCP (я могу использовать инструмент Iperf). Для перехвата системных вызовов я хочу использовать SystemTap. Этот инструмент может сказать мне точный момент, когда вызывается конкретный системный вызов.

Я хочу знать, какие имена двух системных вызовов используются при отправке пакета:

  1. Первая функция уровня TCP вызвала пакет (это tcp_sendmsg);
  2. Последняя функция уровня TCP вызвала пакет, который передает его на уровень IP-сети?

Разница (дельта) между моментом вызова этих двух системных функций и есть задержка, которую я хочу знать.


person Calin-Andrei Burloiu    schedule 17.06.2011    source источник
comment
может быть, немного не по теме, но если вы хотите добавить приоритет TCP-соединениям, вы можете сделать это, с помощью управления QoS посмотрите здесь или там Linux Advanced Routing & Traffic Control   -  person Cédric Julien    schedule 17.06.2011


Ответы (1)


  1. Первая функция уровня TCP, вызываемая для пакета, — это *tcp_sendmsg* из системного исходного файла 'net/ipv4/tcp.c'.
  2. Последней функцией уровня TCP, вызываемой для пакета, является *tcp_transmit_skb* из системного исходного файла 'net/ipv4/tcp_output.c'.

Интересный сайт с информацией об исходных файлах TCP из Linux: tcp_output

person Calin-Andrei Burloiu    schedule 23.06.2011