On Sat, 28 Mar 2020 20:46:46 +0800 Derek Su <dere...@qnap.com> wrote:
> The pervious handling of the full primary or queue is only dropping > the packet. If there are lots of clients to the guest VM, > the "drop" will lead to the lost of the networking connection > until next checkpoint. > > To address the issue, this patch drops the packet firstly. > Then, do checkpoint and flush packets. > > Signed-off-by: Derek Su <dere...@qnap.com> Hello, I had a look at this again and did some benchmarking. First just qemu 5.0-rc1 with my bugfixes ( https://lists.nongnu.org/archive/html/qemu-devel/2020-04/msg01432.html ) Then qemu 5.0-rc1 with my bugfixes and this patch series. This commit hurts performance too much: Client-to-server bandwidth falls from ~45.9 Mbit/s to 22.9 Mbit/s. Server-to-client bandwidth falls from ~6.3 Mbit/s to just ~674 Kbit/s. Average latency rises from ~197ms to ~397ms. Meanwhile the packet loss without this commit is negligible, only 1-2 ping packets got lost during each test run. Instead I think we should just turn the error message into a trace so it doesn't flood the logs. Regards, Lukas Straub
5.0-rc1 with bugfixes: *** iperf -c 192.168.178.65 *** [ 3] local 192.168.178.68 port 33418 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=53 ttl=64 time=2.57 ms [ ID] Interval Transfer Bandwidth 64 bytes from 192.168.178.65: icmp_seq=54 ttl=64 time=142 ms [ 3] 0.0-10.2 sec 60.1 MBytes 49.4 Mbits/sec 64 bytes from 192.168.178.65: icmp_seq=55 ttl=64 time=2.64 ms [ 3] Sent 892 datagrams rtt min/avg/max/mdev = 1.920/235.514/1810.653/411.394 ms, pipe 4 [ 3] local 192.168.178.68 port 33420 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=55 ttl=64 time=24.3 ms [ ID] Interval Transfer Bandwidth 64 bytes from 192.168.178.65: icmp_seq=56 ttl=64 time=505 ms [ 3] 0.0-10.3 sec 51.0 MBytes 41.7 Mbits/sec 64 bytes from 192.168.178.65: icmp_seq=57 ttl=64 time=11.7 ms [ 3] Sent 892 datagrams rtt min/avg/max/mdev = 1.962/218.713/1365.510/344.164 ms, pipe 3 [ 3] local 192.168.178.68 port 33422 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=54 ttl=64 time=49.2 ms [ ID] Interval Transfer Bandwidth 64 bytes from 192.168.178.65: icmp_seq=55 ttl=64 time=587 ms [ 3] 0.0-10.8 sec 60.1 MBytes 46.6 Mbits/sec 64 bytes from 192.168.178.65: icmp_seq=56 ttl=64 time=167 ms [ 3] Sent 892 datagrams rtt min/avg/max/mdev = 1.573/276.375/1384.085/362.027 ms, pipe 3 *** iperf -c 192.168.178.65 -d *** [ 4] local 192.168.178.68 port 33424 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=60 ttl=64 time=2.27 ms [ 5] local 192.168.178.68 port 5001 connected with 192.168.178.65 port 48440 ^C [ ID] Interval Transfer Bandwidth --- 192.168.178.65 ping statistics --- [ 4] 0.0-10.1 sec 60.8 MBytes 50.4 Mbits/sec 60 packets transmitted, 59 received, 1.66667% packet loss, time 29595ms [ 5] 0.0-11.7 sec 11.2 MBytes 8.05 Mbits/sec rtt min/avg/max/mdev = 1.785/254.258/1352.916/395.070 ms, pipe 3 [ 5] local 192.168.178.68 port 33426 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=59 ttl=64 time=2.98 ms [ 4] local 192.168.178.68 port 5001 connected with 192.168.178.65 port 48442 ^C [ ID] Interval Transfer Bandwidth --- 192.168.178.65 ping statistics --- [ 5] 0.0-10.3 sec 58.6 MBytes 47.6 Mbits/sec 59 packets transmitted, 59 received, 0% packet loss, time 29088ms [ 4] 0.0-11.9 sec 13.8 MBytes 9.77 Mbits/sec rtt min/avg/max/mdev = 2.026/207.507/1518.013/331.972 ms, pipe 4 [ 5] local 192.168.178.68 port 33432 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=93 ttl=64 time=12.6 ms [ 4] local 192.168.178.68 port 5001 connected with 192.168.178.65 port 48446 ^C [ ID] Interval Transfer Bandwidth --- 192.168.178.65 ping statistics --- [ 5] 0.0-10.2 sec 59.4 MBytes 49.0 Mbits/sec 93 packets transmitted, 92 received, 1.07527% packet loss, time 46137ms [ 4] 0.0-31.0 sec 4.41 MBytes 1.19 Mbits/sec rtt min/avg/max/mdev = 2.107/131.212/1405.670/287.854 ms, pipe 3 5.0-rc1 with bugfixes and checkpoint on queue full: *** iperf -c 192.168.178.65 *** [ 3] local 192.168.178.68 port 33402 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=52 ttl=64 time=1329 ms [ ID] Interval Transfer Bandwidth 64 bytes from 192.168.178.65: icmp_seq=53 ttl=64 time=828 ms [ 3] 0.0-10.1 sec 35.9 MBytes 29.9 Mbits/sec 64 bytes from 192.168.178.65: icmp_seq=54 ttl=64 time=619 ms [ 3] Sent 892 datagrams rtt min/avg/max/mdev = 2.183/788.828/3329.045/958.683 ms, pipe 7 [ 3] local 192.168.178.68 port 33404 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=57 ttl=64 time=2.58 ms [ ID] Interval Transfer Bandwidth 64 bytes from 192.168.178.65: icmp_seq=58 ttl=64 time=322 ms [ 3] 0.0-11.5 sec 36.5 MBytes 26.6 Mbits/sec 64 bytes from 192.168.178.65: icmp_seq=59 ttl=64 time=10.2 ms [ 3] Sent 892 datagrams rtt min/avg/max/mdev = 1.962/610.122/3303.544/907.708 ms, pipe 7 [ 3] local 192.168.178.68 port 33406 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=55 ttl=64 time=2.60 ms [ ID] Interval Transfer Bandwidth 64 bytes from 192.168.178.65: icmp_seq=56 ttl=64 time=112 ms [ 3] 0.0-11.1 sec 16.1 MBytes 12.2 Mbits/sec 64 bytes from 192.168.178.65: icmp_seq=57 ttl=64 time=118 ms [ 3] Sent 892 datagrams rtt min/avg/max/mdev = 2.088/593.139/2734.770/857.021 ms, pipe 6 *** iperf -c 192.168.178.65 -d *** [ 5] local 192.168.178.68 port 33408 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=75 ttl=64 time=2.64 ms [ 4] local 192.168.178.68 port 5001 connected with 192.168.178.65 port 47492 ^C [ ID] Interval Transfer Bandwidth --- 192.168.178.65 ping statistics --- [ 5] 0.0-10.3 sec 51.2 MBytes 41.9 Mbits/sec 75 packets transmitted, 75 received, 0% packet loss, time 37122ms [ 4] 0.0-25.0 sec 1.00 MBytes 336 Kbits/sec rtt min/avg/max/mdev = 1.830/563.652/1996.992/651.117 ms, pipe 4 [ 4] local 192.168.178.68 port 33410 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=127 ttl=64 time=2.41 ms [ 5] local 192.168.178.68 port 5001 connected with 192.168.178.65 port 47494 ^C [ ID] Interval Transfer Bandwidth --- 192.168.178.65 ping statistics --- [ 4] 0.0-10.1 sec 39.0 MBytes 32.4 Mbits/sec 127 packets transmitted, 126 received, 0.787402% packet loss, time 63205ms [ 5] 0.0-50.8 sec 5.01 MBytes 826 Kbits/sec rtt min/avg/max/mdev = 1.791/239.200/2105.867/513.022 ms, pipe 5 [ 4] local 192.168.178.68 port 33414 connected with 192.168.178.65 port 5001 64 bytes from 192.168.178.65: icmp_seq=90 ttl=64 time=69.4 ms [ 5] local 192.168.178.68 port 5001 connected with 192.168.178.65 port 47496 ^C [ ID] Interval Transfer Bandwidth --- 192.168.178.65 ping statistics --- [ 4] 0.0-10.5 sec 46.1 MBytes 37.0 Mbits/sec 90 packets transmitted, 90 received, 0% packet loss, time 44643ms [ 5] 0.0-31.8 sec 3.26 MBytes 861 Kbits/sec rtt min/avg/max/mdev = 1.909/391.216/1878.484/645.897 ms, pipe 4
pgpOybeE_2pLL.pgp
Description: OpenPGP digital signature