From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fT2zJ-0002Gm-7X for qemu-devel@nongnu.org; Wed, 13 Jun 2018 06:26:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fT2zI-0000wi-6O for qemu-devel@nongnu.org; Wed, 13 Jun 2018 06:26:49 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:41690 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fT2zI-0000vy-1P for qemu-devel@nongnu.org; Wed, 13 Jun 2018 06:26:48 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A067B4022414 for ; Wed, 13 Jun 2018 10:26:47 +0000 (UTC) From: "Dr. David Alan Gilbert (git)" Date: Wed, 13 Jun 2018 11:26:42 +0100 Message-Id: <20180613102642.23995-4-dgilbert@redhat.com> In-Reply-To: <20180613102642.23995-1-dgilbert@redhat.com> References: <20180613102642.23995-1-dgilbert@redhat.com> Subject: [Qemu-devel] [PATCH 3/3] migration/postcopy: Wake rate limit sleep on postcopy request List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, quintela@redhat.com, peterx@redhat.com Cc: jdenemar@redhat.com From: "Dr. David Alan Gilbert" Use the 'urgent request' mechanism added in the previous patch for entries added to the postcopy request queue for RAM. Ignore the rate limiting while we have requests. Signed-off-by: Dr. David Alan Gilbert --- migration/ram.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/migration/ram.c b/migration/ram.c index e0d19305ee..d88400d99f 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1538,6 +1538,7 @@ static RAMBlock *unqueue_page(RAMState *rs, ram_addr_t *offset) memory_region_unref(block->mr); QSIMPLEQ_REMOVE_HEAD(&rs->src_page_requests, next_req); g_free(entry); + migration_consume_urgent_request(); } } qemu_mutex_unlock(&rs->src_page_req_mutex); @@ -1686,6 +1687,7 @@ int ram_save_queue_pages(const char *rbname, ram_addr_t start, ram_addr_t len) memory_region_ref(ramblock->mr); qemu_mutex_lock(&rs->src_page_req_mutex); QSIMPLEQ_INSERT_TAIL(&rs->src_page_requests, new_entry, next_req); + migration_make_urgent_request(); qemu_mutex_unlock(&rs->src_page_req_mutex); rcu_read_unlock(); @@ -2634,9 +2636,14 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) t0 = qemu_clock_get_ns(QEMU_CLOCK_REALTIME); i = 0; - while ((ret = qemu_file_rate_limit(f)) == 0) { + while ((ret = qemu_file_rate_limit(f)) == 0 || + !QSIMPLEQ_EMPTY(&rs->src_page_requests)) { int pages; + if (qemu_file_get_error(f)) { + break; + } + pages = ram_find_and_save_block(rs, false); /* no more pages to sent */ if (pages == 0) { -- 2.17.1