2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-31 14:25:49 +00:00

page-server: Fine grained corking control (v3)

When live migrating a container with large amount of processes
inside the time to do page-server-ed dump may be up to 10 times
slower than for the local dump.

The delay is always introduced in the open_page_server_xfer()
when criu negotiates the has_parent bit on the 2nd task. This
likely happens because of the Nagel algo taking place -- after
the write() of the OPEN2 command happened kernel delays this
command sending waiting for more data.

v2:
Fix this by turning on CORK option on memory transfer sockets
on send side, and NODELAY one once on urgent data. Receive
side is always NODELAY-ed. According to Alexey Kuznetsov this
is the best mode ever for such type of transfers.

v3:
Push packets in pre-dump's check_parent_server_xfer too.

Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Acked-by: Andrew Vagin <avagin@odin.com>

Conflicts:
	include/util.h
	util.c
This commit is contained in:
Pavel Emelyanov
2015-11-10 11:43:00 +03:00
parent 2bf517ed75
commit 505652ef86
3 changed files with 38 additions and 2 deletions

View File

@@ -261,4 +261,6 @@ void split(char *str, char token, char ***out, int *n);
int fd_has_data(int lfd);
void tcp_nodelay(int sk, bool on);
void tcp_cork(int sk, bool on);
#endif /* __CR_UTIL_H__ */