From patchwork Mon May 14 03:23:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhang Chen X-Patchwork-Id: 912692 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NvpR+7X8"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40kqYc1rN8z9s0q for ; Mon, 14 May 2018 15:50:44 +1000 (AEST) Received: from localhost ([::1]:35420 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fI6Nd-0006Be-Te for incoming@patchwork.ozlabs.org; Mon, 14 May 2018 01:50:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fI6M8-0004LU-Ak for qemu-devel@nongnu.org; Mon, 14 May 2018 01:49:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fI46s-0000eD-Ir for qemu-devel@nongnu.org; Sun, 13 May 2018 23:25:15 -0400 Received: from mail-pl0-x242.google.com ([2607:f8b0:400e:c01::242]:37404) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fI46s-0000da-CV for qemu-devel@nongnu.org; Sun, 13 May 2018 23:25:14 -0400 Received: by mail-pl0-x242.google.com with SMTP id w19-v6so3895300plq.4 for ; Sun, 13 May 2018 20:25:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=l/UMpu2HwkV3Omzpo3jpft43+BYwdzJb/7h+AAtuQ0A=; b=NvpR+7X8oXnF5ccberM8zFXIWCKh5ya2wePXmIF8pcJ+Hhnob3VP9/JeZuXLTRqUx4 XkyCOgTSoUv3+AxSZExzh5RRwGfJnr0fRsZEhyDvE7kl7ADwpr2I4+zGE1WVA6xElrf4 EuGBIY1+jTgm5LfPHsKC+k0AeGUe8HPFsSONrNNpxUj/CcC5u/AvgP9HsBjj7wc/t9Mt 9EPRDYffPKtxismk7e6MTO/rd9PpWa7/4Z0fhxoNjF29ZZ9Cp68R8A6t6jVoYxWKfnbr MEKNV1QjQL8FLnuKx+Re75DPgAWBaRW+YoxtX+4xNSekfyIyju2K09cvL0BakocJ6sXu Gzsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=l/UMpu2HwkV3Omzpo3jpft43+BYwdzJb/7h+AAtuQ0A=; b=WAXzjUbFRfvP5yOjYyn1xwFz93ikI3ceibizsIl0T5Ub3ngClmvhpAozKx7UYTi8gi IsI6UHOg7kjHUSfR41y8lfmTQifjIaXGphxEFIO3h5wAJu6PrJUahNE1cqyXay5AWW2S fZqJmQci9yftt23NmQwVuc0AW2ZXptyr4o1M2VqCcZsDhT0uOB0H5ZhZ3o/qf6n+ZlNZ YAVYw7mVS2aK0nE9b/wEFTow4WSBm+CZSH5WinNP6TvAccv1fq6hh7GBSJ8fsjAjswGG 9gHilXLQ7FKRP3rUSJTr43wt3y6Dh6uc6Rm+ZqnmAqZH+PQHnjAjt6R3c3yAp2NzAAQh +1DQ== X-Gm-Message-State: ALKqPwdLyBkLVJCRc4VH5Zfy8BGK8Df/0+vnJLGJm6OWiSPVH2poSAdi YzKHNSAT1ru7ezXH0ch1D1eMfA== X-Google-Smtp-Source: AB8JxZoWV1O0Ffyi2sV0NuG/0HfFoAwBAN40PKYmYVRcGEP6bg5zRu/LBDQ4PNfz6y8NQWftN9ToMw== X-Received: by 2002:a17:902:28ab:: with SMTP id f40-v6mr8058039plb.208.1526268313229; Sun, 13 May 2018 20:25:13 -0700 (PDT) Received: from localhost.localdomain (109.227.199.104.bc.googleusercontent.com. [104.199.227.109]) by smtp.gmail.com with ESMTPSA id p6-v6sm17183532pfg.157.2018.05.13.20.25.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 13 May 2018 20:25:12 -0700 (PDT) From: Zhang Chen To: qemu-devel@nongnu.org Date: Mon, 14 May 2018 11:23:44 +0800 Message-Id: <1526268228-27951-14-git-send-email-zhangckid@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1526268228-27951-1-git-send-email-zhangckid@gmail.com> References: <1526268228-27951-1-git-send-email-zhangckid@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c01::242 Subject: [Qemu-devel] [PATCH V7 13/17] COLO: flush host dirty ram from cache X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: zhanghailiang , Li Zhijian , Jason Wang , Markus Armbruster , "Dr . David Alan Gilbert" , Zhang Chen , Paolo Bonzini Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: zhanghailiang Don't need to flush all VM's ram from cache, only flush the dirty pages since last checkpoint Signed-off-by: Li Zhijian Signed-off-by: Zhang Chen Signed-off-by: zhanghailiang --- migration/ram.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/migration/ram.c b/migration/ram.c index 4235a8f..21027c5 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2786,6 +2786,7 @@ int colo_init_ram_cache(void) } ram_state = g_new0(RAMState, 1); ram_state->migration_dirty_pages = 0; + memory_global_dirty_log_start(); return 0; @@ -2806,10 +2807,12 @@ void colo_release_ram_cache(void) { RAMBlock *block; + memory_global_dirty_log_stop(); QLIST_FOREACH_RCU(block, &ram_list.blocks, next) { g_free(block->bmap); block->bmap = NULL; } + rcu_read_lock(); QLIST_FOREACH_RCU(block, &ram_list.blocks, next) { if (block->colo_cache) { @@ -3042,6 +3045,15 @@ static void colo_flush_ram_cache(void) void *src_host; unsigned long offset = 0; + memory_global_dirty_log_sync(); + qemu_mutex_lock(&ram_state->bitmap_mutex); + rcu_read_lock(); + RAMBLOCK_FOREACH(block) { + migration_bitmap_sync_range(ram_state, block, 0, block->used_length); + } + rcu_read_unlock(); + qemu_mutex_unlock(&ram_state->bitmap_mutex); + trace_colo_flush_ram_cache_begin(ram_state->migration_dirty_pages); rcu_read_lock(); block = QLIST_FIRST_RCU(&ram_list.blocks);