Daniel Lindgren
2006-Oct-07 07:47 UTC
[Samba] Starting tcpdump increases Samba performance 20 times
Hello, first post here from me. I have performance problems with Samba (3.0.22-1ubuntu3.1) on Ubuntu 6.06, fully updated. I get < 10 Mbit/sec over a GBit LAN, transferring files from Windows Server 2003 SP1 (or XP SP2) to Samba shares. The Ubuntu server is running on a P4 3.6 GHz with 2 GB RAM, the Win2k3 is running in a virtual machine on VMWare ESX 3.0.1. I have verified the problem on a Win XP (physical) machine also. I've done some file transfer tests and this is what it looks like: W2k3 Explorer/cmd -> Ubuntu Samba (write) = < 10 Mbit/sec. Ubuntu Samba (read) -> W2k3 Explorer = ~ 200 Mbit/sec. Win2k3 FileZilla FTP -> Ubuntu glftpd (write) = ~ 350 Mbit/sec. Ubuntu glftpd (read) -> Win2k3 FileZilla FTP = ~ 350 Mbit/sec. All files transfered were > 100 MB in size. I've set performance options (TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 IPTOS_LOWDELAY) but without any noticeable difference. I found a tip about running tcpdump to see where the bottleneck is, but instead a strange thing happened: when I start tcpdump, Samba performance instantly jumps to ~ 200 Mbit/sec! If I stop tcpdump all goes back to "normal", i e < 10 Mbit/sec. It doesn't matter if tcpdump uses promiscuous mode (default) or not (-p). The performance jump is instant, even during an ongoing transfer and it is 100% repeatable. One (really ugly) workaround would be to start tcpdump in the background and redirect output to /dev/null ... :-) The same thing happens if I run tethereal. Can anyone explain this?