From nobody Sun May 5 03:02:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=samsung.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520953199142587.9357523467689; Tue, 13 Mar 2018 07:59:59 -0700 (PDT) Received: from localhost ([::1]:40349 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlPC-00009h-7L for importer@patchew.org; Tue, 13 Mar 2018 10:59:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59117) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlJU-0003MO-LS for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlJR-0001LU-Hg for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:04 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:57435) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlJR-0001Kp-44 for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:01 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180313145358euoutp029b850474585581809d4bafebdb8ac75d~bgoxo85Gk0476304763euoutp02t; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180313145358eucas1p1b9cecf11e7e5f405d27b4945d67fdde4~bgoxH0PEk1955919559eucas1p1D; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 9C.1E.17380.506E7AA5; Tue, 13 Mar 2018 14:53:57 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145357eucas1p2c2a3b0e5b9e652afc388aa4df4010a0f~bgowcx0rP0553805538eucas1p2_; Tue, 13 Mar 2018 14:53:57 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 1F.08.04178.506E7AA5; Tue, 13 Mar 2018 14:53:57 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P5J00AR2APOJ400@eusync3.samsung.com>; Tue, 13 Mar 2018 14:53:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180313145358euoutp029b850474585581809d4bafebdb8ac75d~bgoxo85Gk0476304763euoutp02t DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1520952838; bh=+e0fxGQr4VQDdCKKmux7bbWDdeUp7O19687NNuSgAVA=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=UqezJEbrzM1XbGdjWAV7SMVFaNikUUJH3gJsOZ0cIG2fBrEQ0aOq6RmW0P1FF/Nxv rTZelsOOPM99aYaVxasD1QIIoTKCgBDJIC3GaW3KJtJYYlPCInuEPQTAU+1cscxRhD Hins2Ee04J0gbSDSmC+h432pQhH1f8a0syHZlLhI= X-AuditID: cbfec7f4-6f9ff700000043e4-1d-5aa7e6055941 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Tue, 13 Mar 2018 17:53:39 +0300 Message-id: <1520952824-3172-2-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djP87qsz5ZHGZy+ZW4x9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK2Pj3CnsBXOEK1a/2cTSwPiBv4uRk0NCwESicflzFhBb SGAFo8S/9yZdjFxA9mdGiWlbm5hhin4v+M4IkVjGKLG8YxuU080ksWrdHtYuRg4ONgEDiX33 bEFMEQE9iQlXI0FKmAU2MkrsvPMebIOwgJfEnxN/2UBsFgFViStn7oLFeQXcJDqO/WGCWCYn cfNcJzPIHE4Bd4kVXSUgcyQEetgkXj/fwgpR4yKxpukzVL2wxKvjW9ghbBmJzo6DTBAN7YwS dzdeZYVwJjBKrJt8DOode4lTN6+CdTML8ElM2jYdbJuEAK9ER5sQRImHxN4fvSwQtqNEb/8+ VoiHZzFK3GiZzjyBUWoBI8MqRvHU0uLc9NRio7zUcr3ixNzi0rx0veT83E2MwAg9/e/4lx2M u/4kHWIU4GBU4uFdcXZ5lBBrYllxZe4hRgkOZiUR3pwHQCHelMTKqtSi/Pii0pzU4kOM0hws SuK8cRp1UUIC6YklqdmpqQWpRTBZJg5OqQZGl90SNo8uVs2y93117uCq+9uzfdY5PJLZYiV0 Qehi4+uVNYJ2DWZyba1/Fy/vv3xvzUPL+DsrSxMuTj/0qIJh/prahnfSU7enNC/fUffjtsY7 2b4rKi02JoZvLrrv7bSJPyssVautovr8+/q/SXxNFvuXzmjNLhD9ZNQerNjt8ObfrONfUxel KbEUZyQaajEXFScCAMsjRnnMAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupiluLIzCtJLcpLzFFi42I5/e/4VV3WZ8ujDH7M57WYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlbFx7hT2gjnCFavfbGJpYPzA38XIySEhYCLxe8F3xi5G Lg4hgSWMEjufnGGBcHqZJCauewfkcHCwCRhI7LtnC2KKCOhJTLgaCVLCLLCRUeLXjLusIIOE Bbwk/pz4ywZiswioSlw5c5cFxOYVcJPoOPaHCWKZnMTNc53MIHM4BdwlVnSVgISFgEp2zvrL PoGRZwEjwypGkdTS4tz03GJDveLE3OLSvHS95PzcTYzAENp27OfmHYyXNgYfYhTgYFTi4V1x dnmUEGtiWXFl7iFGCQ5mJRHenAdAId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rznDSqjhATSE0tS s1NTC1KLYLJMHJxSDYzKeoI6Muzv4+YnrPrM2254vDhQOP3VY+3ABK9d/6yffr964L5BqcTe kiheM9UzN/cbWX4JPsipMn+V35/USHE7WV7bhYGiSvpB3S9Ybri8dmPl/t5loSzVruiRVP59 60c/joVFc14fn2XMXDjpxaPGo62RndtKNlyTForgzOmY+/jbhc017kosxRmJhlrMRcWJAGbI JNMdAgAA X-CMS-MailID: 20180313145357eucas1p2c2a3b0e5b9e652afc388aa4df4010a0f X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180313145357eucas1p2c2a3b0e5b9e652afc388aa4df4010a0f X-RootMTR: 20180313145357eucas1p2c2a3b0e5b9e652afc388aa4df4010a0f References: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v1 1/6] migration: introduce postcopy-blocktime capability 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: lvivier@redhat.com, v.kuramshin@samsung.com, quintela@redhat.com, ash.billore@samsung.com, Alexey Perevalov , peterx@redhat.com, f4bug@amsat.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Right now it could be used on destination side to enable vCPU blocktime calculation for postcopy live migration. vCPU blocktime - it's time since vCPU thread was put into interruptible sleep, till memory page was copied and thread awake. Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- migration/migration.c | 9 +++++++++ migration/migration.h | 1 + qapi/migration.json | 6 +++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/migration/migration.c b/migration/migration.c index e345d0c..0ee9c1f 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1527,6 +1527,15 @@ bool migrate_zero_blocks(void) return s->enabled_capabilities[MIGRATION_CAPABILITY_ZERO_BLOCKS]; } =20 +bool migrate_postcopy_blocktime(void) +{ + MigrationState *s; + + s =3D migrate_get_current(); + + return s->enabled_capabilities[MIGRATION_CAPABILITY_POSTCOPY_BLOCKTIME= ]; +} + bool migrate_use_compression(void) { MigrationState *s; diff --git a/migration/migration.h b/migration/migration.h index 08c5d2d..aa7a884 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -225,6 +225,7 @@ int migrate_compress_level(void); int migrate_compress_threads(void); int migrate_decompress_threads(void); bool migrate_use_events(void); +bool migrate_postcopy_blocktime(void); =20 /* Sending on the return path - generic and then for each message type */ void migrate_send_rp_shut(MigrationIncomingState *mis, diff --git a/qapi/migration.json b/qapi/migration.json index 7f465a1..676ef06 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -354,12 +354,16 @@ # # @x-multifd: Use more than one fd for migration (since 2.11) # +# @postcopy-blocktime: Calculate downtime for postcopy live migration +# (since 2.12) +# # Since: 1.2 ## { 'enum': 'MigrationCapability', 'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks', 'compress', 'events', 'postcopy-ram', 'x-colo', 'release-ram', - 'block', 'return-path', 'pause-before-switchover', 'x-multifd' = ] } + 'block', 'return-path', 'pause-before-switchover', 'x-multifd', + 'postcopy-blocktime' ] } =20 ## # @MigrationCapabilityStatus: --=20 2.7.4 From nobody Sun May 5 03:02:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=samsung.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520953112807776.0489542197477; Tue, 13 Mar 2018 07:58:32 -0700 (PDT) Received: from localhost ([::1]:40338 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlNo-0007Gl-0U for importer@patchew.org; Tue, 13 Mar 2018 10:58:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlJV-0003Mw-8s for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlJR-0001Lm-Q5 for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:05 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:45213) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlJR-0001LF-GP for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:01 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20180313145359euoutp016054ae93471c1faed26b560e85c26cb8~bgoytaLiO1996919969euoutp01b; Tue, 13 Mar 2018 14:53:59 +0000 (GMT) Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145358eucas1p23a9b9c1f1cbea5a4de5c65b3e22ba344~bgoxxBW5i2044720447eucas1p2C; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 4E.8D.10409.606E7AA5; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145358eucas1p24595ea6cba76b169ffbaa9bf1a90e964~bgoxC0gyz1638116381eucas1p2q; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id D7.3C.04183.506E7AA5; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P5J00AR2APOJ400@eusync3.samsung.com>; Tue, 13 Mar 2018 14:53:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180313145359euoutp016054ae93471c1faed26b560e85c26cb8~bgoytaLiO1996919969euoutp01b DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1520952839; bh=MmPq2VuWta5WPyGO7fGT3WYQotzvFhwU1KDKpqhVmUM=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=FYRXrRnRaEWr272aEjzX3BxK/EZpO2qp1EGpr1rymMWu5yn4iUom4uWjZsV9uh/4F MBZOep42h6wh9Hr5IRCLV3w4vOWjUBaK3dUoZDsNcxNqU1AbogDBtb8xhK8McaR6is lb0t8tEX+hz+jaQvfKBy7Ta9Eo/XpXAKoZs+iFPA= X-AuditID: cbfec7f5-b5fff700000028a9-7e-5aa7e606d881 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Tue, 13 Mar 2018 17:53:40 +0300 Message-id: <1520952824-3172-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsWy7djP87psz5ZHGcyYL2cx9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK2PXjDb2gsUaFa9/X2ZsYNym0MXIySEhYCIxaeoG1i5G Lg4hgRWMEt/2XWSCcD4zSkx7MJcFpmrCvW3sEIlljBIX+t6wQDjdTBKr1u0B6ufgYBMwkNh3 zxbEFBHQk5hwNRKkhFlgI6PEzjvvwQYJC0RLvDswjRXEZhFQlbix6yk7iM0r4CZxaMVpVohl chI3z3Uyg8zhFHCXWNFVAjJHQqCHTWLltDtQNS4S/2Z/Y4ewhSVeHd8CZctIXJ7czQLR0M4o cXfjVVYIZwKjxLrJx5ghquwlTt28ygRiMwvwSUzaNh1sm4QAr0RHmxBEiYfE3etvoZY5Spx+ f58Z4uFZjBIHts9kmcAotYCRYRWjeGppcW56arFxXmq5XnFibnFpXrpecn7uJkZgjJ7+d/zr DsZ9f5IOMQpwMCrx8DJcWB4lxJpYVlyZe4hRgoNZSYQ35wFQiDclsbIqtSg/vqg0J7X4EKM0 B4uSOG+cRl2UkEB6YklqdmpqQWoRTJaJg1OqgXG99tH0NDOzOZctKp8xOk5f+lbu/r8P71/e 1OQ8GB6zq/JY3Ab3lZl5z/PaZv978y3/bejG6cG/V+81nT3PwkDz1kNzXUPfEzeO80p97X9l 2hr4m/G6bYgUQ/BtU8bOjM61G1VV5utO/Hh/6s8i3SsPv7NLdC387Xh/mv/TE9MkOKyazrxS ylFRYinOSDTUYi4qTgQAdklc7s0CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkluLIzCtJLcpLzFFi42I5/e/4VV22Z8ujDBpKLebePc9isXLyEiaL 3m332C1ObDrIbPGpQcpiy/5v7BbHe3ewWNzZ0sdkcfrmZnYHTo8DLxayezy5tpnJ4/2+q2we fVtWMQawRHHZpKTmZJalFunbJXBl7JrRxl6wWKPi9e/LjA2M2xS6GDk5JARMJCbc28bexcjF ISSwhFHi1t+7UE4vk8TEde9Yuhg5ONgEDCT23bMFMUUE9CQmXI0EKWEW2Mgo8WvGXVaQQcIC 0RLvDkwDs1kEVCVu7HrKDmLzCrhJHFpxmhVimZzEzXOdzCBzOAXcJVZ0lYCEhYBKds76yz6B kWcBI8MqRpHU0uLc9NxiI73ixNzi0rx0veT83E2MwADaduznlh2MXe+CDzEKcDAq8fAyXFge JcSaWFZcmXuIUYKDWUmEN+cBUIg3JbGyKrUoP76oNCe1+BCjNAeLkjjveYPKKCGB9MSS1OzU 1ILUIpgsEwenVAMj00L9ORv6elc9kDdcs9B506prq3az7tD5+KaI1/ktm6jH2ZSIy8ldim71 U7R9s7ftNGGSep1U/+rVqh15YhJ5NRl25e5fw9PXHNaqlHTNU2zU9T39o+C/PDtjXuf/ymhe D0sZnsuSJlxCjFGvnTrfPbzz5kx0cONtFgNRzb33ilcIaq6T/qrEUpyRaKjFXFScCABnmlXO HAIAAA== X-CMS-MailID: 20180313145358eucas1p24595ea6cba76b169ffbaa9bf1a90e964 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180313145358eucas1p24595ea6cba76b169ffbaa9bf1a90e964 X-RootMTR: 20180313145358eucas1p24595ea6cba76b169ffbaa9bf1a90e964 References: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 210.118.77.11 Subject: [Qemu-devel] [PATCH v1 2/6] migration: add postcopy blocktime ctx into MigrationIncomingState 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: lvivier@redhat.com, v.kuramshin@samsung.com, quintela@redhat.com, ash.billore@samsung.com, Alexey Perevalov , peterx@redhat.com, f4bug@amsat.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch adds request to kernel space for UFFD_FEATURE_THREAD_ID, in case this feature is provided by kernel. PostcopyBlocktimeContext is encapsulated inside postcopy-ram.c, due to it being a postcopy-only feature. Also it defines PostcopyBlocktimeContext's instance live time. Information from PostcopyBlocktimeContext instance will be provided much after postcopy migration end, instance of PostcopyBlocktimeContext will live till QEMU exit, but part of it (vcpu_addr, page_fault_vcpu_time) used only during calculation, will be released when postcopy ended or failed. To enable postcopy blocktime calculation on destination, need to request proper compatibility (Patch for documentation will be at the tail of the patch set). As an example following command enable that capability, assume QEMU was started with -chardev socket,id=3Dcharmonitor,path=3D/var/lib/migrate-vm-monitor.sock option to control it [root@host]#printf "{\"execute\" : \"qmp_capabilities\"}\r\n \ {\"execute\": \"migrate-set-capabilities\" , \"arguments\": { \"capabilities\": [ { \"capability\": \"postcopy-blocktime\", \"state\": true } ] } }" | nc -U /var/lib/migrate-vm-monitor.sock Or just with HMP (qemu) migrate_set_capability postcopy-blocktime on Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- migration/migration.h | 8 +++++++ migration/postcopy-ram.c | 61 ++++++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 69 insertions(+) diff --git a/migration/migration.h b/migration/migration.h index aa7a884..3ead619 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -22,6 +22,8 @@ #include "hw/qdev.h" #include "io/channel.h" =20 +struct PostcopyBlocktimeContext; + /* State for the incoming migration */ struct MigrationIncomingState { QEMUFile *from_src_file; @@ -61,6 +63,12 @@ struct MigrationIncomingState { /* The coroutine we should enter (back) after failover */ Coroutine *migration_incoming_co; QemuSemaphore colo_incoming_sem; + + /* + * PostcopyBlocktimeContext to keep information for postcopy + * live migration, to calculate vCPU block time + * */ + struct PostcopyBlocktimeContext *blocktime_ctx; }; =20 MigrationIncomingState *migration_incoming_get_current(void); diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 032abfb..9144102 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -61,6 +61,54 @@ struct PostcopyDiscardState { #include #include =20 +typedef struct PostcopyBlocktimeContext { + /* time when page fault initiated per vCPU */ + uint32_t *page_fault_vcpu_time; + /* page address per vCPU */ + uintptr_t *vcpu_addr; + uint32_t total_blocktime; + /* blocktime per vCPU */ + uint32_t *vcpu_blocktime; + /* point in time when last page fault was initiated */ + uint32_t last_begin; + /* number of vCPU are suspended */ + int smp_cpus_down; + uint64_t start_time; + + /* + * Handler for exit event, necessary for + * releasing whole blocktime_ctx + */ + Notifier exit_notifier; +} PostcopyBlocktimeContext; + +static void destroy_blocktime_context(struct PostcopyBlocktimeContext *ctx) +{ + g_free(ctx->page_fault_vcpu_time); + g_free(ctx->vcpu_addr); + g_free(ctx->vcpu_blocktime); + g_free(ctx); +} + +static void migration_exit_cb(Notifier *n, void *data) +{ + PostcopyBlocktimeContext *ctx =3D container_of(n, PostcopyBlocktimeCon= text, + exit_notifier); + destroy_blocktime_context(ctx); +} + +static struct PostcopyBlocktimeContext *blocktime_context_new(void) +{ + PostcopyBlocktimeContext *ctx =3D g_new0(PostcopyBlocktimeContext, 1); + ctx->page_fault_vcpu_time =3D g_new0(uint32_t, smp_cpus); + ctx->vcpu_addr =3D g_new0(uintptr_t, smp_cpus); + ctx->vcpu_blocktime =3D g_new0(uint32_t, smp_cpus); + + ctx->exit_notifier.notify =3D migration_exit_cb; + ctx->start_time =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + qemu_add_exit_notifier(&ctx->exit_notifier); + return ctx; +} =20 /** * receive_ufd_features: check userfault fd features, to request only supp= orted @@ -153,6 +201,19 @@ static bool ufd_check_and_apply(int ufd, MigrationInco= mingState *mis) } } =20 +#ifdef UFFD_FEATURE_THREAD_ID + if (migrate_postcopy_blocktime() && mis && + UFFD_FEATURE_THREAD_ID & supported_features) { + /* kernel supports that feature */ + /* don't create blocktime_context if it exists */ + if (!mis->blocktime_ctx) { + mis->blocktime_ctx =3D blocktime_context_new(); + } + + asked_features |=3D UFFD_FEATURE_THREAD_ID; + } +#endif + /* * request features, even if asked_features is 0, due to * kernel expects UFFD_API before UFFDIO_REGISTER, per --=20 2.7.4 From nobody Sun May 5 03:02:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=samsung.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520953230441312.7517448072243; Tue, 13 Mar 2018 08:00:30 -0700 (PDT) Received: from localhost ([::1]:40352 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlPh-0000i1-Mj for importer@patchew.org; Tue, 13 Mar 2018 11:00:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59133) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlJV-0003Mx-8z for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlJS-0001MI-Nf for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:05 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:45221) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlJS-0001Lq-Ej for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:02 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20180313145400euoutp017d0a9b2b109f951ef75df498b7c587ae~bgozqf6m_1996919969euoutp01c; Tue, 13 Mar 2018 14:54:00 +0000 (GMT) Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180313145359eucas1p10e56d30700f075beb38855c70890ad53~bgoyq3iSq0258402584eucas1p1Y; Tue, 13 Mar 2018 14:53:59 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id DE.1E.17380.706E7AA5; Tue, 13 Mar 2018 14:53:59 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145358eucas1p295b153bb8ec4760668449dbc80613cf4~bgoxznAj70541305413eucas1p2k; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 98.3C.04183.606E7AA5; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P5J00AR2APOJ400@eusync3.samsung.com>; Tue, 13 Mar 2018 14:53:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180313145400euoutp017d0a9b2b109f951ef75df498b7c587ae~bgozqf6m_1996919969euoutp01c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1520952840; bh=R1Zbs4NFUpGLO8GxJB1Y2eyw9DHw4uWjvccup+m+1Ek=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=bFZUl9vliFqcLWlihfb3HifcbGYR72tF0lj0lNK22+6+0WvgcTjHqygSB3gQT0y8C l6LIaXdUKPc3iiAsNRlX2Sw4k/VzLl0zQqxITuQuGL0hzPaC3wE0vRcUi4usUFMRLr ykrfWne9jqh+zOQth8x2JshJTY0Zn2+T0dC1pOR0= X-AuditID: cbfec7f4-6f9ff700000043e4-27-5aa7e6076fac From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Tue, 13 Mar 2018 17:53:41 +0300 Message-id: <1520952824-3172-4-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djPc7rsz5ZHGax7o2Qx9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK+PP/edMBWu9K/6cnsHWwPjVoouRk0NCwETi/5NLLF2M XBxCAisYJTaePcsE4XxmlFizrY8Npur81V1MILaQwDJGiQl3XSCKupkkrp2+xtzFyMHBJmAg se+eLYgpIqAnMeFqJEgJs8BGRomdd96zgPQKC7hL/P82G8xmEVCV2PxoKdhMXgE3iZtPPzBD 7JKTuHmuE2wkJ1D9iq4SkDkSAhPYJLb9uscOUeMisfv+BKjbhCVeHd8CFZeRuDy5mwWioZ1R 4u7Gq6xQ3YwS6yYfg9pgL3Hq5lWwzcwCfBKTtk0H2yYhwCvR0SYEUeIh8XfqCUYI21Fi+fy3 0CCaxSjx5tNz1gmMUgsYGVYxiqeWFuempxYb5aWW6xUn5haX5qXrJefnbmIERujpf8e/7GDc 9SfpEKMAB6MSD++Ks8ujhFgTy4orcw8xSnAwK4nw5jwACvGmJFZWpRblxxeV5qQWH2KU5mBR EueN06iLEhJITyxJzU5NLUgtgskycXBKNTCufbp4xpztHva7dvDyzuhvnjt/6kS1pTWpeS15 lkZXn4aUp/00W8Y7odfhSi7b9OhL3vmf2Q1DDkXee3Vhh6zV06h4tSWcPk+vXJ68Z4v4xTUH 5fO42Qu3arJxSChzKxzjipiSb537bddZ/ppZli/vPHFuuX/6evnGzTt2PrxzcLtH795Hbinz lViKMxINtZiLihMBseJ7bswCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupiluLIzCtJLcpLzFFi42I5/e/4VV22Z8ujDLZ/NbKYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlfHn/nOmgrXeFX9Oz2BrYPxq0cXIySEhYCJx/uoupi5G Lg4hgSWMEu9W90M5vUwSszq2MHYxcnCwCRhI7LtnC2KKCOhJTLgaCVLCLLCRUeLXjLusIIOE Bdwl/n+bzQJiswioSmx+tJQJxOYVcJO4+fQDM8QyOYmb5zqZQeZwAtWv6CoBCQsBleyc9Zd9 AiPPAkaGVYwiqaXFuem5xUZ6xYm5xaV56XrJ+bmbGIEhtO3Yzy07GLveBR9iFOBgVOLhZbiw PEqINbGsuDL3EKMEB7OSCG/OA6AQb0piZVVqUX58UWlOavEhRmkOFiVx3vMGlVFCAumJJanZ qakFqUUwWSYOTqkGxtUXp5v4i8T59Z322v7gudfMi8Jp6ffyAhrMDObt33nIhOVa7vRT6aXR k/anmXiujSxrSBOqncT193XyvTluEWaS0zpbFYQ5z2Ss/NP4ZeNE98S4/Ymvr++5dMLyV+Xa Lsm2Xctmle6btKvl2/M9G7/8t9u/ckLgtaTDDg4vfJdqPm79NZvv1nYlluKMREMt5qLiRAAy IuywHQIAAA== X-CMS-MailID: 20180313145358eucas1p295b153bb8ec4760668449dbc80613cf4 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180313145358eucas1p295b153bb8ec4760668449dbc80613cf4 X-RootMTR: 20180313145358eucas1p295b153bb8ec4760668449dbc80613cf4 References: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 210.118.77.11 Subject: [Qemu-devel] [PATCH v1 3/6] migration: calculate vCPU blocktime on dst side 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: lvivier@redhat.com, v.kuramshin@samsung.com, quintela@redhat.com, ash.billore@samsung.com, Alexey Perevalov , peterx@redhat.com, f4bug@amsat.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch provides blocktime calculation per vCPU, as a summary and as a overlapped value for all vCPUs. This approach was suggested by Peter Xu, as an improvements of previous approch where QEMU kept tree with faulted page address and cpus bi= tmask in it. Now QEMU is keeping array with faulted page address as value and vCPU as index. It helps to find proper vCPU at UFFD_COPY time. Also it keeps list for blocktime per vCPU (could be traced with page_fault_addr) Blocktime will not calculated if postcopy_blocktime field of MigrationIncomingState wasn't initialized. Signed-off-by: Alexey Perevalov Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- migration/postcopy-ram.c | 149 +++++++++++++++++++++++++++++++++++++++++++= +++- migration/trace-events | 5 +- 2 files changed, 152 insertions(+), 2 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 9144102..9e51e84 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -546,6 +546,148 @@ static int ram_block_enable_notify(const char *block_= name, void *host_addr, return 0; } =20 +static int get_mem_fault_cpu_index(uint32_t pid) +{ + CPUState *cpu_iter; + + CPU_FOREACH(cpu_iter) { + if (cpu_iter->thread_id =3D=3D pid) { + trace_get_mem_fault_cpu_index(cpu_iter->cpu_index, pid); + return cpu_iter->cpu_index; + } + } + trace_get_mem_fault_cpu_index(-1, pid); + return -1; +} + +static uint32_t get_low_time_offset(PostcopyBlocktimeContext *dc) +{ + int64_t start_time_offset =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME) - + dc->start_time; + return start_time_offset < 1 ? 1 : start_time_offset & UINT32_MAX; +} + +/* + * This function is being called when pagefault occurs. It + * tracks down vCPU blocking time. + * + * @addr: faulted host virtual address + * @ptid: faulted process thread id + * @rb: ramblock appropriate to addr + */ +static void mark_postcopy_blocktime_begin(uintptr_t addr, uint32_t ptid, + RAMBlock *rb) +{ + int cpu, already_received; + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *dc =3D mis->blocktime_ctx; + uint32_t low_time_offset; + + if (!dc || ptid =3D=3D 0) { + return; + } + cpu =3D get_mem_fault_cpu_index(ptid); + if (cpu < 0) { + return; + } + + low_time_offset =3D get_low_time_offset(dc); + if (dc->vcpu_addr[cpu] =3D=3D 0) { + atomic_inc(&dc->smp_cpus_down); + } + + atomic_xchg(&dc->last_begin, low_time_offset); + atomic_xchg(&dc->page_fault_vcpu_time[cpu], low_time_offset); + atomic_xchg(&dc->vcpu_addr[cpu], addr); + + /* check it here, not at the begining of the function, + * due to, check could accur early than bitmap_set in + * qemu_ufd_copy_ioctl */ + already_received =3D ramblock_recv_bitmap_test(rb, (void *)addr); + if (already_received) { + atomic_xchg__nocheck(&dc->vcpu_addr[cpu], 0); + atomic_xchg__nocheck(&dc->page_fault_vcpu_time[cpu], 0); + atomic_dec(&dc->smp_cpus_down); + } + trace_mark_postcopy_blocktime_begin(addr, dc, dc->page_fault_vcpu_time= [cpu], + cpu, already_received); +} + +/* + * This function just provide calculated blocktime per cpu and trace it. + * Total blocktime is calculated in mark_postcopy_blocktime_end. + * + * + * Assume we have 3 CPU + * + * S1 E1 S1 E1 + * -----***********------------xxx***************------------------------>= CPU1 + * + * S2 E2 + * ------------****************xxx--------------------------------------->= CPU2 + * + * S3 E3 + * ------------------------****xxx********------------------------------->= CPU3 + * + * We have sequence S1,S2,E1,S3,S1,E2,E3,E1 + * S2,E1 - doesn't match condition due to sequence S1,S2,E1 doesn't includ= e CPU3 + * S3,S1,E2 - sequence includes all CPUs, in this case overlap will be S1,= E2 - + * it's a part of total blocktime. + * S1 - here is last_begin + * Legend of the picture is following: + * * - means blocktime per vCPU + * x - means overlapped blocktime (total blocktime) + * + * @addr: host virtual address + */ +static void mark_postcopy_blocktime_end(uintptr_t addr) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *dc =3D mis->blocktime_ctx; + int i, affected_cpu =3D 0; + bool vcpu_total_blocktime =3D false; + uint32_t read_vcpu_time, low_time_offset; + + if (!dc) { + return; + } + + low_time_offset =3D get_low_time_offset(dc); + /* lookup cpu, to clear it, + * that algorithm looks straighforward, but it's not + * optimal, more optimal algorithm is keeping tree or hash + * where key is address value is a list of */ + for (i =3D 0; i < smp_cpus; i++) { + uint32_t vcpu_blocktime =3D 0; + + read_vcpu_time =3D atomic_fetch_add(&dc->page_fault_vcpu_time[i], = 0); + if (atomic_fetch_add(&dc->vcpu_addr[i], 0) !=3D addr || + read_vcpu_time =3D=3D 0) { + continue; + } + atomic_xchg__nocheck(&dc->vcpu_addr[i], 0); + vcpu_blocktime =3D low_time_offset - read_vcpu_time; + affected_cpu +=3D 1; + /* we need to know is that mark_postcopy_end was due to + * faulted page, another possible case it's prefetched + * page and in that case we shouldn't be here */ + if (!vcpu_total_blocktime && + atomic_fetch_add(&dc->smp_cpus_down, 0) =3D=3D smp_cpus) { + vcpu_total_blocktime =3D true; + } + /* continue cycle, due to one page could affect several vCPUs */ + dc->vcpu_blocktime[i] +=3D vcpu_blocktime; + } + + atomic_sub(&dc->smp_cpus_down, affected_cpu); + if (vcpu_total_blocktime) { + dc->total_blocktime +=3D low_time_offset - atomic_fetch_add( + &dc->last_begin, 0); + } + trace_mark_postcopy_blocktime_end(addr, dc, dc->total_blocktime, + affected_cpu); +} + /* * Handle faults detected by the USERFAULT markings */ @@ -633,8 +775,11 @@ static void *postcopy_ram_fault_thread(void *opaque) rb_offset &=3D ~(qemu_ram_pagesize(rb) - 1); trace_postcopy_ram_fault_thread_request(msg.arg.pagefault.address, qemu_ram_get_idstr(rb), - rb_offset); + rb_offset, + msg.arg.pagefault.feat.pti= d); =20 + mark_postcopy_blocktime_begin((uintptr_t)(msg.arg.pagefault.addres= s), + msg.arg.pagefault.feat.ptid, rb); /* * Send the request to the source - we want to request one * of our host page sizes (which is >=3D TPS) @@ -724,6 +869,8 @@ static int qemu_ufd_copy_ioctl(int userfault_fd, void *= host_addr, if (!ret) { ramblock_recv_bitmap_set_range(rb, host_addr, pagesize / qemu_target_page_size()); + mark_postcopy_blocktime_end((uintptr_t)host_addr); + } return ret; } diff --git a/migration/trace-events b/migration/trace-events index 93961de..22ced40 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -115,6 +115,8 @@ process_incoming_migration_co_end(int ret, int ps) "ret= =3D%d postcopy-state=3D%d" process_incoming_migration_co_postcopy_end_main(void) "" migration_set_incoming_channel(void *ioc, const char *ioctype) "ioc=3D%p i= octype=3D%s" migration_set_outgoing_channel(void *ioc, const char *ioctype, const char = *hostname, void *err) "ioc=3D%p ioctype=3D%s hostname=3D%s err=3D%p" +mark_postcopy_blocktime_begin(uint64_t addr, void *dd, uint32_t time, int = cpu, int received) "addr: 0x%" PRIx64 ", dd: %p, time: %u, cpu: %d, already= _received: %d" +mark_postcopy_blocktime_end(uint64_t addr, void *dd, uint32_t time, int af= fected_cpu) "addr: 0x%" PRIx64 ", dd: %p, time: %u, affected_cpu: %d" =20 # migration/rdma.c qemu_rdma_accept_incoming_migration(void) "" @@ -191,7 +193,7 @@ postcopy_ram_enable_notify(void) "" postcopy_ram_fault_thread_entry(void) "" postcopy_ram_fault_thread_exit(void) "" postcopy_ram_fault_thread_quit(void) "" -postcopy_ram_fault_thread_request(uint64_t hostaddr, const char *ramblock,= size_t offset) "Request for HVA=3D0x%" PRIx64 " rb=3D%s offset=3D0x%zx" +postcopy_ram_fault_thread_request(uint64_t hostaddr, const char *ramblock,= size_t offset, uint32_t pid) "Request for HVA=3D0x%" PRIx64 " rb=3D%s offs= et=3D0x%zx pid=3D%u" postcopy_ram_incoming_cleanup_closeuf(void) "" postcopy_ram_incoming_cleanup_entry(void) "" postcopy_ram_incoming_cleanup_exit(void) "" @@ -200,6 +202,7 @@ save_xbzrle_page_skipping(void) "" save_xbzrle_page_overflow(void) "" ram_save_iterate_big_wait(uint64_t milliconds, int iterations) "big wait: = %" PRIu64 " milliseconds, %d iterations" ram_load_complete(int ret, uint64_t seq_iter) "exit_code %d seq iteration = %" PRIu64 +get_mem_fault_cpu_index(int cpu, uint32_t pid) "cpu: %d, pid: %u" =20 # migration/exec.c migration_exec_outgoing(const char *cmd) "cmd=3D%s" --=20 2.7.4 From nobody Sun May 5 03:02:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=samsung.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520953344538719.9396949795153; Tue, 13 Mar 2018 08:02:24 -0700 (PDT) Received: from localhost ([::1]:40371 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlRQ-0001z2-HU for importer@patchew.org; Tue, 13 Mar 2018 11:02:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59156) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlJW-0003OJ-KZ for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlJT-0001MZ-H1 for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:06 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:45228) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlJT-0001MC-As for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:03 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20180313145401euoutp01c0a8a94bdaf70637af7535e1cc63059e~bgo0XHm3w1954619546euoutp01b; Tue, 13 Mar 2018 14:54:01 +0000 (GMT) Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180313145400eucas1p1170fad140abf63b8a01fa47aff3b202c~bgozS6UL40219102191eucas1p1Y; Tue, 13 Mar 2018 14:54:00 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 7D.8A.05700.806E7AA5; Tue, 13 Mar 2018 14:54:00 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145359eucas1p22721e2cbfd518aad83cbb6741ae802ac~bgoyjNTfe2039820398eucas1p2L; Tue, 13 Mar 2018 14:53:59 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 89.3C.04183.706E7AA5; Tue, 13 Mar 2018 14:53:59 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P5J00AR2APOJ400@eusync3.samsung.com>; Tue, 13 Mar 2018 14:53:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180313145401euoutp01c0a8a94bdaf70637af7535e1cc63059e~bgo0XHm3w1954619546euoutp01b DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1520952841; bh=psayMhto0+HT2nEy3tK/RGoBRU3Gl66/D0dncZracXY=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=pHWaMG9A4M8qFk107GXm68XyXBCTMvv7Lc3ZTRdo5X/3+mL2Wy+LpRGmegUK4fZL2 GohEifkHEXRDgQJzA/YbSncFb58bBbscfz6MLTgzmsOC+G4/MdqjKIsfp3udwhhTnI DGrNLFQRgxVsauZz76gxjw7esjFgtv5E+A5kTdg4= X-AuditID: cbfec7f2-1c1ff70000011644-6e-5aa7e6088ced From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Tue, 13 Mar 2018 17:53:42 +0300 Message-id: <1520952824-3172-5-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrOIsWRmVeSWpSXmKPExsWy7djPc7ocz5ZHGfzez2Ux9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK6N1U3zBV+6KdZ97WRoY/3N2MXJySAiYSLxdcJK9i5GL Q0hgBaPE7We/oJzPjBLbmv4wdjFygFV9OQ8VX8Yoser+NGYIp5tJYtObJ2BFbAIGEvvu2YKY IgJ6EhOuRoKUMAtsZJTYeec9C8g2YQFniUcblrGB2CwCqhIPVx1kBbF5BdwkdhyfxwRxkZzE zXOdzCBzOAXcJVZ0lYDMkRDoYZO4tf8O1D0uEjd/BUKUC0u8Or6FHcKWkbg8uZsFor6dUeLu xqusEM4ERol1k48xQ1TZS5y6eRVsGbMAn8SkbdOZIYbySnS0CUGUeEjsvD2TBcJ2lOg9dJcN 4t9ZjBIffnxjm8AotYCRYRWjeGppcW56arFhXmq5XnFibnFpXrpecn7uJkZgdJ7+d/zTDsav l5IOMQpwMCrx8DJcWB4lxJpYVlyZe4hRgoNZSYQ35wFQiDclsbIqtSg/vqg0J7X4EKM0B4uS OG+cRl2UkEB6YklqdmpqQWoRTJaJg1OqgTGz99wG1TpjwTdvtnhxnzv9irP2/NkdSue2tB74 k7Dy87v+S3pJhqX1x5T/Py6Neu19lLfT+V9al2qGgvkfS3nGs4WhaYUe1hfPX0x82LNqueUR hdkP9cRvrpO4fLX0TC/PSzMrbyvH2VqW0icsJ/d9fbU+/ZvFcjF2zuUT79dla19x235kWqES S3FGoqEWc1FxIgDmrja7ygIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupgluLIzCtJLcpLzFFi42I5/e/4VV32Z8ujDB4vVbeYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAldG6Kb7gK3fFus+9LA2M/zm7GDk4JARMJL6cZ+9i5OIQ EljCKHHmyg8WCKeXSeJVWy8rSBGbgIHEvnu2IKaIgJ7EhKuRICXMAhsZJX7NuAtUwskhLOAs 8WjDMjYQm0VAVeLhqoNgcV4BN4kdx+cxgdgSAnISN891MoPM4RRwl1jRVQISFgIq2TnrL/sE Rp4FjAyrGEVSS4tz03OLjfSKE3OLS/PS9ZLzczcxAsNn27GfW3Ywdr0LPsQowMGoxMPLcGF5 lBBrYllxZe4hRgkOZiUR3pwHQCHelMTKqtSi/Pii0pzU4kOM0hwsSuK85w0qo4QE0hNLUrNT UwtSi2CyTBycUg2MdYLdJr9rRU1XXXjEYpN/r0G2JLTHrib+hmeN3WUbi282tb/6eG32XIp6 ti3ct29vXvqn4qe9fNNdlyul3d0Ql9B/9afjrIlTRLzvsYhtla8/JKu/sMLUVFeHK1ekMuxv 8n6xA8sUlwjzeTbOZVwtNFM/7McXRv2IuJSv+5dIT9E777lW7pUSS3FGoqEWc1FxIgBFAuY5 GwIAAA== X-CMS-MailID: 20180313145359eucas1p22721e2cbfd518aad83cbb6741ae802ac X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180313145359eucas1p22721e2cbfd518aad83cbb6741ae802ac X-RootMTR: 20180313145359eucas1p22721e2cbfd518aad83cbb6741ae802ac References: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 210.118.77.11 Subject: [Qemu-devel] [PATCH v1 4/6] migration: postcopy_blocktime documentation 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: lvivier@redhat.com, v.kuramshin@samsung.com, quintela@redhat.com, ash.billore@samsung.com, Alexey Perevalov , peterx@redhat.com, f4bug@amsat.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- docs/devel/migration.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/devel/migration.rst b/docs/devel/migration.rst index 9d1b765..18cd952 100644 --- a/docs/devel/migration.rst +++ b/docs/devel/migration.rst @@ -401,6 +401,20 @@ will now cause the transition from precopy to postcopy. It can be issued immediately after migration is started or any time later on. Issuing it after the end of a migration is harmless. =20 +Blocktime is a postcopy live migration metric, intended to show how +long the vCPU was in state of interruptable sleep due to pagefault. +That metric is calculated both for all vCPUs as overlapped value, and +separately for each vCPU. These values are calculated on destination +side. To enable postcopy blocktime calculation, enter following +command on destination monitor: + +``migrate_set_capability postcopy-blocktime on`` + +Postcopy blocktime can be retrieved by query-migrate qmp command. +postcopy-blocktime value of qmp command will show overlapped blocking +time for all vCPU, postcopy-vcpu-blocktime will show list of blocking +time per vCPU. + .. note:: During the postcopy phase, the bandwidth limits set using ``migrate_set_speed`` is ignored (to avoid delaying requested pages that --=20 2.7.4 From nobody Sun May 5 03:02:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=samsung.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520953104631740.4239517247541; Tue, 13 Mar 2018 07:58:24 -0700 (PDT) Received: from localhost ([::1]:40337 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlNf-00077u-SS for importer@patchew.org; Tue, 13 Mar 2018 10:58:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59136) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlJV-0003N0-AS for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlJU-0001N9-F8 for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:05 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:45233) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlJU-0001Md-7n for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:04 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20180313145402euoutp01f86affd88762ee18f87879801baf8e25~bgo1QjJ1U1999619996euoutp01V; Tue, 13 Mar 2018 14:54:02 +0000 (GMT) Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145401eucas1p2d0905997a67d533307a1e2d6ec8c9a8e~bgo0bV5v52045620456eucas1p2H; Tue, 13 Mar 2018 14:54:01 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id DF.8D.10409.906E7AA5; Tue, 13 Mar 2018 14:54:01 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145401eucas1p2c8318df482b41e0c9d075b9b65d19b68~bgozv-8nw2044820448eucas1p2I; Tue, 13 Mar 2018 14:54:00 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 42.18.04178.806E7AA5; Tue, 13 Mar 2018 14:54:00 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P5J00AR2APOJ400@eusync3.samsung.com>; Tue, 13 Mar 2018 14:54:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180313145402euoutp01f86affd88762ee18f87879801baf8e25~bgo1QjJ1U1999619996euoutp01V DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1520952842; bh=RZ3YQO8vI4GFk321mKJ37loxdLdF22WUk735qQZgOds=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=d8REsZDsmJpF+nqMeovw5xxDrv2WW6L1Mc7X4YmDilzpa3StGKrzoEdWUsdMX9O69 VpyJekJoBR3KtnzJej7tfq3Ik0qi8SqFumC6Vxq0LcpAaMhyIPcPjGEtvy8AkHslTh 9iHUZtKaxl5hsYjvMKhU8L+IW7V15rxdkkffJFQE= X-AuditID: cbfec7f5-b45ff700000028a9-89-5aa7e6097174 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Tue, 13 Mar 2018 17:53:43 +0300 Message-id: <1520952824-3172-6-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsWy7djPc7qcz5ZHGew/I2Ux9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK+Pc327GgveCFW0v77A0MC7h62Lk5JAQMJG4u3Y3Sxcj F4eQwApGiZYT06Gcz4wS275NYYWpWnvsMytEYhmjRNe2N0wQTjeTxNUXi9m7GDk42AQMJPbd swUxRQT0JCZcjQQpYRbYyCix8857FpBBwgJBEve7VjCD2CwCqhKnFi9gB7F5Bdwkju6dywKx TE7i5rlOZpA5nALuEiu6SkDmSAhMYJPo2n0T6iAXibY5J6FsYYlXx7ewQ9gyEp0dB5kgGtoZ Je5uvMoK1c0osW7yMWaIKnuJUzevMoHYzAJ8EpO2TQfbJiHAK9HRJgRR4iHRuOwV1AJHia3N fdBgmcUosf7Ha9YJjFILGBlWMYqnlhbnpqcWG+ellusVJ+YWl+al6yXn525iBMbo6X/Hv+5g 3Pcn6RCjAAejEg8vw4XlUUKsiWXFlbmHGCU4mJVEeHMeAIV4UxIrq1KL8uOLSnNSiw8xSnOw KInzxmnURQkJpCeWpGanphakFsFkmTg4pRoYbxUsTykUK+t8W7t0eq1jt1aBEGtO7UGLynMS H8ye/7gl1rWNJ2fyaVsWe6FiERu+ZXzTJscVXLw77dyDSAHxWWbla1yWnmE8HlNheHKO4nz2 xcuWT8k2ZJF41rzsO2f9lKM3YidmuBzxvHCvoVGn0TxPpdT4z528snCuu8IX5aLDbi1fWP9O iaU4I9FQi7moOBEAqfh5780CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupiluLIzCtJLcpLzFFi42I5/e/4VV2OZ8ujDHobbSzm3j3PYrFy8hIm i95t99gtTmw6yGzxqUHKYsv+b+wWx3t3sFjc2dLHZHH65mZ2B06PAy8Wsns8ubaZyeP9vqts Hn1bVjEGsERx2aSk5mSWpRbp2yVwZZz7281Y8F6wou3lHZYGxiV8XYycHBICJhJrj31m7WLk 4hASWMIo0X38AJTTyyRx4v5Z9i5GDg42AQOJffdsQUwRAT2JCVcjQUqYBTYySvyacZcVZJCw QIDE7323GUFsFgFViVOLF7CD2LwCbhJH985lgVgmJ3HzXCczyBxOAXeJFV0lIGEhoJKds/6y T2DkWcDIsIpRJLW0ODc9t9hQrzgxt7g0L10vOT93EyMwhLYd+7l5B+OljcGHGAU4GJV4eFec XR4lxJpYVlyZe4hRgoNZSYQ35wFQiDclsbIqtSg/vqg0J7X4EKM0B4uSOO95g8ooIYH0xJLU 7NTUgtQimCwTB6dUA2OGp1VvzrbKylfckrv99iodfs/MdcO0WOTX7r8P1osc09soetY8xzvS fvde6Xt5WQ8+6KpvSOA4GHT7f0x7YvqHj/yR2oYWarlTuILvSjyerDBDWj4q/NWH5fKLN91a pWAtze6hYnRjkpVI6uoD7F+DlglduXPLc/H8NwaLD2pGnkq8fNlk5TYlluKMREMt5qLiRADF 1MWlHQIAAA== X-CMS-MailID: 20180313145401eucas1p2c8318df482b41e0c9d075b9b65d19b68 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180313145401eucas1p2c8318df482b41e0c9d075b9b65d19b68 X-RootMTR: 20180313145401eucas1p2c8318df482b41e0c9d075b9b65d19b68 References: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 210.118.77.11 Subject: [Qemu-devel] [PATCH v1 5/6] migration: add blocktime calculation into migration-test 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: lvivier@redhat.com, v.kuramshin@samsung.com, quintela@redhat.com, ash.billore@samsung.com, Alexey Perevalov , peterx@redhat.com, f4bug@amsat.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch just requests blocktime calculation, and check it in case when UFFD_FEATURE_THREAD_ID feature is set on the host. Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- tests/migration-test.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/migration-test.c b/tests/migration-test.c index 74f9361..259acfb 100644 --- a/tests/migration-test.c +++ b/tests/migration-test.c @@ -26,6 +26,7 @@ const unsigned start_address =3D 1024 * 1024; const unsigned end_address =3D 100 * 1024 * 1024; bool got_stop; +static bool uffd_feature_thread_id; =20 #if defined(__linux__) #include @@ -55,6 +56,7 @@ static bool ufd_version_check(void) g_test_message("Skipping test: UFFDIO_API failed"); return false; } + uffd_feature_thread_id =3D api_struct.features & UFFD_FEATURE_THREAD_I= D; =20 ioctl_mask =3D (__u64)1 << _UFFDIO_REGISTER | (__u64)1 << _UFFDIO_UNREGISTER; @@ -223,6 +225,16 @@ static uint64_t get_migration_pass(QTestState *who) return result; } =20 +static void read_blocktime(QTestState *who) +{ + QDict *rsp, *rsp_return; + + rsp =3D wait_command(who, "{ 'execute': 'query-migrate' }"); + rsp_return =3D qdict_get_qdict(rsp, "return"); + g_assert(qdict_haskey(rsp_return, "postcopy-blocktime")); + QDECREF(rsp); +} + static void wait_for_migration_complete(QTestState *who) { while (true) { @@ -522,6 +534,7 @@ static void test_migrate(void) =20 migrate_set_capability(from, "postcopy-ram", "true"); migrate_set_capability(to, "postcopy-ram", "true"); + migrate_set_capability(to, "postcopy-blocktime", "true"); =20 /* We want to pick a speed slow enough that the test completes * quickly, but that it doesn't complete precopy even on a slow @@ -548,6 +561,9 @@ static void test_migrate(void) wait_for_serial("dest_serial"); wait_for_migration_complete(from); =20 + if (uffd_feature_thread_id) { + read_blocktime(to); + } g_free(uri); =20 test_migrate_end(from, to, true); --=20 2.7.4 From nobody Sun May 5 03:02:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=samsung.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1520953492164527.3544236483932; Tue, 13 Mar 2018 08:04:52 -0700 (PDT) Received: from localhost ([::1]:40389 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlTv-0004jG-1j for importer@patchew.org; Tue, 13 Mar 2018 11:04:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59160) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1evlJW-0003OR-Oz for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1evlJV-0001Nq-BS for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:06 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:57463) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1evlJV-0001N5-1m for qemu-devel@nongnu.org; Tue, 13 Mar 2018 10:54:05 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180313145403euoutp02bc5204be3e13519e9e7fc96028a3c97d~bgo2BrXFZ0472804728euoutp020; Tue, 13 Mar 2018 14:54:03 +0000 (GMT) Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145402eucas1p211bf9bdd56d018390f7bcfd9d772b968~bgo1UqM582039920399eucas1p2M; Tue, 13 Mar 2018 14:54:02 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 21.2E.17380.A06E7AA5; Tue, 13 Mar 2018 14:54:02 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180313145401eucas1p2b7cbb73e2515551b9a0287df1335eeb9~bgo0h3Qyq1458414584eucas1p2G; Tue, 13 Mar 2018 14:54:01 +0000 (GMT) Received: from eusync3.samsung.com ( [203.254.199.213]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id F3.18.04178.906E7AA5; Tue, 13 Mar 2018 14:54:01 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync3.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P5J00AR2APOJ400@eusync3.samsung.com>; Tue, 13 Mar 2018 14:54:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180313145403euoutp02bc5204be3e13519e9e7fc96028a3c97d~bgo2BrXFZ0472804728euoutp020 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1520952843; bh=APeQ/n7bu2hailg9v4ujaqHxryytGYv0HHuG1HPG5E8=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=afemt92v+PCWpYp+JeMJiT4Z+gBYl3JMXiPGEajeGNvl4qs2CKMm8BhwVLQSW28b4 SKW1j/nAU1n1RMwqk5/dz6oCqY6VG8HNAv6wR/Jd4auapipshap0CjqIapkOy0b6k+ SluhnCNQ67KKHiSVDi6gvLKyTfpYB1k80xFqjRww= X-AuditID: cbfec7f4-6f9ff700000043e4-32-5aa7e60af0d4 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Tue, 13 Mar 2018 17:53:44 +0300 Message-id: <1520952824-3172-7-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBIsWRmVeSWpSXmKPExsWy7djPc7pcz5ZHGfxZI2kx9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK+PwojssBctcK44/usPUwHjSrIuRk0NCwETibe961i5G Lg4hgRWMEncOdzFDOJ8ZJa6dmcXYxcgBVrXonzBEfBmjxLOmbSwQTjeTxKNZDcwgRWwCBhL7 7tmCmCICehITrkaClDALbGSU2HnnPQvINmGBEIkZZ3awgtgsAqoSK389BYvzCrhJ9F15xQ5x kZzEzXOdYCM5BdwlVnSVgMyREOhhkzi/ZSMbRI2LxO9br1khbGGJV8e3QPXKSHR2HGSCaGhn lLi78SorhDOBUWLd5GPMEFX2EqduXmUCsZkF+CQmbZvODPElr0RHmxCE6SExuT0VotpRYtWM iVD/zmKUWPhxH+sERqkFjAyrGMVTS4tz01OLjfJSy/WKE3OLS/PS9ZLzczcxAuPz9L/jX3Yw 7vqTdIhRgINRiYd3xdnlUUKsiWXFlbmHGCU4mJVEeHMeAIV4UxIrq1KL8uOLSnNSiw8xSnOw KInzxmnURQkJpCeWpGanphakFsFkmTg4pRoYlff3akefvSaaLWc8yUxvre3kzFOvmUTOnb9/ 7SJXc8ov86cTGZ/1TFP1Zvq+66TVs6sM+vPfHJFt37/JyWWiXESlBK9xtEr/YdFPOgfeTSpT MnnmUxOdaprn7Pz8XBX3pTd2H+alOOz9lm7JFJz1fVaXKnN7k4/shup2jy21jx3//Laoj4tU YinOSDTUYi4qTgQAikEH58sCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupgluLIzCtJLcpLzFFi42I5/e/4VV3OZ8ujDK53G1rMvXuexWLl5CVM Fr3b7rFbnNh0kNniU4OUxZb939gtjvfuYLG4s6WPyeL0zc3sDpweB14sZPd4cm0zk8f7fVfZ PPq2rGIMYInisklJzcksSy3St0vgyji86A5LwTLXiuOP7jA1MJ4062Lk4JAQMJFY9E+4i5GL Q0hgCaPE3ZmnWboYOYGcXiaJXZPsQWrYBAwk9t2zBTFFBPQkJlyNBClnFtjIKPFrxl1WkHJh gRCJGWd2gNksAqoSK389BRvDK+Am0XflFTuILSEgJ3HzXCczyBxOAXeJFV0lEJvcJHbO+ss+ gZFnASPDKkaR1NLi3PTcYkO94sTc4tK8dL3k/NxNjMDw2Xbs5+YdjJc2Bh9iFOBgVOLhXXF2 eZQQa2JZcWXuIUYJDmYlEd6cB0Ah3pTEyqrUovz4otKc1OJDjNIcLErivOcNKqOEBNITS1Kz U1MLUotgskwcnFINjCo2TAEHb/x9/cu6RTOhi8HzscbNmpPVoal5TyxXaEzdXnkiaT/vi9JU jplN3EzLddau3/LR/tusF8vSbsY0y72dsPihc+Tryy3Zb6WOFB6rKmu/zC+/5fv12pX2uqZr nsg8zDbk36XYn5lwW53r0dct7CdUbkvsF9mQvj5lW7msiJOiyYFV6kosxRmJhlrMRcWJAKnv y4IbAgAA X-CMS-MailID: 20180313145401eucas1p2b7cbb73e2515551b9a0287df1335eeb9 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180313145401eucas1p2b7cbb73e2515551b9a0287df1335eeb9 X-RootMTR: 20180313145401eucas1p2b7cbb73e2515551b9a0287df1335eeb9 References: <1520952824-3172-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v1 6/6] migration: add postcopy total blocktime into query-migrate 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: lvivier@redhat.com, v.kuramshin@samsung.com, quintela@redhat.com, ash.billore@samsung.com, Alexey Perevalov , peterx@redhat.com, f4bug@amsat.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Postcopy total blocktime is available on destination side only. But query-migrate was possible only for source. This patch adds ability to call query-migrate on destination. To be able to see postcopy blocktime, need to request postcopy-blocktime capability. The query-migrate command will show following sample result: {"return": "postcopy-vcpu-blocktime": [115, 100], "status": "completed", "postcopy-blocktime": 100 }} postcopy_vcpu_blocktime contains list, where the first item is the first vCPU in QEMU. This patch has a drawback, it combines states of incoming and outgoing migration. Ongoing migration state will overwrite incoming state. Looks like better to separate query-migrate for incoming and outgoing migration or add parameter to indicate type of migration. Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- hmp.c | 15 +++++++++++++ migration/migration.c | 42 ++++++++++++++++++++++++++++++++---- migration/migration.h | 4 ++++ migration/postcopy-ram.c | 56 ++++++++++++++++++++++++++++++++++++++++++++= ++++ migration/trace-events | 1 + qapi/migration.json | 11 +++++++++- 6 files changed, 124 insertions(+), 5 deletions(-) diff --git a/hmp.c b/hmp.c index 016cb5c..4539f77 100644 --- a/hmp.c +++ b/hmp.c @@ -274,6 +274,21 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) info->cpu_throttle_percentage); } =20 + if (info->has_postcopy_blocktime) { + monitor_printf(mon, "postcopy blocktime: %u\n", + info->postcopy_blocktime); + } + + if (info->has_postcopy_vcpu_blocktime) { + Visitor *v; + char *str; + v =3D string_output_visitor_new(false, &str); + visit_type_uint32List(v, NULL, &info->postcopy_vcpu_blocktime, NUL= L); + visit_complete(v, &str); + monitor_printf(mon, "postcopy vcpu blocktime: %s\n", str); + g_free(str); + visit_free(v); + } qapi_free_MigrationInfo(info); qapi_free_MigrationCapabilityStatusList(caps); } diff --git a/migration/migration.c b/migration/migration.c index 0ee9c1f..ae8890e 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -619,14 +619,15 @@ static void populate_disk_info(MigrationInfo *info) } } =20 -MigrationInfo *qmp_query_migrate(Error **errp) +static void fill_source_migration_info(MigrationInfo *info) { - MigrationInfo *info =3D g_malloc0(sizeof(*info)); MigrationState *s =3D migrate_get_current(); =20 switch (s->state) { case MIGRATION_STATUS_NONE: /* no migration has happened ever */ + /* do not overwrite destination migration status */ + return; break; case MIGRATION_STATUS_SETUP: info->has_status =3D true; @@ -677,8 +678,6 @@ MigrationInfo *qmp_query_migrate(Error **errp) break; } info->status =3D s->state; - - return info; } =20 /** @@ -742,6 +741,41 @@ static bool migrate_caps_check(bool *cap_list, return true; } =20 +static void fill_destination_migration_info(MigrationInfo *info) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + + switch (mis->state) { + case MIGRATION_STATUS_NONE: + return; + break; + case MIGRATION_STATUS_SETUP: + case MIGRATION_STATUS_CANCELLING: + case MIGRATION_STATUS_CANCELLED: + case MIGRATION_STATUS_ACTIVE: + case MIGRATION_STATUS_POSTCOPY_ACTIVE: + case MIGRATION_STATUS_FAILED: + case MIGRATION_STATUS_COLO: + info->has_status =3D true; + break; + case MIGRATION_STATUS_COMPLETED: + info->has_status =3D true; + fill_destination_postcopy_migration_info(info); + break; + } + info->status =3D mis->state; +} + +MigrationInfo *qmp_query_migrate(Error **errp) +{ + MigrationInfo *info =3D g_malloc0(sizeof(*info)); + + fill_destination_migration_info(info); + fill_source_migration_info(info); + + return info; +} + void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params, Error **errp) { diff --git a/migration/migration.h b/migration/migration.h index 3ead619..a09277e 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -73,6 +73,10 @@ struct MigrationIncomingState { =20 MigrationIncomingState *migration_incoming_get_current(void); void migration_incoming_state_destroy(void); +/* + * Functions to work with blocktime context + */ +void fill_destination_postcopy_migration_info(MigrationInfo *info); =20 #define TYPE_MIGRATION "migration" =20 diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 9e51e84..c46225c 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -110,6 +110,55 @@ static struct PostcopyBlocktimeContext *blocktime_cont= ext_new(void) return ctx; } =20 +static uint32List *get_vcpu_blocktime_list(PostcopyBlocktimeContext *ctx) +{ + uint32List *list =3D NULL, *entry =3D NULL; + int i; + + for (i =3D smp_cpus - 1; i >=3D 0; i--) { + entry =3D g_new0(uint32List, 1); + entry->value =3D ctx->vcpu_blocktime[i]; + entry->next =3D list; + list =3D entry; + } + + return list; +} + +/* + * This function just populates MigrationInfo from postcopy's + * blocktime context. It will not populate MigrationInfo, + * unless postcopy-blocktime capability was set. + * + * @info: pointer to MigrationInfo to populate + */ +void fill_destination_postcopy_migration_info(MigrationInfo *info) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *bc =3D mis->blocktime_ctx; + + if (!bc) { + return; + } + + info->has_postcopy_blocktime =3D true; + info->postcopy_blocktime =3D bc->total_blocktime; + info->has_postcopy_vcpu_blocktime =3D true; + info->postcopy_vcpu_blocktime =3D get_vcpu_blocktime_list(bc); +} + +static uint32_t get_postcopy_total_blocktime(void) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *bc =3D mis->blocktime_ctx; + + if (!bc) { + return 0; + } + + return bc->total_blocktime; +} + /** * receive_ufd_features: check userfault fd features, to request only supp= orted * features in the future. @@ -475,6 +524,9 @@ int postcopy_ram_incoming_cleanup(MigrationIncomingStat= e *mis) munmap(mis->postcopy_tmp_zero_page, mis->largest_page_size); mis->postcopy_tmp_zero_page =3D NULL; } + trace_postcopy_ram_incoming_cleanup_blocktime( + get_postcopy_total_blocktime()); + trace_postcopy_ram_incoming_cleanup_exit(); return 0; } @@ -968,6 +1020,10 @@ void *postcopy_get_tmp_page(MigrationIncomingState *m= is) =20 #else /* No target OS support, stubs just fail */ +void fill_destination_postcopy_migration_info(MigrationInfo *info) +{ +} + bool postcopy_ram_supported_by_host(MigrationIncomingState *mis) { error_report("%s: No OS support", __func__); diff --git a/migration/trace-events b/migration/trace-events index 22ced40..def03c4 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -198,6 +198,7 @@ postcopy_ram_incoming_cleanup_closeuf(void) "" postcopy_ram_incoming_cleanup_entry(void) "" postcopy_ram_incoming_cleanup_exit(void) "" postcopy_ram_incoming_cleanup_join(void) "" +postcopy_ram_incoming_cleanup_blocktime(uint64_t total) "total blocktime %= " PRIu64 save_xbzrle_page_skipping(void) "" save_xbzrle_page_overflow(void) "" ram_save_iterate_big_wait(uint64_t milliconds, int iterations) "big wait: = %" PRIu64 " milliseconds, %d iterations" diff --git a/qapi/migration.json b/qapi/migration.json index 676ef06..c4737f8 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -156,6 +156,13 @@ # @status is 'failed'. Clients should not attempt to parse the # error strings. (Since 2.7) # +# @postcopy-blocktime: total time when all vCPU were blocked during postco= py +# live migration (Since 2.12) +# +# @postcopy-vcpu-blocktime: list of the postcopy blocktime per vCPU (Since= 2.12) +# + +# # Since: 0.14.0 ## { 'struct': 'MigrationInfo', @@ -167,7 +174,9 @@ '*downtime': 'int', '*setup-time': 'int', '*cpu-throttle-percentage': 'int', - '*error-desc': 'str'} } + '*error-desc': 'str', + '*postcopy-blocktime' : 'uint32', + '*postcopy-vcpu-blocktime': ['uint32']} } =20 ## # @query-migrate: --=20 2.7.4