Guo-Fu Tseng: Implement and Port Ethernet Drivers for gPXE
Notes: TCP Window Size and RX Csum Offload Benchmark
I've done some benchmark with imgfetch a 500MByte image via HTTP. The test was done by directly connect two computer with a CAT.6 cable:
- Server:
- Processor: Intel® Core™2 Quad CPU Q8400 @ 2.66GHz
- RAM: 8G DDRII-800
- MB Chip: G965 (ICH8)
- NIC: Marvell 88E8056 PCI-E Gigabit Ethernet Controller
- OS: Gentoo (Linux 2.6.33.3)
- HTTP Server: Lighttpd 1.4.26
- Client:
- Processor: AMD Athlon™ 64 Processor 3000+ (1.8HGz)
- RAM: 2G DDR400
- MB Chip: nVidia CK804
- NIC: JMicron JMC250 PCI Express Gigabit Ethernet Controller
- OS: gPXE latest
The RX checksum offload source tree
The following table shows the result of different TCP_MAX_WINDOW_SIZE and with or without RX checksum offloading.
HTTP imgfetch benchmark | ||
---|---|---|
WinSize | Without RX Offload | With RX Offload |
Window Size 1024 byte step | ||
4096 | 136Mbit/s | 136Mbit/s |
5120 | 200Mbit/s | 208Mbit/s |
6114 | 224Mbit/s | 264Mbit/s |
7168 | 264Mbit/s | 288Mbit/s |
8192 | 256Mbit/s | 272Mbit/s |
9216 | 368Mbit/s | 416Mbit/s |
10240 | 368Mbit/s | 400Mbit/s |
11264 | 424Mbit/s | 496Mbit/s |
12288 | 448Mbit/s | 536Mbit/s |
13312 | 496Mbit/s | 616Mbit/s |
14436 | 496Mbit/s | 592Mbit/s |
15360 | 528Mbit/s | 704Mbit/s |
Window Size 2048 byte step | ||
16384 | 528Mbit/s | 696Mbit/s |
18432 | 768Mbit/s | |
20480 | 824Mbit/s | |
22528 | 880Mbit/s | |
24576 | 896Mbit/s | |
Full Speed | ||
32768 | 536Mbit/s | 896Mbit/s |
65532 | 536Mbit/s | 896Mbit/s |