A question about TCP_QUICKACK, and delayed ack

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Can some one help me with this?

I have a TCP socket created inside the kernel and the service using that socket is sending and receiving data in a single thread fashion (Request/response one by one in a stream). Everything works well except the last part of the application response PDU transfer. A full application PDU is little bit over 32KB. The last packet of the response send by other system (I have no control over this system to change anything) is not a full sized TCP segment. Due to Nagle algorithm, the other system will not send a segment less than MSS unless it receives an ACK from my side (The last packets has a push flag, due to some reason the other side is not honoring the push flag). But my side is doing a delayed ACK! There is around 40ms delay from my side TCP stack to send the delayed ACK. The other side is waiting unnecessarily here for 40ms affecting the data transfer throughput very badly. All the packets expect the last one is transferred less than 2ms while the last one takes around 40ms. The end result is that I can 8MB/s for writes and 700KB/s for reads.

The design of the application is such a way that it can not do concurrent requests/responses. Since it works this way, I like to disable the delayed ACK. Reading few articles about this, I am using the following socket API in kernel to disable the delayed ACK.

int arg=1
s=sock_setsockopt(socket, IPPROTO_TCP, TCP_QUICKACK, (char *)&arg, sizeof(arg));

The call goes through successfully, but i can still see the 40ms delay in the network traces. Pretty much, the quickack is not getting enabled at all.

Thanks in advance,

Aboo



--
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux