ユーザ用ツール

サイト用ツール


サイドバー



最近の更新



Tag Cloud

タグ数量
9
10
1
3
1
2
17
7
1
1
4
13
4
1
2
309
1
9
2
7
21
5
1
31
3
3
1
6
1
1
46
1
3
3
1
1
1
1
1
1
33
46
7
9
10
8
10
3
21
2
9
2
2
6
9
1
1
6
12
4
3
3
2
1
8
2
4
1
6
30
2
12
5
3
1
1
2
3
2
1
3
4
3
3
4
2
2
1
1
2
1
2
1
2
1
27
2
1
3
2
2
1
1
2
3
17
5
9
1
1
2
16
2
6
1
2
12
1
3
1
1
4
11
1
6
4
2
7
1
3
3
13
1
4
1
1
10
3
1
17
3
1
5
1
2
1
1
2
9
2
2
3
2
1
3
1
3
1
2
2
2
1
2
6
1
4
3
5
1
3
1
3
3
2
1
1
30
1
3
3
1
1
1
5
5
1
36
2
4
2
1
2
2
3
1
1
1
4
1
2
1
3
1
1
1
2
5
2
5
2
1
1
1
5
3
2
4
4
1
2
2
25
1
1
3
4
1
1
2
1
1
2
1
1
1
1
2
1
1
1
1
1
19
7
1
5
1
1
3
1
2
1
1
2
1
1
1
1
1
1
2
1
1
2
1
1
1
1
1
1
1
4
2
1
1
2
2
2
1
1
2
1
1
12
1
1
1
1
1
1
1
1
1
1
1
1
1
01_linux:10_network:05_multi_queue

05 KVM Multi-Queue

KVMのデフォルトだと、並列パケット処理できなくてUDPで大量のアクセスが来た場合、
1つのCPUが100%に張り付いて処理できなくなる。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/sect-virtualization_tuning_optimization_guide-networking-multi-queue_virtio-net

xml修正

<driver name='vhost' queues='N'/> この部分追加

<interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
      <driver name='vhost' queues='N'/>
</interface>

VM再起動

xml修正後は、VMの停止・起動が必要

virsh shutdown [vm]
virsh start [vm]

VM再起動後

VM内で、NICのマルチキューサポートを有効化

ethtool -L eth0 combined M

※KVM側で、ちゃんと対応した後で無いとエラーなります。

KVM側で設定してない場合のエラー

# ethtool -L eth0 combined 2
Cannot set device channel parameters: Invalid argument

確認

動作検証はiperf3とhtopコマンドで見ると分かりやすい

ethtoolで確認

ethtool -L eth0 combined 2とした場合、下記のようになっているはず。

# ethtool -l eth0
Channel parameters for ens3:
Pre-set maximums:
RX:		0
TX:		0
Other:		0
Combined:	2
Current hardware settings:
RX:		0
TX:		0
Other:		0
Combined:	2
# ls /sys/class/net/eth0/queues/
rx-0  rx-1  tx-0  tx-1

VM側

# iperf3 -s

クライアント側

# iperf3 -c 10.10.102.10 -P 4 -t 100 -b 1G -u

top/htopで確認

こんな感じでsoft割り込み(si)がバラけてくれる

# top
top - 13:26:49 up  2:07,  2 users,  load average: 0.47, 0.33, 0.26
Tasks: 124 total,   2 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.0 us,  1.4 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.0 hi, 15.9 si,  0.0 st
%Cpu2  :  3.4 us, 19.0 sy,  0.0 ni, 15.6 id,  0.0 wa,  0.0 hi, 62.0 si,  0.0 st
%Cpu3  :  2.2 us, 12.9 sy,  0.0 ni, 62.9 id,  0.0 wa,  0.0 hi, 21.9 si,  0.0 st

interruputsで確認

# cat /proc/interrupts | grep virtio0-input
 27:   14371000   19775189          0          0   PCI-MSI-edge      virtio0-input.0
 29:          9          0        293   41440575   PCI-MSI-edge      virtio0-input.1
 31:    7669896       3004    8222898     858360   PCI-MSI-edge      virtio0-input.2
 33:    3929884          0   22509786          0   PCI-MSI-edge      virtio0-input.3
01_linux/10_network/05_multi_queue.txt · 最終更新: 2022/06/11 09:26 by matsui

Yesterday:860 Today:866 Total:237479