[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] TCP Segementation Offloading

From: Ingo Krabbe
Subject: Re: [Qemu-devel] TCP Segementation Offloading
Date: Fri, 6 May 2016 06:34:33 +0200

> On Sun, May 01, 2016 at 02:31:57PM +0200, Ingo Krabbe wrote:
>> Good Mayday Qemu Developers,
>> today I tried to find a reference to a networking problem, that seems to be 
>> of quite general nature: TCP Segmentation Offloading (TSO) in virtual 
>> environments.
>> When I setup TAP network adapter for a virtual machine and put it into a 
>> host bridge, the known best practice is to manually set "tso off gso off" 
>> with ethtool, for the guest driver if I use a hardware emulation, such as 
>> e1000 and/or "tso off gso off" for the host driver and/or for the bridge 
>> adapter, if I use the virtio driver, as otherwise you experience 
>> (sometimes?) performance problems or even lost packages.
> I can't parse this sentence.  In what cases do you think it's a "known
> best practice" to disable tso and gso?  Maybe a table would be a clearer
> way to communicate this.
> Can you provide a link to the source claiming tso and gso should be
> disabled?

Sorry for that long sentence. The consequence seems to be, that it is most 
stable to turn off tso and gso for host bridges and for adapters in virtual 

One of the most comprehensive collections of arguments is this article


while I also found a documentation for Centos 6


In google groups this one is discussed


Of course the same is found for Xen Machines


You see there are several Links in the internet and my first question is: Why 
can't I find this discussion in the qemu-wiki space.

I think the bug


is related.

>> I haven't found a complete analysis of the background of these problems, but 
>> there seem to be some effects on MTU based fragmentation and UDP checksums.
>> There is a tso related bug on launchpad, but the context of this bug is too 
>> narrow, for the generality of the problem.
>> Also it seems that there is a problem in LXC contexts too (I found such a 
>> reference, without detailed description in a Post about Xen setup).
>> My question now is: Is there a bug in the driver code and shouldn't this be 
>> documented somewhere in wiki.qemu.org? Where there developments about this 
>> topic in the past or is there any planned/ongoing work todo on the qemu 
>> drivers?
>> Most problem reports found relate to deprecated Centos6 qemu-kvm packages.
>> In our company we have similar or even worse problems with Centos7 hosts and 
>> guest machines.
> Have haven't explained what problem you are experiencing.  If you want
> help with your setup please include your QEMU command-line (ps aux |
> grep qemu), the traffic pattern (ideally how to reproduce it with a
> benchmarking tool), and what observation you are making (e.g. netstat
> counters showing dropped packets).

I was quite astonished about the many hints about virtio drivers as we had this 
problem with the e1000 driver in a Centos7 Guest on a Centos6 Host.

        e1000 0000:00:03.0 ens3: Detected Tx Unit Hang#012  Tx Queue            
 <0>#012  TDH                  <42>#012  TDT                  <42>#012  
next_to_use          <2e>#012  next_to_clean        
<42>#012buffer_info[next_to_clean]#012  time_stamp           <104aff1b8>#012  
next_to_watch        <44>#012  jiffies              <104b00ee9>#012  
next_to_watch.status <0>
        Apr 25 21:08:48 db03 kernel: ------------[ cut here ]------------
        Apr 25 21:08:48 db03 kernel: WARNING: at net/sched/sch_generic.c:297 
        Apr 25 21:08:48 db03 kernel: NETDEV WATCHDOG: ens3 (e1000): transmit 
queue 0 timed out
        Apr 25 21:08:48 db03 kernel: Modules linked in: binfmt_misc ipt_REJECT 
nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip6t_REJECT nf_conntrack_ipv6 
nf_defrag_ipv6 xt_conntrack nf_conntrack ip6table_filter ip6_tables btrfs 
zlib_deflate raid6_pq xor ext4 mbcache jbd2 crc32_pclmul ghash_clmulni_intel 
aesni_intel lrw gf128mul glue_helper ablk_helper i2c_piix4 ppdev cryptd pcspkr 
virtio_balloon parport_pc parport sg nfsd auth_rpcgss nfs_acl lockd grace 
sunrpc ip_tables xfs libcrc32c sd_mod crc_t10dif crct10dif_generic ata_generic 
pata_acpi virtio_scsi cirrus syscopyarea sysfillrect sysimgblt drm_kms_helper 
ttm drm crct10dif_pclmul crct10dif_common ata_piix crc32c_intel virtio_pci 
e1000 i2c_core virtio_ring libata serio_raw virtio floppy dm_mirror 
dm_region_hash dm_log dm_mod
        Apr 25 21:08:48 db03 kernel: CPU: 2 PID: 0 Comm: swapper/2 Not tainted 
3.10.0-327.13.1.el7.x86_64 #1
        Apr 25 21:08:48 db03 kernel: Hardware name: Red Hat KVM, BIOS 0.5.1 
        Apr 25 21:08:48 db03 kernel: ffff88126f483d88 685d892e8a452abb 
ffff88126f483d40 ffffffff8163571c
        Apr 25 21:08:48 db03 kernel: ffff88126f483d78 ffffffff8107b200 
0000000000000000 ffff881203b9a000
        Apr 25 21:08:48 db03 kernel: ffff881201c3e080 0000000000000001 
0000000000000002 ffff88126f483de0
        Apr 25 21:08:48 db03 kernel: Call Trace:
        Apr 25 21:08:48 db03 kernel: <IRQ>  [<ffffffff8163571c>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8107b200>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8107b29c>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8154cd40>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8154cad0>] ? 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8108b0a6>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8154cad0>] ? 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8108dd97>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff81084b0f>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff816477dc>] call_softirq+0x1c/0x30
        Apr 25 21:08:48 db03 kernel: [<ffffffff81016fc5>] do_softirq+0x65/0xa0
        Apr 25 21:08:48 db03 kernel: [<ffffffff81084ea5>] irq_exit+0x115/0x120
        Apr 25 21:08:48 db03 kernel: [<ffffffff81648455>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff81646b1d>] 
        Apr 25 21:08:48 db03 kernel: <EOI>  [<ffffffff81058e96>] ? 
        Apr 25 21:08:48 db03 kernel: [<ffffffff8101dbcf>] default_idle+0x1f/0xc0
        Apr 25 21:08:48 db03 kernel: [<ffffffff8101e4d6>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff810d6325>] 
        Apr 25 21:08:48 db03 kernel: [<ffffffff810475fa>] 
        Apr 25 21:08:48 db03 kernel: ---[ end trace 71ac4360272e207e ]---
        Apr 25 21:08:48 db03 kernel: e1000 0000:00:03.0 ens3: Reset adapter

I'm still not sure why this happens on this host "db03", while db02 and db01 
are not affected. All guests are running on different hosts and the network is 
controlled by an openvswitch.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]