Messages in this thread |  | | | Date | Tue, 01 Dec 2009 18:52:12 +0100 | | From | Eric Dumazet <> | | Subject | Re: seeing strange values for tcp sk_rmem_alloc |
| |
Chris Friesen a écrit :
> I realize this. I sent the data from a socket to itself. It could just > as easily be done with two tcp sockets. The important thing is that I > control both the tx and rx sides, so I know how much data should be > present in the rx queue at any point in time. > > The part that surprised me was that I could send multiple chunks of data > without sk_rmem_alloc changing on the socket to which the data was being > sent. Then it would jump up by a large amount (up to 20K) all at once. > > I'm starting to suspect that the discrepency might have something to do > with the skb_copy_datagram_iovec() call in tcp_data_queue(), and how > skb_set_owner_r() is only called if "eaten" is <= 0. This could be > totally off-base though. >
If you dont read() your socket, then skb_copy_datagram_iovec() is not called
But be careful of sender tcp stack : It might be delayed a bit, because it waits for receiver to open its window (slow start)
You probably need something like
while (1) { send(fd1, buffer, 2Kbytes); sleep(2); // let tcp stack flush its write buffers display_sk_rmem_alloc(fd2); } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |