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
- Using robocopy, copy file from local disk to network drive
- Using robocopy, copy file from network drive to local disk
- Using ftp, GET file from server
- Using ftp, PUT file to server
- Repeat each test 5 times, with standard frame size and 9k jumbo frame
Results
- Robocopy network to local (Windows Server, 1500 byte frames): 25.4 MB/s
- Robocopy network to local (Windows Server, 9000 byte frames): 25.1 MB/s
- Robocopy local to network (Windows Server, 1500 byte frames): 26.6 MB/s
- Robocopy local to network (Windows Server, 9000 byte frames): 29.1 MB/s
- ftp GET (Windows Server, 1500 byte frames): 34.1 MB/s
- ftp GET (Windows Server, 9000 byte frames): 40.0 MB/s
- ftp PUT (Windows Server, 1500 byte frames): 45.8 MB/s
- ftp PUT (Windows Server, 9000 byte frames): 43.6 MB/s
- Robocopy network to local (Linux Server, 1500 byte frames): 28.5 MB/s
- Robocopy network to local (Linux Server, 9000 byte frames): 28.1 MB/s
- Robocopy local to network (Linux Server, 1500 byte frames): 32.1 MB/s
- Robocopy local to network (Linux Server, 9000 byte frames): 33.3 MB/s
- ftp GET (Linux Server, 1500 byte frames): 39.47 MB/s
- ftp GET (Linux Server, 9000 byte frames): 49.33 MB/s
- ftp PUT (Linux Server, 1500 byte frames): 42.66 MB/s
- ftp PUT (Linux Server, 9000 byte frames): 76.79 MB/s
My Conclusions
- Without any performance tuning, Linux was faster than Windows Server 2003 at serving large files over SMB/CIFS.
- Also without any tuning, vsftpd on Linux was faster than the IIS6 FTP service on Windows Server 2003.
- In my tests, write performance for the mirrored drives on the 2550 was the clear bottleneck.
- Enabling Jumbo Frames didn’t do much in terms of bandwidth when using the Windows server, but Linux saw measurable gains.
- Jumbo Frames did lower CPU utilization.
- 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.
