Este artigo do LWN sugere que se pode adicionar/substituir o agendador de rede por uma fila "sob" o "agendador fictício " do mq . Estes dois apontam para esse fim:
The mq scheduler does two things:
- present device TX queues as classes, allowing to attach
different qdiscs to them, which are grafted to the TX queues
- present accumulated statistics of all device queue root qdiscs
Eu apreciaria ser educado sobre como fazer isso. Já tentei muitas combinações. Por exemplo, a partir desta listagem do padrão (CentOS 7.6):
# tc qdisc show dev eth2
qdisc mq 0: root
qdisc pfifo_fast 0: parent :8 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :7 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :6 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :5 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :4 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :3 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc pfifo_fast 0: parent :1 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Eu tentei muitas variações tentando experimentar enxertar diferentes agendadores em mq . Aqui estão algumas tentativas:
# tc qdisc add dev eth2 parent 0:1 fq_codel target 1ms interval 10ms quantum 9014
RTNETLINK answers: No such file or directory
# tc qdisc add dev eth2 parent 0:1 handle 1: fq_codel target 1ms interval 10ms quantum 9014
RTNETLINK answers: No such file or directory
Alguém saberia a mágica de colocar agendadores diferentes em mq além de apenas pfifo_fast ? Um ponto que é altamente frustrante é que a página de manual, e muitos artigos da internet, fazem referência à raiz e aos pais sobre os agendadores e filas. No entanto, nenhum faz um trabalho adequado ao descrever, a partir da saída que tenho acima do tc qdisc show dev eth2
comando, qual é a raiz e quais são os pais. Eu estou supondo, mas meus palpites parecem estar longe.
O identificador reservado padrão do kernel 0: não pode ser referenciado corretamente (como valor principal 0: ). Você deve primeiro (re)instalar o qdisc root mq , usando um identificador válido (ou seja: não 0: ):
Que agora deve lhe dar isso:
Agora você pode executar seus comandos conforme pretendido usando o pai 1:1 em vez de 0:1 etc.