Hello there:

Upstream TIPC's SOCK_STREAM implementation resembles SOCK_SEQPACKET; indeed, 
tipc_send_packet literally calls tipc_sendstream to do its job! I wonder 
whether the following stream protocol bandwidth issues are by design, or we 
could solve some or all of them:

* Lack of write coalescing usually introduces overhead in form of a small extra 
network frame for each send(2) unless buf_len is divisible by link MTU minus 
headers.
* Fragmentation for SOCK_STREAM writes caused by upper record boundary set to 
TIPC_MAX_USER_MSG_SIZE [1] instead of (link MTU - SHORT_H_SIZE) [2].
* pktmax - INT_H_SIZE in msg.c effectively reduces link MTU by 40 even though 
the accounted space is left unused.

[1] net/tipc/socket.c: send = min_t(size_t, dlen - sent, 
TIPC_MAX_USER_MSG_SIZE);
[2] Drawing a parallel with TCP, which does not preserve record boundaries, 
(link MTU - SHORT_H_SIZE) is equivalent to TCP_MAXSEG, maximum segment size.

P.S. Looks like someone saw the second issue more than a dozen years earlier, 
and his mail somehow slipped below the project's radar.

https://sourceforge.net/p/tipc/mailman/message/7248018/
[tipc-discussion] TIPC SOCK_STREAM performance improvement idea
From: Stephens, Allan <allan.stephens@wi...> - 2006-08-09 18:50:08


_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to