eric dombroski

Linux Versus Windows: File Server Performance

Test Server

Dell PowerEdge 2950
Dual Quad Core Xeon CPUs (3GHz)
16GB RAM
2x 300GB 15000rpm HDD, RAID-0

Test Client

Dell PowerEdge 2550
Dual Xeon CPUs (933MHz)
4GB RAM
2x 18GB 10000rpm HDD, RAID-1

Server Software: Windows

Windows Server 2003 R2 Enterprise, SP-2 (x64 Edition)
IIS6 FTP Service

Server Software: Linux

Debian Linux 4.0r3 amd64
Linux Kernel 2.6.18
Samba 3.0.24-6etch9
vsftpd 2.0.5-2

Client Software: Windows

Windows Server 2003 Enterprise, SP-2 (x86 Edition)
robocopy file copy utility (part of Resource Kit tools)
Built-in ftp client

Network Setup

Directly connected GigE with CAT5e cable
Tested with 1500 (Normal) and 9000 (Jumbo) byte MTU sizes

Test Methodology

  1. Using robocopy, copy file from local disk to network drive
  2. Using robocopy, copy file from network drive to local disk
  3. Using ftp, GET file from server
  4. Using ftp, PUT file to server
  5. Repeat each test 5 times, with standard frame size and 9k jumbo frame

Results

  1. Robocopy network to local (Windows Server, 1500 byte frames): 25.4 MB/s
  2. Robocopy network to local (Windows Server, 9000 byte frames): 25.1 MB/s
  3. Robocopy local to network (Windows Server, 1500 byte frames): 26.6 MB/s
  4. Robocopy local to network (Windows Server, 9000 byte frames): 29.1 MB/s
  5. ftp GET (Windows Server, 1500 byte frames): 34.1 MB/s
  6. ftp GET (Windows Server, 9000 byte frames): 40.0 MB/s
  7. ftp PUT (Windows Server, 1500 byte frames): 45.8 MB/s
  8. ftp PUT (Windows Server, 9000 byte frames): 43.6 MB/s
  9. Robocopy network to local (Linux Server, 1500 byte frames): 28.5 MB/s
  10. Robocopy network to local (Linux Server, 9000 byte frames): 28.1 MB/s
  11. Robocopy local to network (Linux Server, 1500 byte frames): 32.1 MB/s
  12. Robocopy local to network (Linux Server, 9000 byte frames): 33.3 MB/s
  13. ftp GET (Linux Server, 1500 byte frames): 39.47 MB/s
  14. ftp GET (Linux Server, 9000 byte frames): 49.33 MB/s
  15. ftp PUT (Linux Server, 1500 byte frames): 42.66 MB/s
  16. ftp PUT (Linux Server, 9000 byte frames): 76.79 MB/s

My Conclusions

  1. Without any performance tuning, Linux was faster than Windows Server 2003 at serving large files over SMB/CIFS.
  2. Also without any tuning, vsftpd on Linux was faster than the IIS6 FTP service on Windows Server 2003.
  3. In my tests, write performance for the mirrored drives on the 2550 was the clear bottleneck.
  4. Enabling Jumbo Frames didn’t do much in terms of bandwidth when using the Windows server, but Linux saw measurable gains.
  5. Jumbo Frames did lower CPU utilization.
  6. vsftpd loves Jumbo Frames.

I’m curious what the numbers will look like with Windows Server 2008 <–> Vista, now that SMB 2.0 is part of the equation. At this juncture, however, it seems like Linux has a performance edge over Windows.