tcp/udp performance
Danny Braniss
danny at cs.huji.ac.il
Tue Sep 5 22:58:15 PDT 2006
> Jack Vogel wrote:
> > On 8/30/06, Danny Braniss <danny at cs.huji.ac.il> wrote:
> >>
> >> ever since 6.1 I've seen fluctuations in the performance of
> >> the em (Intel(R) PRO/1000 Gigabit Ethernet).
> >>
> >> motherboard OBN (On Board NIC)
> >> ---------------- ------------------
> >> 1- Intel SE7501WV2S Intel 82546EB::2.1
> >> 2- Intel SE7320VP2D2 INTEL 82541
> >> 3- Sun Fire X4100 Server Intel(R) PRO/1000
> >>
> >> test 1: writing to a NetApp filer via NFS/UDP
> >> FreeBSD Linux
> >> MegaBytes/sec
> >> 1- Average: 18.48 32.61
> >> 2- Average: 15.69 35.72
> >> 3- Average: 16.61 29.69
> >> (interstingly, doing NFS/TCP instead of NFS/UDP shows an increase in
> >> speed of
> >> around 60% on FreeBSD but none on Linux)
> >>
> >> test2: iperf using 1 as server:
> >> FreeBSD(*) Linux
> >> Mbits/sec
> >> 1- 926 905 (this machine was busy)
> >> 2- 545 798
> >> 3- 910 912
> >> *: did a 'sysctl net.inet.tcp.sendspace=65536'
> >>
> >>
> >> So, it seems to me something is not that good in the UDP department, but
> >> I can't find what to tweek.
> >>
> >> Any help?
> >>
> >> danny
> >
> > Have discussed this some internally, the best idea I've heard is that
> > UDP is not giving us the interrupt rate that TCP would, so we end up
> > not cleaning up as often, and thus descriptors might not be as quickly
> > available.. Its just speculation at this point.
> If a high interrupt rate is a problem and your NIC+driver supports it,
> then try enabling polling(4) aswell. This has helped me for bulk
> transfers on slower boxes but i have noticed problems with ALTQ/dummynet
> and other highly realtime dependent networking code. YMMV.
> More info in the man 4 polling.
> I think recent linux kernels/drivers have this implemented so it will
> enable it dynamically on high load. However i only skimmed the documents
> and i'm not a linux expert so i may be wrong on that.
> /Junics
as far as i know, polling only works on UP machines, besides, TCP performance
is much better than UDP - which goes against basic instincts.
the packets arriving at the NIC get processed - interrupt - before you can tell
that they are IP/TCP/UDP, so the iterrupt latency should be the same for all.
> >
> > Try this: the default is only to have 256 descriptors, try going for
> > the MAX
> > which is 4K.
> >
> > Cheers,
> >
> > Jack
More information about the freebsd-net
mailing list