
One of the design goals of mTCP is to get very good performance without using a tremendous amount of memory for buffers or code.
I measure the performance of mTCP using two different methods. The first method is to use the mTCP FTP client which is a good real world test. FTP involves disk I/O so the results will vary greatly from machine to machine depending on the disk setup. Use these numbers to get an idea of what to expect on your hardware.
The second method is to use a test program that sends and receives data over a TCP/IP socket. The target of the test is a much faster machine that is also used to time the entire test. No disk I/O is done during the test and no processing is done on the data. This makes it a pure test of the TCP/IP code - the numbers from this test show the maximum that one can expect for performance.
All tests are conducted on a private network with minimal other traffic. All code is compiled the same way that you get it when you download mTCP.
Here are some FTP transfer rates that I have measured or have been reported to me:| Machine | Adapter | Hard Drive | Send Rate (KB/sec) |
Recv Rate (KB/sec) |
Code Date | OS and BUFFERS | Notes |
|---|---|---|---|---|---|---|---|
| IBM PC XT (8088@4.77Mhz) | 3Com 3C503 | Original 10MB MFM hard drive | 34.9 | 29.0 | 2011-05-30 | PC DOS 3.3, BUFFERS=30 | 2MB file, standard buffer sizes (TCP 8KB, File 8KB) |
| IBM PC XT (8088@4.77Mhz) | 3Com 3C503 | Original 10MB MFM hard drive | 35.1 | 29.9 | 2011-05-30 | PC DOS 3.3, BUFFERS=30 | 2MB file, max buffer sizes (TCP 16KB, File 32KB) |
| IBM PS/2 Model 25 (8086@8Mhz) | 3Com 3C503 | 20MB hard drive (standard) | 52.3 | 47.9 | 2011-05-30 | PC DOS 6.1, BUFFERS=30 | 8MB file, standard buffer sizes (TCP 8KB, File 8KB) |
| IBM PS/2 Model 25 (8086@8Mhz) | 3Com 3C503 | 20MB hard drive (standard) | 61.0 | 53.8 | 2011-05-30 | PC DOS 6.1, BUFFERS=30 | 8MB file, max buffer sizes (TCP 16KB, File 32KB) |
| Wang AT Clone (80286@16Mhz) | 3C509B-TPO | IDE | 353 | 388 | (much older code; probably faster now) | ||
| AMD 80386@40Mhz, 128K L2 | NE2000 | IDE | 383 | 546 | 2011-05-30 | PC DOS 5.02, BUFFERS=30 | 32MB file, standard buffer sizes (TCP 8KB, File 8KB) |
| AMD 80386@40Mhz, 128K L2 | NE2000 | IDE | 402 | 585 | 2011-05-30 | PC DOS 5.02, BUFFERS=30 | 32MB file, max buffer sizes (TCP 16KB, File 32KB) |
| Pentium 133 | Linksys 100 (PCI) | Narrow SCSI on Adaptec 2940 | 1917 | 2122 | 2011-05-30 | PC DOS 6.3, BUFFERS=30 | 12MB file, standard buffer sizes (TCP 8KB, File 8KB) |
| Pentium 133 | Linksys 100 (PCI) | Narrow SCSI on Adaptec 2940 | 2714 | 2411 | 2011-05-30 | PC DOS 6.3, BUFFERS=30 | 12MB file, max buffer sizes (TCP 16KB, File 32KB) |
| Speedtest results | ||||||
|---|---|---|---|---|---|---|
| Machine | Adapter | Send Rate (KB/sec) |
Recv Rate (KB/sec) |
Code Date | OS | Notes |
| IBM PCjr (NEC V20@4.77Mhz) | Xircom PE3-10BT | 42.0 | 34.5 | 2011-05-30 | PC DOS 3.3 | 4MB transfer, bi-directional parallel port, no hardware IRQ |
| IBM PCjr (NEC V20@4.77Mhz) | Xircom PE3-10BT | 41.3 | 39.0 | 2011-05-30 | PC DOS 3.3 | 4MB transfer, bi-directional parallel port, IRQ 7 |
| PCjr (4.77 NEC V20) | WD8003 | 108.7 | 110.8 | 2011-05-30 | PC DOS 3.3 | 4MB transfer, ISA card running on a ISA bus adapter |
| PCjr (4.77 NEC V20) | NE1000 | 62.8 | 61.7 | (not tested recently) | ||
| PCjr (4.77 NEC V20) | 3Com 3C503 | 71.7 | 56.1 | (not tested recently) | ||
| IBM PC XT (4.77 8088) | Xircom PE3-10BT | 40.0 | 22.9 | 2011-05-30 | PC DOS 3.3 | 2MB transfer, parallel port set to standard (nibble) mode, IRQ 7 |
| IBM PC XT (4.77 8088) | NE1000 | 57.0 | 61.5 | 2011-05-30 | PC DOS 5.02 | 2MB transfer |
| IBM PC XT (4.77 8088) | 3Com 3C503 | 90.5 | 92.0 | 2011-05-30 | PC DOS 3.3 | 2MB transfer |
| IBM PS/2 Model 25 (8086@8Mhz) | Xircom PE3-10BT | 91.0 | 53.5 | 2011-05-30 | PC DOS 6.1 | 8MB transfer, parallel port set to standard (nibble) mode |
| IBM PS/2 Model 25 (8086@8Mhz) | 3Com 3C503 | 153 | 157 | 2011-05-30 | PC DOS 6.1 | 8MB transfer |
| IBM L40SX (80386SX) | Xircom PE3-10BT | 219 | 120 | 2011-05-30 | PC DOS 6.3 | 8MB transfer |
| AMD 80386@40Mhz, 128K L2 | NE2000 | 683 | 984 | 2011-05-30 | PC DOS 5.02 | 32MB transfer |
| Pentium 133 | LinkSys LNE100 | 4900 | 5913 | 2011-05-30 | PC DOS 6.3 | 32MB transfer |
Some fun observations: