答复: [PATCH 1/1] virsh: inherit qos from network definition when attaching an interface

Jinsheng Zhang (张金生)-云服务集团 zhangjl02 at inspur.com
Tue Nov 2 08:43:11 UTC 2021


Hi Michal,

	Thank you for the explanation. I misunderstood the setting QoS on the bridge and interfaces.
I will try to use ovs-vsctl to set up bandwidth when using an OVS bridge.

-------
Best Regards,
Jinsheng Zhang

-----邮件原件-----
发件人: Michal Prívozník [mailto:mprivozn at redhat.com] 
发送时间: 2021年11月1日 23:56
收件人: jx8zjs; libvir-list at redhat.com
抄送: Norman Shen(申嘉童); Jinsheng Zhang (张金生)-云服务集团
主题: Re: [PATCH 1/1] virsh: inherit qos from network definition when attaching an interface

On 11/1/21 8:52 AM, jx8zjs wrote:
> Fix bug 1826168: bridge type network with ovs bridge can start with 
> Qos setting which do not take any effect
> 
> Resolves:https://bugzilla.redhat.com/show_bug.cgi?id=1826168
> Signed-off-by: jx8zjs <jx8zjs at 126.com>
> ---
>  tools/virsh-domain.c | 34 +++++++++++++++++++++++++++++++---
>  1 file changed, 31 insertions(+), 3 deletions(-)

I don't think this is right. The bug is about setting QoS on the bridge itself not TAP devices plugged into it. From the bug, this is the QoS
setting:

 <bandwidth> 
   <inbound average='1000' peak='5000' burst='5120'/>
   <outbound average='128' peak='256' burst='256'/>  </bandwidth>

And this is the resulting tc setting:

# tc qdisc show dev virbr0
qdisc htb 1: root refcnt 2 r2q 10 default 0x2 direct_packets_stat 0 direct_qlen 1000 qdisc sfq 2: parent 1:2 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec qdisc ingress ffff: parent ffff:fff1 ---------------- 

# tc class show dev virbr0
class htb 1:1 root rate 8Mbit ceil 40Mbit burst 1600b cburst 1600b class htb 1:2 parent 1:1 leaf 2: prio 0 rate 8Mbit ceil 40Mbit burst 5Mb cburst 1600b 

# tc filter show dev virbr0
filter parent 1: protocol all pref 1 fw chain 0 filter parent 1: protocol all pref 1 fw chain 0 handle 0x1 classid :1

# tc filter show dev virbr0 ingress
filter parent ffff: protocol all pref 49152 u32 chain 0 filter parent ffff: protocol all pref 49152 u32 chain 0 fh 800: ht divisor 1 filter parent ffff: protocol all pref 49152 u32 chain 0 fh 800::800 order 2048 key ht 800 bkt 0 flowid :1 not_in_hw
  match 00000000/00000000 at 0
 police 0x1 rate 1024Kbit burst 256Kb mtu 64Kb action drop overhead 0b 
        ref 1 bind 1


what this does is when there's an <interface/> from this network (without its own QoS) in a guest, it is rate limited by default.
Moreover, if there are two interfaces, with no QoS set, then they share the same rate, which means in this case that they both share 1mbps bandwidth. It does NOT mean that each <interface/> has its own 1mbps bandwidth to spare. The only way to achieve this behaviour is to set QoS on the bridge itself and not individual interfaces.

Michal





More information about the libvir-list mailing list