なぜいくつかのマルチキュー(qdisc mq)にはn tx / 1 rxがあり、他のマルチキューには1 tx / n rxがありますか?

なぜいくつかのマルチキュー(qdisc mq)にはn tx / 1 rxがあり、他のマルチキューには1 tx / n rxがありますか?

複数のキューキュールール(mq qdisc)を理解しようとしている間、私は次の設定を誤って見つけました。

私のラップトップでは、私のWiFiインターフェイスは1 rxと4 txでmq qdiscを実装しています。

$ sudo tc qdisc list dev wlp2s0
    qdisc mq 0: root 
    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

$ sudo ll /sys/class/net/wlp2s0/queues/
    total 0
    33458 0 drwxr-xr-x 2 root root 0 août  18 05:54 rx-0/
    33461 0 drwxr-xr-x 3 root root 0 août  18 05:54 tx-0/
    33472 0 drwxr-xr-x 3 root root 0 août  18 05:54 tx-1/
    33483 0 drwxr-xr-x 3 root root 0 août  18 05:54 tx-2/
    33494 0 drwxr-xr-x 3 root root 0 août  18 05:54 tx-3/

一方、HP ProLiantサーバーでは、各NICは4 rxと1 txのmq qdiscを実装しています。

$ sudo tc qdisc show dev eno3
qdisc mq 0: root 
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

$ sudo ll /sys/class/net/eno3/queues/
total 0
41241 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-0/
41244 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-1/
41247 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-2/
41250 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-3/
41256 0 drwxr-xr-x 3 root root 0 août  12 23:17 tx-0/

マルチキューの核心はパフォーマンスのようですが、その理由は何ですか? WiFiカードが「txマルチキュー」を実装し、NICが「rxマルチキュー」を実装するのはなぜですか?

答え1

あなたの質問に私がしっかりと答えることができるかもしれません。これを行うには、ハードウェアエンジニアとNICドライバの作成者による設計決定を理解する必要があります。複数のキューに使用されるキューの数の違いを正しく記録しましたが、説明とは異なります。

提供された出力にはtcTxキューのみが表示されます。 mq以下の別のキューイング分野の接続を可能にする論理qdisc。mqこれがそれ自体にどのような影響を与えるかわかりません。ワイヤレスNICがmq4つのTxキューを持つルートレベルで設定されている場合は、pfifo_fastLinuxのデフォルトを使用します。

ProLiantサーバーの出力が完全に異なることがわかります。

$ sudo tc qdisc show dev eno3
qdisc mq 0: root 
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

$ sudo ll /sys/class/net/eno3/queues/
total 0
41241 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-0/
41244 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-1/
41247 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-2/
41250 0 drwxr-xr-x 2 root root 0 août  12 23:17 rx-3/
41256 0 drwxr-xr-x 3 root root 0 août  12 23:17 tx-0/

ルートレベルの使用量を表示しますmqが、実際には単一のキューです。これはpfifo_fast、出力に表示される単一のTxキューに関連付けられたインスタンスが1つしかないためですsysfs

なぜ?サーバーを尊重します。これは意味があります。提供されるサービスによっては、送信されるデータよりも受信されるデータがはるかに多い場合があります。 WiFiに関しては…本当に分からない。ラップトップが送信するよりも多くのデータを受信すると予想できます。

とにかく、マルチキューをサポートするハードウェアを使用している場合(現在)、NICドライバが使用するキューの数を次のように調整できますethtool。読むethtoolのマニュアルページより良い理解のために。

関連情報