Назад | Перейти на главную страницу

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?

Что ж, в целом это можно решить, изменив 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

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