strange packet loss
Joel Reymont
joelr1@REDACTED
Wed Aug 12 01:04:42 CEST 2009
The good sequence of events looks like this. Note tcp_remain and
tcp_deliver (inet_drv.c) after the call to tcp_recv
---
0 -> tcp_inet_commandv tcp_inet_commandv
(0x1006E69B0, 0x7FFF5FBFE890, 0x1004005C0)
0 -> tcp_inet_drv_input tcp_inet_drv_input
(0x1006E69B0, 0xB, 0x100061A64)
0 -> tcp_recv tcp_recv(0x1006E69B0,
0x0, 0x0)
0 -> recvfrom recvfrom(0xB,
0x1006AD470, 0x5B4)
0 <- recvfrom recvfrom = 17
0 1 2 3 4 5 6 7 8 9 a b c d e f
0123456789abcdef
0: 00 03 41 43 4b 7f 00 00 00 00 00 00 00 00 00
00 ..ACK...........
0 -> tcp_remain tcp_remain(0x1006E69B0,
0x7FFF5FBFE74C, 0x5)
0 <- tcp_remain tcp_remain = 144
0 -> tcp_deliver tcp_deliver
(0x1006E69B0, 0x5, 0x3)
0 -> tcp_clear_input tcp_clear_input
(0x1006E69B0, 0x10051BF00, 0x7FFF5FBFE568)
0 <- tcp_clear_input tcp_clear_input = 88
---
The bad sequence of events looks like this:
---
1 -> tcp_inet_commandv tcp_inet_commandv
(0x1025294D8, 0x7FFF5FBFE890, 0x1004005C0)
0 -> tcp_inet_ctl tcp_inet_ctl
(0x1025294D8, 0x7, 0x10029F028)
0 -> tcp_inet_commandv tcp_inet_commandv
(0x1025294D8, 0x7FFF5FBFE890, 0x1004005C0)
0 -> tcp_inet_drv_input tcp_inet_drv_input
(0x1025294D8, 0x25C, 0x100061A64)
0 -> tcp_recv tcp_recv(0x1025294D8,
0x0, 0x0)
0 -> recvfrom recvfrom(0x25C,
0x1006AD491, 0x4124)
0 <- recvfrom recvfrom = 17
0 1 2 3 4 5 6 7 8 9 a b c d e f
0123456789abcdef
0: 00 03 41 43 4b 76 65 6e 74 73 22 2c 22 65 76
65 ..ACKvents","eve
0 <- tcp_recv tcp_recv = 198
0 <- tcp_inet_drv_input tcp_inet_drv_input = 132
---
I'm still investigating but it looks like the TCP driver wants to read
more data into the buffer, as opposed to deliver the 3 bytes received.
---
Mac hacker with a performance bent
http://www.linkedin.com/in/joelreymont
More information about the erlang-questions
mailing list