1. Introduction
This guide covers deploying TFTP Broadband for high-load environments.
2. Install the OS
This step may be carried out by the customer.
3. Supported Platforms
3.1. Linux
-
SLES10 x86_64
-
RHEL x86_64
3.2. Solaris
-
Solaris 9 UltraSparc
3.3. Microsoft Windows
-
Windows Server 2000
-
Windows Server 2003
4. Recommended System Requirements
4.1. x86_64
- CPU
-
2GHz x86_64
- RAM
-
512MB
- DISK
-
25MB after installation plus all spool file sizes
4.2. UltraSparc
- CPU
-
UltraSparc 1.5GHz
- RAM
-
512MB
- DISK
-
25MB after installation plus all spool file sizes
5. Maximizing Performance
This section describes how to modify the default configuration of TFTP Broadband to achieve maximal performance in high-load environments.
5.1. Hardware
TFTP Broadband is not RAM intensive, requiring only about 100 bytes per active transfer. A heavily loaded system can therefore comfortably operate with only a few megabytes of available RAM.
Hard drive performance can be important if you are serving multi-megabyte files to many clients simultaneously. If drive performance appears to be a bottleneck, consider placing the tftp root directory on a RAM drive.
The speed of your network card is also important. TFTP Broadband can typically service your network card at wire speed if other subsystems do not bottleneck the server.
5.2. Operating System
Linux® and Solaris® generally give better performance than Microsoft Windows®.
5.3. Software Configuration
TFTP Broadband is configured through an ASCII configuration file that holds a set of
key=value
pairs that determine the characteristics of the running server. The configuration
file is located in:
- Linux
-
/etc/tftptd.conf
- Solaris
-
/usr/local/etc/tftptd.conf
- Windows
-
Program directory\tftpt.conf
5.3.1. Disable the UDP Publisher
The UDP publisher is a plugin that allows the user interface to receive realtime updates of files being transferred. Although this feature is useful when testing your server, in production the server is greatly slowed down when watching transfers in realtime. The use of the GUI is discouraged on high-performance production systems.
Even when the user interface is not being used, simply having the ability to connect the user interface can cause the server to operate at half its maximum speed. To disable the user interface feature of the server, change the plugins configuration setting to not reflect the UDP publisher as shown below:
plugins=libtftp_rconsole.so
plugins=tftp_rconsole.dll
5.3.2. Use Conservative Log Levels
You can increase the performance of the TFTP server by using conservative log settings. The verbose and debug log settings should be avoided if possible. The audit setting introduces a marginal slowdown and should be disabled unless you require auditing of downloaded files. To change the log level setting for maximum performance, modify the configuration file as shown below:
system.log.levels=error,warning,info
6. Actual Tests
The data below is from actual tests on a dual-processor Intel 3.2GHz CPU running Suse Linux 9.3 with a 100Mb/s network card.
Short conclusion:
-
A single TFTP daemon running on 1 processor can hit about 100Mb/s if there are enough active connections.
-
Generally a single TFTP client may not be fast enough to push the TFTP daemon to 100% network bandwidth.
-
Larger block sizes increase the overall network throughput.
One transfer of a 100MB file:
Blocksize 512:
Transfer 1: 100MB in 50 seconds, 2MB/s or 16Mb/s
Total: 100MB in 50 seconds, 2MB/s or 16Mb/s
CPU usage: 15% - 22%
Blocksize 1400:
Transfer 1: 100MB in 30 seconds, 3.3MB/s or 26.6Mb/s
Total: 100MB in 30 seconds, 3.3MB/s or 26.6Mb/s
CPU usage 15% - 16%
Blocksize 8192:
Transfer 1: 100MB -> 20 seconds, 5MB/s or 40Mb/s
Total: 100MB -> 20 seconds, 5MB/s or 40Mb/s
CPU usage: 11% - 12%
Blocksize 16384:
Transfer 1: 100MB -> 17 seconds, 5.9MB/s or 47Mb/s
Total: 100MB -> 17 seconds, 5.9MB/s or 47Mb/s
CPU usage: 8% - 10%
Two simultaneous transfers of a 100MB file:
Blocksize 512:
Transfer 1: 100MB in 53 seconds, 2MB/s or 16Mb/s
Transfer 2: 100MB in 53 seconds, 2MB/s or 16Mb/s
Total: 200MB in 53 seconds, 3.8MB/s or 30.4Mb/s
CPU usage: 50%
Blocksize 1400:
Transfer 1: 100MB in 35 seconds, 2.8MB/s or 22.4Mb/s
Transfer 2: 100MB in 35 seconds, 2.8MB/s or 22.4Mb/s
Total: 200MB in 35 seconds, 5.7MB/s 45.6Mb/s
CPU usage: 28%
Blocksize 8192:
Transfer 1: 100MB in 22 seconds, 4.5MB/s or 36Mb/s
Transfer 2: 100MB in 22 seconds, 4.5MB/s or 36Mb/s
Total: 200MB in 22 seconds, 9MB/s or 72Mb/s
CPU usage: 20%
Blocksize 16384:
Transfer 1: 100MB in 24 seconds, 4.1MB/s or 33Mb/s
Transfer 2: 100MB in 24 seconds, 4.1MB/s or 33Mb/s
Total: 200MB in 24 seconds, 8.3MB/s or 66.4Mb/s
CPU Usage: 20%
Three simultaneous transfers of a 100MB file:
Blocksize 512:
Transfer 1: 100MB in 73 seconds, 1.4MB/s or 11Mb/s
Transfer 2: 100MB in 73 seconds, 1.4MB/s or 11Mb/s
Transfer 3: 100MB in 73 seconds, 1.4MB/s or 11Mb/s
Total: 300MB in 73 seconds, 4.1MB/s or 32.8Mb/s
CPU usage: 56%
Blocksize 1400:
Transfer 1: 100MB in 39 seconds, 2.6MB/s or 21Mb/s
Transfer 2: 100MB in 39 seconds, 2.6MB/s or 21Mb/s
Transfer 3: 100MB in 39 seconds, 2.6MB/s or 21Mb/s
Total: 300MB in 39 seconds, 7.7MB/s or 61.6Mb/s
CPU usage: 44%
Blocksize 8192:
Transfer 1: 100MB in 30 seconds, 3.3MB/s or 26.4Mb/s
Transfer 2: 100MB in 30 seconds, 3.3MB/s or 26.4Mb/s
Transfer 3: 100MB in 30 seconds, 3.3MB/s or 26.4Mb/s
Total: 300MB in 30 seconds, 10MB/s or 80Mb/s
CPU usage: 10-20%
Blocksize 16384:
Transfer 1: 100MB in 24 seconds, 4.2MB/s or 34Mb/s
Transfer 2: 100MB in 24 seconds, 4.2MB/s or 34Mb/s
Transfer 3: 100MB in 24 seconds, 4.2MB/s or 34Mb/s
Total: 300MB in 24 seconds, 12.5MB/s or 100Mb/s
CPU Usage: 22%
7. Contact
Weird Solutions Box 101 18622 Vallentuna SWEDEN tel: +46 8 758 3700 email: info at weird-solutions.com Copyright© 1997-2015, Weird Solutions, Inc.