tc qdisc tbf: параметр пакета
Я использую TBF для ограничения пропускной способности. Служба, которую я тестирую, предъявляет очень строгие требования к задержке, поэтому мне необходим большой контроль над задержкой, которую TBF вызывает в потоке.
Я прочитал, что для того, чтобы не вызывать задержки пакетов (просто отправка или отбрасывание, без какой-либо очереди), "предел" должен быть равен параметру "пакет"; но проведя некоторое тестирование, я обнаружил, что это не так и зависит от установленного значения, более высокое значение пакета / предела будет вызывать более высокую задержку, даже когда "tc -s -d qdisc ls" показывает "0 задержек",
Второе условие для достижения моей цели состоит в том, чтобы соответствовать минимальному значению "man tbf":
Rate = лопнуть *HZ.
Где "скорость" - это скорость вывода, которая должна быть достигнута, а Гц - частота пользователя ядра Linux. При этом RTT не увеличивается, но я не могу получить уровень желаний.
Я даже изменил параметр grub "nohz=off", чтобы не использовать режим частоты ядра бездействия и поддерживать постоянную частоту 250 Гц. Я также отключил режимы TSO/GSO для интерфейсов eth.
Чего мне не хватает в моем подходе?
Это конфигурация, которую я использую с целью отправки или отбрасывания пакетов, но не вызывая задержки / очереди:
sudo tc qdisc добавить dev XXX корневой дескриптор 1: prio
sudo tc qdisc add dev XXX родительский дескриптор 1:3 30: \tbf скорость 5 мегабитный пакет 2.5kb предел 2.5kb mtu 1515 mpu 54b
Фильтр sudo tc добавить dev XXX протокол ip родительский 1:0 prio 3 u32 \match ip src 11.22.33.444 flowid 1:3
Заранее спасибо,