Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix live-comm: merge TCP socket write-write sequence in a single write
The live protocol implementation is often sending content on TCP sockets in two separate writes. One to send a command header, and the second one sending the command's payload. This was presumably done under the assumption that it would not result in two separate TCP packets being sent on the network (or that it would not matter). Delayed ACK-induced delays were observed [1] on the second write of the "write header, write payload" sequence and result in problematic latency build-ups for live clients connected to moderately/highly active sessions. Fundamentaly, this problem arises due to the combination of Nagle's algorithm and the delayed ACK mechanism which make write-write-read sequences on TCP sockets problematic as near-constant latency is expected when clients can keep-up with the event production rate. In such a write-write-read sequence, the second write is held up until the first write is acknowledged (TCP ACK). The solution implemented by this patch bundles the writes into a single one [2]. [1] https://github.com/tbricks/wireshark-lttng-plugin Basic Wireshark dissector for lttng-live by Anto Smyk from Itiviti [2] https://lists.freebsd.org/pipermail/freebsd-net/2006-January/009527.html Reported-by: Anton Smyk <anton.smyk@itiviti.com> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
- Loading branch information
Showing
1 changed file
with
72 additions
and
55 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters