LINUX: лист multiq не может быть заменен tc

# uname -r   
4.7.5-200.fc24.x86_64+debug

# tc -s -d qdisc show dev ens3
qdisc mq 8001: root  
Sent 44589 bytes 340 pkt (dropped 0, overlimits 0 requeues 0)  backlog 0b 0p requeues 0 
qdisc fq_codel 0: parent 8001:1 
limit 10240p flows 1024 quantum 1514 target 5.0ms interval 100.0ms ecn  Sent 90 bytes 1 pkt (dropped 0, overlimits 0 requeues 0) 
[...]
qdisc fq_codel 0: parent 8001:2
limit 10240p flows 1024 quantum 1514 target 5.0ms interval
100.0ms ecn  Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) [...]

-> При попытке заменить ...

# tc qdisc replace dev ens3 parent 8001 handle :1 sfq 
Error: argument ":5" is wrong: invalid qdisc ID  

# tc qdisc replace dev ens3  handle 8001:1 sfq 
RTNETLINK answers: Invalid argument  

# tc qdisc replace dev ens3 parent 8001 handle 1 sfq 
RTNETLINK answers: No such file or directory

# tc qdisc replace dev ens3 parent 8001:1 sfq 
RTNETLINK answers: No such file or directory

Определенный qdisc выходит за рамки Вот. Хотя это имеет смысл, особенно для старых ядер, где qdisc по умолчанию - FIFO!

Согласно коду, это должно быть возможно:

http://lxr.free-electrons.com/source/net/sched/sch_api .c # L1214

Спасая вас тривиальные пути кода tc . Он просто создает сообщение netlink к ядру из ввода cli.

Я еще не проследил, это может быть простое сообщение. : )

Кто-нибудь когда-нибудь менял лист в экземпляре multiq? Я что-то не понимаю при построении вызова cli?

1
задан 5 February 2017 в 11:58
1 ответ

Что ж, в целом это можно решить, изменив qdisc по умолчанию, поскольку mq инициализирует его, оставив qdisc по умолчанию. Итак ...

sysctl -w net.core.default_qdisc=<your_qdisc>

tc qdisc replace dev <your iface> root mq

Подтверждение ...

tc -s qdisc show <your iface> ens3

Хотя индивидуальная настройка имела бы свою прелесть. Я мог бы прийти и реализовать это когда-нибудь, когда возникнет необходимость. :)

0
ответ дан 4 December 2019 в 05:16

Теги

Похожие вопросы