====== 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(r) Core(tm)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(tm) 64 Processor 3000+ (1.8HGz) * RAM: 2G DDR400 * MB Chip: nVidia CK804 * NIC: JMicron JMC250 PCI Express Gigabit Ethernet Controller * OS: gPXE latest [[http://git.etherboot.org/?p=people/cooldavid/gpxe.git;a=shortlog;h=refs/heads/jme_driver_cso|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 |