Differences
This shows you the differences between two versions of the page.
soc:2010:cooldavid:journal:week0 [2010/05/26 08:56] cooldavid created |
soc:2010:cooldavid:journal:week0 [2010/05/26 10:10] (current) cooldavid |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | === Before Apr. 22th === | + | === Week 0: TCP performance test and tunning === |
- | == Debug boot crash problem == | + | === May 13th to May 23th === |
- | I had problem for boot gPXE with my testing computer. | + | * Implement TCP receive queue |
- | It keeps reboot(crash) right after gPXE relocats itself | + | * Implement TCP SACK [RFC 2018] |
- | to high memory location. | + | * Implement TCP Window Scale [RFC 1323] |
- | I've traced partial codes of ''src/arch/i386/prefix/*prefix.S'' | + | The test results can be found at these notes: |
- | And dumped the e820 memory maps as stefanha suggestes. | + | * [[soc:2010:cooldavid:notes:tcpoorxtest|TCP out-of-order receive dstat test logs]] |
- | The addresses all looks normal, no overlapps, and the gPXE loading | + | * [[soc:2010:cooldavid:notes:bkobench|Benchmarks for downloading image from boot.kernel.org]] |
- | address seems reasonable. | + | |
- | == Dumped message == | + | == Found TCP FIN ACK number issue == |
- | <code> | + | Upper layer protocols stop the TCP xfer by calling tcp_xfer_close(). |
- | NVIDIA Boot Agent 215.0503 | + | |
- | Copyright (C) 2001-2005 NVIDIA Corporation | + | |
- | Copyright (C) 1997-2000 Intel Corporation | + | |
- | CLIENT MAC ADDR: 00 15 F2 3A BE 48 GUID: 00501D51-548A-0D10-A3D8-AB7EEAB94556 | + | If the call path is: |
- | CLIENT IP: 192.168.201.208 MASK: 255.255.255.0 DHCP IP: 192.168.201.186 | + | tcp_rx()->tcp_rx_data()->...Upper layer...->tcp_xfer_close(). |
- | GATEWAY IP: 192.168.201.186 | + | |
- | PXE->EB: !PXE at 99AB:0080, entry point at 99AB:0E57 | + | |
- | UNDI code segment 99AB:5BD3, data segment 98B3:0F80 (610-638kB) | + | |
- | UNDI device is PCI 00:0A.0, type DIX+802.3 | + | |
- | 610kB free base memory after PXE unload | + | |
- | Fetching system memory map | + | |
- | FBMS base memory size 596 kB [0,95000) | + | |
- | INT 15,e801 extended memory size 15360+64*32511=2096064 kB [100000,7fff0000) | + | |
- | INT 15,e820 region [0,9f800) type 1 | + | |
- | INT 15,e820 region [f0000,100000) type 2 | + | |
- | INT 15,e820 region [fec00000,100000000) type 2 | + | |
- | INT 15,e820 region [e0000000,f0000000) type 2 | + | |
- | INT 15,e820 region [7fff3000,80000000) type 3 | + | |
- | INT 15,e820 region [7fff0000,7fff3000) type 4 | + | |
- | INT 15,e820 region [9f800,a0000) type 2 | + | |
- | INT 15,e820 region [100000,7fff0000) type 1 | + | |
- | Relocate: currently at [400000,435c98) | + | |
- | ...need 35ca7 bytes for 16-byte alignment | + | |
- | Considering [0,9f800) | + | |
- | ...usable portion is [0,9f800) | + | |
- | Considering [100000,7fff0000) | + | |
- | ...end truncated to 7ff00000 (avoid ending in odd megabyte) | + | |
- | ...usable portion is [100000,7ff00000) | + | |
- | ...new best block found. | + | |
- | Relocating from [400000,435c98) to [7feca360,7feffff8) | + | |
- | </code> | + | |
- | == Solved with cleaning pin connectors == | + | Which is at lease happened in HTTP while received expected |
- | After about a week's struggle, I removed all DIMMs and | + | length of data. |
- | add-on cards, and cleaned all pin connectors. Fount that | + | |
- | it boots fine without any software patch. | + | |
+ | Sending FIN in tcp_xfer_close() in this case, will cause error ACK | ||
+ | number, since the ACK number have not updated by that time. | ||
+ | Later trying to send a correct one in tcp_rx() will fail too, due | ||
+ | to the TCP state already changed. | ||
+ | This patch let the TCP stack send FIN in normal tcp_rx() flow if the | ||
+ | packet contains the last data of the session. | ||
+ | |||
+ | * [[http://git.etherboot.org/?p=people/cooldavid/gpxe.git;a=commitdiff;h=d3661b67b1fa15c17b855b7e5cad47c1391835be|The git commit of my fix]] | ||
+ | * [[https://git.ipxe.org/ipxe.git/commitdiff/9ff822969300a086ad13036c019aa981336017ed|mcb30's patch]] |