
Я использую «стандартный» способ, который нашел повсюду в Интернете (включая 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 и формируя их на нем.Здесьу вас есть пример того, как это сделать.