mqトップレベルqdiscの下にqdiscを追加する

mqトップレベルqdiscの下にqdiscを追加する

このLWN記事人々が「下」のキューのためのネットワークスケジューラを追加/交換できるという提案MQ「仮想スケジューラ」の両方は、次の目的を表します。

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

私はこれを行う方法について教育を受けたいと思います。私は多くの組み合わせを試しました。たとえば、次の基本リスト(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

いろいろなスケジューラをつなげようとしながら多くのバリエーションを試してみました。mqより低い。以下はいくつかの試みです。

# 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

以下に様々なスケジューラを配置する魔法を知っている人はいますか?MQだけでなくpfifo_fast?マニュアルページや多くのインターネット記事、参考資料がとても残念です。そしてスケジューラとキュー情報。しかし、上記のコマンドの出力でtc qdisc show dev eth2ルートと親が何であるかを適切に説明できる人は誰もいません。推測していますが、私の推測は遠くにあるようです。

答え1

カーネルのデフォルト予約済み扱う0:正しく引用できません(デフォルト値0:)。まず、qdiscルートを(再)インストールする必要がありますMQ、有効なハンドルを使用してください(例:0:):

# tc qdisc add dev eth2 root handle 1: mq

これで、次のものを提供する必要があります。

# tc qdisc show dev eth2
qdisc mq 1: root 
qdisc pfifo_fast 0: parent 1: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 1: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 1: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 1: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 1: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 1: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 1: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:1 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

0:1 ではなく、上位 1:1 を使用して、期待どおりにコマンドを実行できるようになりました。

関連情報