• Pavel Emelyanov's avatar
    page-server: Fine grained corking control (v3) · a20ed3c6
    Pavel Emelyanov authored
    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: 's avatarPavel Emelyanov <xemul@parallels.com>
    Acked-by: 's avatarAndrew Vagin <avagin@odin.com>
    a20ed3c6
page-xfer.c 17.6 KB