Использование cgroup и tc в Linux, похоже, НЕ соответствует моим показателям: расхождение в 10 раз

Использование cgroup и tc в Linux, похоже, НЕ соответствует моим показателям: расхождение в 10 раз

Я использую «стандартный» способ, который нашел повсюду в Интернете (включая ServerFault), чтобы попытаться ограничить пропускную способность процесса, используя cgroups и tc.

На практике я вижу, что установленные мной лимиты tcбудут примерно в 10 раз больше, см. этот скриншот:

введите описание изображения здесь

Я установил rateи ceilна 100kbit (НЕ 100kbps), поэтому я ожидаю, что мой wget ниже покажет около 10 килобайт в секунду. Вместо этого я вижу 500kBps.

Если я обновлю свой тариф HTP до 100кбит/с(100 килобайт в секунду) Я вижу, что моя скорость взлетает до 10Мегабайт/сек, что в 100 раз больше:

tc class change dev ens3 classid 1:1 htb rate 100kbps

# the curl in the other terminal now shoots up to 9.6MB/s
image.iso.1    53%[================>                ] 346,72M  **9,48MB/s**    tps 49s

Я не понимаю, почему это не согласуется с моей конфигурацией htb. Есть ли у вас какие-либо идеи, что я делаю не так?

решение1

С tc вы формируете скорость загрузки. С wget вы тестируете скорость загрузки. В вашем тесте вы формируете TCP ACK, отправляемый вашим клиентом, поэтому мы можем сделать вывод, что соотношение data/ack в вашем случае составляет 1:100.

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

Связанный контент