From nobody Sat May 18 12:29:47 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 1521742999614611.9104502453456; Thu, 22 Mar 2018 11:23:19 -0700 (PDT) Received: from localhost ([::1]:34170 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4rr-0003FK-Nt for importer@patchew.org; Thu, 22 Mar 2018 14:23:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53998) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4mb-00079I-P3 for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ez4mY-0000bN-IT for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:49 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:44915) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ez4mY-0000aB-4b for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:46 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180322181742euoutp02dafd9cfddb2ec49b377c4c2bd3f39386~eUOOEeS-q2648026480euoutp02A; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181741eucas1p13845ae17eaafe9f4fb34d52151fcf981~eUONM4cKI0199801998eucas1p1r; Thu, 22 Mar 2018 18:17:41 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 45.0E.10409.443F3BA5; Thu, 22 Mar 2018 18:17:40 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180322181740eucas1p2a7bde534f74bd8376fc521a4ad1bcfdb~eUOMB8Czv2588225882eucas1p2c; Thu, 22 Mar 2018 18:17:40 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id AE.29.04178.343F3BA5; Thu, 22 Mar 2018 18:17:39 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P60001OD857D350@eusync4.samsung.com>; Thu, 22 Mar 2018 18:17:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180322181742euoutp02dafd9cfddb2ec49b377c4c2bd3f39386~eUOOEeS-q2648026480euoutp02A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1521742662; bh=ag0oIYMIFoS+nI0J+p+SpGPaPEWZ+mqn7mE+ymBAxYg=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=MGGdCOAqCeMKGs3zEK6eedesbZnquuJZSdCatDYHLula1yX4Sy28x9VaFJeTow/7s 12otJnULHjFq9ebpz+raUjxoreOIepSccER+vZWiOi4Fsrzygkb0ufblsqtcdPf8oI J6aGrffE23m0ueRyvgtWX+ngPHTSl35PFUkgzTIw= X-AuditID: cbfec7f5-b45ff700000028a9-4f-5ab3f344e317 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Thu, 22 Mar 2018 21:17:22 +0300 Message-id: <1521742647-25550-2-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1521742647-25550-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djPc7ounzdHGbybb2Ux9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK2PBp9nsBe+EK6Y/vsDWwDhXoIuRk0NCwETi69KnbF2M XBxCAisYJR7uWMMM4XxmlFh3cyYbTNWPjafYIRLLGCW+LpsNVdXNJHH00F+gKg4ONgEDiX33 bEFMEQE9iQlXI0FKmAU2MkrsvPOeBWSQsICXxLo3D5hBalgEVCUO7koECfMKuEt0PPrFBLFL TuLmuU5mEJtTwENi761NjCBzJAQmsEncO30M6iAXiUsHNrJA2MISr45vYYewZSQ6Ow4yQTS0 M0rc3XiVFaob6J3Jx5ghquwlTt28CraOWYBPYtK26WAXSQjwSnS0CUGUeEjcPHmVHSLsKPH1 ggTEv7MZJZ79u8U+gVFqASPDKkbx1NLi3PTUYuO81HK94sTc4tK8dL3k/NxNjMAIPf3v+Ncd jPv+JB1iFOBgVOLh/XBkc5QQa2JZcWXuIUYJDmYlEd78tUAh3pTEyqrUovz4otKc1OJDjNIc LErivHEadVFCAumJJanZqakFqUUwWSYOTqkGxsazmwXe8nRyP2kRf7uPp0/mcY6rktLlHeUf roWfW7dcraTEtVOEW5+Vl/fBijP2ZTk22S4871t0X7dy1Ikvusm6esrU7nVh/z0Xvdz6+wXb cvsnfVfsD5ywyRCb/0nmb9S+/+ePBbQeKeR/ELblwuOFP39LSfic2DwpR+/k9/ptOh8P7fl8 +rwSS3FGoqEWc1FxIgCJFGiJzAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkluLIzCtJLcpLzFFi42I5/e/4NV3nz5ujDDa/tbGYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlbHg02z2gnfCFdMfX2BrYJwr0MXIySEhYCLxY+MpdhBb SGAJo8TTwyZdjFxAdi+TxLtLE1m7GDk42AQMJPbdswUxRQT0JCZcjQQpYRbYyCjxa8ZdVpBe YQEviXVvHjCD1LAIqEoc3JUIEuYVcJfoePSLCWKVnMTNc53MIDangIfE3lubGCHWukvsunCN eQIjzwJGhlWMIqmlxbnpucWGesWJucWleel6yfm5mxiBAbTt2M/NOxgvbQw+xCjAwajEwzvj 0OYoIdbEsuLK3EOMEhzMSiK8+WuBQrwpiZVVqUX58UWlOanFhxilOViUxHnPG1RGCQmkJ5ak ZqemFqQWwWSZODilGhinPTopZ2zS8EpLfzHDnV8vOlR/VVt6ynxb+7l8bVnJ/s+zrgf0Wjje 1P+0YoWgi8vTdfP+ztIU7qiYLv1rXbnmk5vrbpx/ouPy4k88g9YmsfXZLHa867/K/PSLYdZZ v2jd6dIqtoOil5kPyZzaaOSx7USc5nUfIf+A+5oh7KGCr9Z5TutQsn6lxFKckWioxVxUnAgA 6s9JZhwCAAA= X-CMS-MailID: 20180322181740eucas1p2a7bde534f74bd8376fc521a4ad1bcfdb X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180322181740eucas1p2a7bde534f74bd8376fc521a4ad1bcfdb X-RootMTR: 20180322181740eucas1p2a7bde534f74bd8376fc521a4ad1bcfdb References: <1521742647-25550-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 v2 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 fc629e5..f95a7f3 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1540,6 +1540,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 8d2f320..46a50bc 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -230,6 +230,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 9d0bf82..24bfc19 100644 --- a/qapi/migration.json +++ b/qapi/migration.json @@ -354,16 +354,20 @@ # # @x-multifd: Use more than one fd for migration (since 2.11) # +# # @dirty-bitmaps: If enabled, QEMU will migrate named dirty bitmaps. # (since 2.12) # +# @postcopy-blocktime: Calculate downtime for postcopy live migration +# (since 2.13) +# # 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', - 'dirty-bitmaps' ] } + 'dirty-bitmaps', 'postcopy-blocktime' ] } =20 ## # @MigrationCapabilityStatus: --=20 2.7.4 From nobody Sat May 18 12:29:47 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 152174299974636.00712560955037; Thu, 22 Mar 2018 11:23:19 -0700 (PDT) Received: from localhost ([::1]:34171 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4rr-0003Fc-RC for importer@patchew.org; Thu, 22 Mar 2018 14:23:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53994) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4mb-00079F-NF for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ez4mY-0000bZ-Il for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:49 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:44920) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ez4mY-0000aF-3F for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:46 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180322181742euoutp02f6c337919437c1846a768335b5736dc6~eUOOV--ls2880228802euoutp02K; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180322181741eucas1p291ac36d7eedbc7eb642bffc329a92f55~eUONp1u8I2588325883eucas1p2f; Thu, 22 Mar 2018 18:17:41 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 84.B7.05700.543F3BA5; Thu, 22 Mar 2018 18:17:41 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181740eucas1p13028d8418e837695a91ded89385f8978~eUOM2GkuI1717817178eucas1p1D; Thu, 22 Mar 2018 18:17:40 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 25.AC.04183.443F3BA5; Thu, 22 Mar 2018 18:17:40 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P60001OD857D350@eusync4.samsung.com>; Thu, 22 Mar 2018 18:17:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180322181742euoutp02f6c337919437c1846a768335b5736dc6~eUOOV--ls2880228802euoutp02K DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1521742662; bh=QAffSg1stlS//4+QG5alXTArNOLS7gEGVbS+I13mrkM=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=Arx9dMKeWJ9U0oU8cO2ttMQE4UMY7nxqnPDO1h0mawDtNwhY22UhAl0QmdS7Fj5qP 779pc/3IK/6QY/mvca0e/zt25WGLAXeu5aLk2lLJemHkmpYmiIHOVpvRfrr7OWN3F7 TowA/D38E/PZLX2vTC8mgcpsMswF1iYqQuTh+oBo= X-AuditID: cbfec7f2-1dbff70000011644-52-5ab3f3456cf0 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Thu, 22 Mar 2018 21:17:23 +0300 Message-id: <1521742647-25550-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1521742647-25550-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsWy7djPc7qunzdHGexcKWkx9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK2PV90PMBSc1KravvcPSwHhToYuRg0NCwERi5lbnLkYu DiGBFYwS3753MUI4nxklDu4+A+RwghV9WbcLKrGMUWLB8yZmCKebSeJ4w3JmkFFsAgYS++7Z gpgiAnoSE65GgpQwC2xklNh55z0LyCBhgWiJCQtfMIHYLAKqEpdWnmcDsXkF3CW+921ngVgm J3HzXCcziM0p4CGx99YmsMUSAj1sEjOOd7NDFLlIHF7ayQphC0u8Or4FKi4jcXlyNwtEQzuj xN2NV1khnAmMEusmH2OGqLKXOHXzKtgZzAJ8EpO2TWeGBAavREebEESJh8ShjTPYIGxHiZ0/ brNAfDybUeLm6e+MExilFjAyrGIUTy0tzk1PLTbMSy3XK07MLS7NS9dLzs/dxAiM0dP/jn/a wfj1UtIhRgEORiUe3hmHNkcJsSaWFVfmHmKU4GBWEuHNXwsU4k1JrKxKLcqPLyrNSS0+xCjN waIkzhunURclJJCeWJKanZpakFoEk2Xi4JRqYHTjO/Sg65Mxk5h9lZBue3vL3JR1RlwOH4+s UXd9Vujwevq7ixLxO53maZ9IMfslJPSvmK/kpQ9rwPz0mHvy8p89X19sEo1beXKuYW3qHnaN D+73FRuKvnR6fdy+IyI74tfPYMHMjQb3Hh91kL5o8P6H7L4GpQiDJL2Q9T2hItWG8orbecy9 lViKMxINtZiLihMB2Btqk80CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupmluLIzCtJLcpLzFFi42I5/e/4NV2Xz5ujDK51GljMvXuexWLl5CVM Fr3b7rFbnNh0kNniU4OUxZb939gtjvfuYLG4s6WPyeL0zc3sDpweB14sZPd4cm0zk8f7fVfZ PPq2rGIMYInisklJzcksSy3St0vgylj1/RBzwUmNiu1r77A0MN5U6GLk5JAQMJH4sm4XYxcj F4eQwBJGiaOnYJxeJokfW/6zdzFycLAJGEjsu2cLYooI6ElMuBoJUsIssJFR4teMu6wgg4QF oiUmLHzBBGKzCKhKXFp5ng3E5hVwl/jet50FYpmcxM1zncwgNqeAh8TeW5sYQWwhoJpdF64x T2DkWcDIsIpRJLW0ODc9t9hIrzgxt7g0L10vOT93EyMwiLYd+7llB2PXu+BDjAIcjEo8vDMO bY4SYk0sK67MPcQowcGsJMKbvxYoxJuSWFmVWpQfX1Sak1p8iFGag0VJnPe8QWWUkEB6Yklq dmpqQWoRTJaJg1OqgdFYaGnIjn1CfSEP3I6KcNuIySk6yFaGHGNa32twXfD7w7LFcrtMT9b3 mfdk1i6qCLi1V+OCU4FI4CzOqZcM77yzdA+f8FR/9Sp++9h9O1ne/+x48Kvxxf2bRR1PhAtk tZU8ryuI74y6v/iUgPf8iB/ydroTORaXNJ5i2SecupeV6ZTSnRPCN5RYijMSDbWYi4oTAbj2 caoeAgAA X-CMS-MailID: 20180322181740eucas1p13028d8418e837695a91ded89385f8978 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180322181740eucas1p13028d8418e837695a91ded89385f8978 X-RootMTR: 20180322181740eucas1p13028d8418e837695a91ded89385f8978 References: <1521742647-25550-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 v2 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 46a50bc..6d9aaeb 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; @@ -65,6 +67,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 efd7793..66f1df9 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -90,6 +90,54 @@ int postcopy_notify(enum PostcopyNotifyReason reason, Er= ror **errp) #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 @@ -182,6 +230,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 Sat May 18 12:29:47 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 1521742831359974.3180034118176; Thu, 22 Mar 2018 11:20:31 -0700 (PDT) Received: from localhost ([::1]:34151 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4p9-0000ZY-0p for importer@patchew.org; Thu, 22 Mar 2018 14:20:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53999) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4mb-00079H-P3 for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ez4mY-0000bR-ID for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:49 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:60165) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ez4mY-0000ab-3f for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:46 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20180322181743euoutp0172692277a5f615fe2bada13dd20a3462~eUOO_tdqs0379303793euoutp01K; Thu, 22 Mar 2018 18:17:43 +0000 (GMT) Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181742eucas1p15597af98dd1a170bdaf044fa56b07e8e~eUOOTdYFK1715217152eucas1p1D; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 25.B7.05700.643F3BA5; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181741eucas1p1d80d609a6d0aca10e459563b715b37d6~eUONjIHel0211502115eucas1p1F; Thu, 22 Mar 2018 18:17:41 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E5.AC.04183.543F3BA5; Thu, 22 Mar 2018 18:17:41 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P60001OD857D350@eusync4.samsung.com>; Thu, 22 Mar 2018 18:17:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180322181743euoutp0172692277a5f615fe2bada13dd20a3462~eUOO_tdqs0379303793euoutp01K DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1521742663; bh=JVGyMUYj5okNvtP6rivYzs7au9yWZE0EGQC9gUfIIfg=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=QLCTfcJ+TWubmxpqcGOtvVRG2jwy3ca7hyrfqxCxq/yNYUUaqNrRSt6RbRLe0lekw XoDRvGB5rsbJ3g9B8gkRyQIplyHLfWcmrDB5OCW7P/gLItdi+11WInsT8dvseHQWOj CKIVtz4An+cyEbao42yT/kMIraEP4QezIejirCXs= X-AuditID: cbfec7f2-1c1ff70000011644-53-5ab3f34683d8 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Thu, 22 Mar 2018 21:17:24 +0300 Message-id: <1521742647-25550-4-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1521742647-25550-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsWy7djP87punzdHGSybw24x9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK+PV11nsBVN9Kva/3sbWwLjKsouRk0NCwETi/INuxi5G Lg4hgRWMElv7T7JAOJ8ZJX4dPsEKU7W+pYMZIrGMUeLFlONQTjeTxKzHT4EcDg42AQOJffds QUwRAT2JCVcjQUqYBTYySuy8854FZJCwgLtEy9Gz7CA2i4CqxNYVfxlBbF6g+Pzdv5kglslJ 3DzXyQxicwp4SOy9tQnsPAmBCWwSa29OgbrIReL1rQVsELawxKvjW9ghbBmJy5O7WSAa2hkl 7m68ygrVzSixbvIxZogqe4lTN6+CrWMW4JOYtG062AcSArwSHW1CECUeEovOrIca6iix8lMD 2GIhgdmMEnOuSk1glFrAyLCKUTy1tDg3PbXYMC+1XK84Mbe4NC9dLzk/dxMjMEZP/zv+aQfj 10tJhxgFOBiVeHhnHNocJcSaWFZcmXuIUYKDWUmEN38tUIg3JbGyKrUoP76oNCe1+BCjNAeL kjhvnEZdlJBAemJJanZqakFqEUyWiYNTqoHRc+07I7F1pee3dG488mer2jYGsWt992XW7E5w 8bvhmnq9hje6N2ipTIJi4IRa78X/hArcQn3SNnMtO7xxws9WHmb7M3oKp1q2ivQxBspN1zz5 +CnHu1efv/zkn3/k5/KrFx9bLzzAcvijx8z0j2lV6b2uT9ccVfn/ReLj5YWC/7Rm/HhudOf+ CiWW4oxEQy3mouJEAGT6P6jNAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupmluLIzCtJLcpLzFFi42I5/e/4NV3Xz5ujDDZNUrWYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlfHq6yz2gqk+Fftfb2NrYFxl2cXIySEhYCKxvqWDuYuR i0NIYAmjREv3RxYIp5dJYsr9B0xdjBwcbAIGEvvu2YKYIgJ6EhOuRoKUMAtsZJT4NeMuK8gg YQF3iZajZ9lBbBYBVYmtK/4ygti8QPH5u38zQSyTk7h5rpMZxOYU8JDYe2sTWI0QUM2uC9eY JzDyLGBkWMUoklpanJueW2ykV5yYW1yal66XnJ+7iREYRNuO/dyyg7HrXfAhRgEORiUe3hmH NkcJsSaWFVfmHmKU4GBWEuHNXwsU4k1JrKxKLcqPLyrNSS0+xCjNwaIkznveoDJKSCA9sSQ1 OzW1ILUIJsvEwSnVwLh61/X1108t/rHGY86xf9xXFq+QmyPmfCuubl/rxybF2ONW7tcuzr4w 9cJdh806PduErRcFtU4q5/t+0VQx6uiPnc6BCntqHjhaqL4Q89vDcfXr4SrhU0vMDmc3eVSd nlQ7b0V46eYZERnyLi53o3LEQ9hnNKau52u4xx+Rm79qX85H49le+zcosRRnJBpqMRcVJwIA NILwqB4CAAA= X-CMS-MailID: 20180322181741eucas1p1d80d609a6d0aca10e459563b715b37d6 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180322181741eucas1p1d80d609a6d0aca10e459563b715b37d6 X-RootMTR: 20180322181741eucas1p1d80d609a6d0aca10e459563b715b37d6 References: <1521742647-25550-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 v2 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 | 151 +++++++++++++++++++++++++++++++++++++++++++= +++- migration/trace-events | 5 +- 2 files changed, 154 insertions(+), 2 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 66f1df9..6b01884 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -636,6 +636,148 @@ int postcopy_request_shared_page(struct PostCopyFD *p= cfd, RAMBlock *rb, 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(&dc->vcpu_addr[cpu], 0); + atomic_xchg(&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(&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 */ @@ -742,7 +884,12 @@ 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.addr= ess, qemu_ram_get_idstr(rb), - rb_offset); + rb_offset, + msg.arg.pagefault.feat.pti= d); + mark_postcopy_blocktime_begin( + (uintptr_t)(msg.arg.pagefault.address), + 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) @@ -889,6 +1036,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 a180d7b..368bc4b 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) "" @@ -193,7 +195,7 @@ postcopy_ram_fault_thread_exit(void) "" postcopy_ram_fault_thread_fds_core(int baseufd, int quitfd) "ufd: %d quitf= d: %d" postcopy_ram_fault_thread_fds_extra(size_t index, const char *name, int fd= ) "%zd/%s: %d" 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) "" @@ -206,6 +208,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 Sat May 18 12:29:47 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 1521742829179254.5689880717341; Thu, 22 Mar 2018 11:20:29 -0700 (PDT) Received: from localhost ([::1]:34149 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4p0-0000HY-Ly for importer@patchew.org; Thu, 22 Mar 2018 14:20:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53995) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4mb-00079G-Nv for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ez4mY-0000bJ-IS for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:49 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:44928) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ez4mY-0000aw-4d for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:46 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180322181744euoutp02ce3c89af77e3f00e40afad07ea530b72~eUOQWkBtH2880228802euoutp02L; Thu, 22 Mar 2018 18:17:44 +0000 (GMT) Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180322181743eucas1p2b2333c8e6cf979b50997577645fa0c18~eUOPDOazZ2588325883eucas1p2h; Thu, 22 Mar 2018 18:17:43 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id C5.B7.05700.643F3BA5; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181742eucas1p13b9727b6985dab1ac280f6e07cae9ba6~eUOOWzglp1714717147eucas1p1F; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 86.AC.04183.643F3BA5; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P60001OD857D350@eusync4.samsung.com>; Thu, 22 Mar 2018 18:17:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180322181744euoutp02ce3c89af77e3f00e40afad07ea530b72~eUOQWkBtH2880228802euoutp02L DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1521742664; bh=SZ3vPmGuZldq/v6fw1hfGk61gBrRVym6zgm2au40GH4=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=aZbjiwdzfKnTMn1xzDO7Co/JESgwJfZenCg4r7J8eCkWCNjP9PCTDp1KwA3Fkz7GH 7RJk+d8TOM+K8fc2rwNGeNEusUO1ExGXXmY3ovbVPI2JpV7YLlqllphO/bn8qDsrYy a+l/EPsLVmwxCK+DwY/iFI7Psr9w0zpHy09vizMs= X-AuditID: cbfec7f2-1dbff70000011644-56-5ab3f346dd80 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Thu, 22 Mar 2018 21:17:25 +0300 Message-id: <1521742647-25550-5-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1521742647-25550-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsWy7djP87punzdHGdy8YWEx9+55FouVk5cw WfRuu8ducWLTQWaLTw1SFlv2f2O3ON67g8XizpY+JovTNzezO3B6HHixkN3jybXNTB7v911l 8+jbsooxgCWKyyYlNSezLLVI3y6BK2Pm3QXsBV+5K7aeWcjWwPifs4uRk0NCwETiyr2D7F2M XBxCAisYJR7fOMIE4XxmlGjbcIUFpurio+tsEIlljBKrXt1jA0kICXQzSVzY4dLFyMHBJmAg se+eLYgpIqAnMeFqJEg5s8BGRomdd96DzREWcJb4fHExK4jNIqAqsWzfTLA4r4C7xOe1V9gh dslJ3DzXyQxicwp4SOy9tYkRZJCEwAQ2iVdneqGKXCTW7NzDBGELS7w6vgUqLiNxeXI3C0RD O6PE3Y1XWaG6GSXWTT7GDFFlL3Hq5lWwbmYBPolJ26Yzg5wtIcAr0dEmBFHiIfFy/y9GCNtR 4vn2S9Bgmc0o8eFMO8sERqkFjAyrGMVTS4tz01OLDfNSy/WKE3OLS/PS9ZLzczcxAmP09L/j n3Ywfr2UdIhRgINRiYd3xqHNUUKsiWXFlbmHGCU4mJVEePPXAoV4UxIrq1KL8uOLSnNSiw8x SnOwKInzxmnURQkJpCeWpGanphakFsFkmTg4pRoYJb10MnLNGlU/nn91aFrxmd2nc88HWRww kTKddehZC8tVnuCCU/O5hWZcNIta5jNx+psy8e7CU9MfOV9+x7fvc0HoPvkvv0x8uWUYVl0X v+1Se0pOaJLZ5sbIqzwyFYcucrTMPyVXZvtmkm9so9L2naGLOjm3RF2Qlp4ddP29wYqaqWcn 3HZfo8RSnJFoqMVcVJwIADM/vyLNAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupmluLIzCtJLcpLzFFi42I5/e/4NV23z5ujDKYflLSYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlTHz7gL2gq/cFVvPLGRrYPzP2cXIySEhYCJx8dF1ti5G Lg4hgSWMEr+3LYVyepkklna9Y+li5OBgEzCQ2HfPFsQUEdCTmHA1EqSEWWAjo8SvGXdZQQYJ CzhLfL64GMxmEVCVWLZvJguIzSvgLvF57RV2iGVyEjfPdTKD2JwCHhJ7b21iBLGFgGp2XbjG PIGRZwEjwypGkdTS4tz03GIjveLE3OLSvHS95PzcTYzAINp27OeWHYxd74IPMQpwMCrx8M44 tDlKiDWxrLgy9xCjBAezkghv/lqgEG9KYmVValF+fFFpTmrxIUZpDhYlcd7zBpVRQgLpiSWp 2ampBalFMFkmDk6pBsa9Lx3WBT1x+FP8/sPUD/e1rdJWetfUMVjffLB36qLjb6OMyq4zrT93 5lnr6w9GRsfNri9+0LvE2Wct3/uYhcJVyknz1PxvxiZ9F9rGGPBuQ//cSAsPjqT/y9uUTnCX mCvaadltLw5c18b3dpH7ImsP9bUK7hPSgkQ/3HvGncWu23Nq+1l/pUAlluKMREMt5qLiRAAd 4KT+HgIAAA== X-CMS-MailID: 20180322181742eucas1p13b9727b6985dab1ac280f6e07cae9ba6 X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180322181742eucas1p13b9727b6985dab1ac280f6e07cae9ba6 X-RootMTR: 20180322181742eucas1p13b9727b6985dab1ac280f6e07cae9ba6 References: <1521742647-25550-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 v2 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 e32b087..9342a8a 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 Sat May 18 12:29:47 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 1521742828523808.6138250463449; Thu, 22 Mar 2018 11:20:28 -0700 (PDT) Received: from localhost ([::1]:34150 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4p0-0000Kq-OQ for importer@patchew.org; Thu, 22 Mar 2018 14:20:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54000) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4mb-00079J-PN for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ez4mZ-0000bp-EG for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:49 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:60175) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ez4mZ-0000bY-7G for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:47 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20180322181745euoutp014297ebb0b80b774372032808f6f42552~eUORXlTP_0417004170euoutp01B; Thu, 22 Mar 2018 18:17:45 +0000 (GMT) Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181744eucas1p11bb94af8a6852bb78013ba48d89ac643~eUOQphwqZ1718617186eucas1p1M; Thu, 22 Mar 2018 18:17:44 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 96.0E.10409.843F3BA5; Thu, 22 Mar 2018 18:17:44 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180322181743eucas1p21654973717f1bfb660fd226f75a206dc~eUOPGo6122588725887eucas1p2V; Thu, 22 Mar 2018 18:17:43 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 20.39.04178.743F3BA5; Thu, 22 Mar 2018 18:17:43 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P60001OD857D350@eusync4.samsung.com>; Thu, 22 Mar 2018 18:17:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20180322181745euoutp014297ebb0b80b774372032808f6f42552~eUORXlTP_0417004170euoutp01B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1521742665; bh=e9xyT4qWj47i3A7lG/Qkdc+qovlbp4JOpkUIL8e2C3s=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=Wm8IMzqFyIf1K6cBa3oW7PfpN2GE8QWUuq9aC44ZDJDG0UMHFQQOiddojPARfwLhN ZpvPV9AJWGa9xZgcVg/eWGuyOQk0Z/uwho0OilJHtXMJ9+8/CpSZA7WNnEN2hCymdc l9ZlJn1RKsX4rD+RzruQ7kZiS/27QGhDO3ajpSiU= X-AuditID: cbfec7f5-b5fff700000028a9-56-5ab3f348ffe3 From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Thu, 22 Mar 2018 21:17:26 +0300 Message-id: <1521742647-25550-6-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1521742647-25550-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djP87oenzdHGSxs1LSYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlXHm3GSmgveCFZ96dzI3MC7h62Lk5JAQMJHYuGMiSxcj F4eQwApGiYYLi6Ccz4wSN25sYYGpmjPxDhtEYhmjxLJP3awQTjeTxPemXvYuRg4ONgEDiX33 bEFMEQE9iQlXI0FKmAU2MkrsvPOeBSQuLBAk8XpZBchMFgFVid09OxlBbF4Bd4kzZ34wQuyS k7h5rpMZxOYU8JDYe2sTI8gcCYEJbBIzp51jgyhykbixbxMThC0s8er4FnYIW0ais+MgE0RD O6PE3Y1XWaG6GSXWTT7GDFFlL3Hq5lWwbmYBPolJ26Yzg1wnIcAr0dEmBFHiIbHw/jOoixwl 5j99BLZASGA2o8S1XaYTGKUWMDKsYhRPLS3OTU8tNs5LLdcrTswtLs1L10vOz93ECIzQ0/+O f93BuO9P0iFGAQ5GJR7eD0c2RwmxJpYVV+YeYpTgYFYS4c1fCxTiTUmsrEotyo8vKs1JLT7E KM3BoiTOG6dRFyUkkJ5YkpqdmlqQWgSTZeLglGpgdOb6oBz+xMbn3o0fU483cf1fms0Xf2kp d00Ph9DrU1OmhUhnfefvui6TetHk/jVnpqh/vEyZDFdmnlkmmX7vzP6IybUiiR9WRopq1yX/ 3K/kP0U4LHNPR/IXQ70J/k6pB3tvfoiJff2Xme98UoTIS90DOz0emrokNfb9On+38KTrsj0x Xu+mKbEUZyQaajEXFScCAAcMzeHMAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupmluLIzCtJLcpLzFFi42I5/e/4NV33z5ujDK4cFrSYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlXHm3GSmgveCFZ96dzI3MC7h62Lk5JAQMJGYM/EOWxcj F4eQwBJGicUfLzFDOL1MEu/3HWDvYuTgYBMwkNh3zxbEFBHQk5hwNRKkhFlgI6PErxl3WUEG CQsESFyfvIwJxGYRUJXY3bOTEcTmFXCXOHPmByPEMjmJm+c6mUFsTgEPib23NoHFhYBqdl24 xjyBkWcBI8MqRpHU0uLc9NxiQ73ixNzi0rx0veT83E2MwCDaduzn5h2MlzYGH2IU4GBU4uGd cWhzlBBrYllxZe4hRgkOZiUR3vy1QCHelMTKqtSi/Pii0pzU4kOM0hwsSuK85w0qo4QE0hNL UrNTUwtSi2CyTBycUg2MyqbLgkKe2mwrFohnPDf9yYd5TCF8fXEnVYzkJXbo9rjvOs4n90qb 6c4RlxLl7/OeRMpnPp4kfevK95tTA1RevVEJighKLK/+qh7c+FhbfMG7Ceffb77Cknz2o/Gn lOAN8YpcKlM96w8un3PntPW7xlMLrYNTv9f+DTtXGq23emX3jQ4xvhteSizFGYmGWsxFxYkA 1rWgNh4CAAA= X-CMS-MailID: 20180322181743eucas1p21654973717f1bfb660fd226f75a206dc X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180322181743eucas1p21654973717f1bfb660fd226f75a206dc X-RootMTR: 20180322181743eucas1p21654973717f1bfb660fd226f75a206dc References: <1521742647-25550-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 v2 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 422bf1a..dde7c46 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) { @@ -533,6 +545,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 @@ -559,6 +572,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 Sat May 18 12:29:47 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 1521743000042100.27180060656224; Thu, 22 Mar 2018 11:23:20 -0700 (PDT) Received: from localhost ([::1]:34172 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4rv-0003Ib-57 for importer@patchew.org; Thu, 22 Mar 2018 14:23:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54026) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ez4mc-00079V-PY for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ez4ma-0000cF-NQ for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:50 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:44935) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ez4ma-0000bz-De for qemu-devel@nongnu.org; Thu, 22 Mar 2018 14:17:48 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20180322181746euoutp0214d24e093f9447cf5b8508d5382440ba~eUOShq7Kr2649426494euoutp02A; Thu, 22 Mar 2018 18:17:46 +0000 (GMT) Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20180322181745eucas1p297523b10b14bb76f0883c61dbd5de53b~eUORQOH012015620156eucas1p2E; Thu, 22 Mar 2018 18:17:45 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 37.0E.10409.943F3BA5; Thu, 22 Mar 2018 18:17:45 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20180322181744eucas1p1a738955967cd8a6cc0330980753b2bad~eUOP8OkVf2937029370eucas1p1s; Thu, 22 Mar 2018 18:17:44 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 27.AC.04183.843F3BA5; Thu, 22 Mar 2018 18:17:44 +0000 (GMT) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0P60001OD857D350@eusync4.samsung.com>; Thu, 22 Mar 2018 18:17:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20180322181746euoutp0214d24e093f9447cf5b8508d5382440ba~eUOShq7Kr2649426494euoutp02A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1521742667; bh=ctE757L9LEWNeD+3ZLZvMU2J/yxAXH/VUqnaN6mrPEA=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=cxLpQJ51GxM2p40RZ8PkUmp8SHVZiEUXQlXxe8C4ClZ14o2l/HiFjfJaQaMT+j1xf v7yQdDR//aclrtf/8ktC2lgIqZHE8uZvDXZl5xmOui+QCPxOGODOxCkpp5eHHJEWb3 i9yWDyA2YHcdSIhk20FrqxMfS7h9s36iQ5rzie4A= X-AuditID: cbfec7f5-b45ff700000028a9-57-5ab3f349f22c From: Alexey Perevalov To: qemu-devel@nongnu.org, dgilbert@redhat.com Date: Thu, 22 Mar 2018 21:17:27 +0300 Message-id: <1521742647-25550-7-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1521742647-25550-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJIsWRmVeSWpSXmKPExsWy7djPc7qenzdHGWxoFbKYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlXFi+U2Wgs1uFUfnrWVrYDxk3sXIySEhYCLRc76TvYuR i0NIYAWjxL2321ghnM+MEj/nnGaDqTre38kEkVjGKPHkyGQWCKebSeLdmj6gKg4ONgEDiX33 bEFMEQE9iQlXI0FKmAU2MkrsvPOeBSQuLBAisX2bBshMFgFViY0Pp7OD2LwC7hIHZvWxQOyS k7h5rpMZxOYU8JDYe2sTI8gcCYEJbBLPbv6FKnKR2D/9LjuELSzx6vgWKFtG4vLkbhaIhnZG ibsbr7JCdTNKrJt8jBmiyl7i1M2rTCA2swCfxKRt05lBrpMQ4JXoaBOCMD0kDh1NhKh2lJjb 2A/172xGib5T8xgnMEotYGRYxSieWlqcm55abJyXWq5XnJhbXJqXrpecn7uJERihp/8d/7qD cd+fpEOMAhyMSjy8H45sjhJiTSwrrsw9xCjBwawkwpu/FijEm5JYWZValB9fVJqTWnyIUZqD RUmcN06jLkpIID2xJDU7NbUgtQgmy8TBKdXAKBi+O7Y0SK5v26Wq89Exkg/alnOnmFzWWP/5 mLNI+u7IjSlv+KyvTndKWh8VktXs/lH23fS7Z+qnf8+KMVxX0Gm5V+DrdB6bluk5rw5PPnau z2RCNceEKwL1lo9e8W62aZ90/0ygjsKvR8IvHR7G6QQeqdnlZ1Hx5dA3MWOpmgVWKze+SNuc psRSnJFoqMVcVJwIAILL2hvMAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupkluLIzCtJLcpLzFFi42I5/e/4NV2Pz5ujDFaeZ7OYe/c8i8XKyUuY LHq33WO3OLHpILPFpwYpiy37v7FbHO/dwWJxZ0sfk8Xpm5vZHTg9DrxYyO7x5NpmJo/3+66y efRtWcUYwBLFZZOSmpNZllqkb5fAlXFi+U2Wgs1uFUfnrWVrYDxk3sXIySEhYCJxvL+TqYuR i0NIYAmjxNbOf6wgCSGBXiaJnpvBXYwcHGwCBhL77tmCmCICehITrkaClDMLbGSU+DXjLitI XFggRGL7Ng2QThYBVYmND6ezg9i8Au4SB2b1sUCskpO4ea6TGcTmFPCQ2HtrEyPEJneJXReu MU9g5FnAyLCKUSS1tDg3PbfYSK84Mbe4NC9dLzk/dxMjMIC2Hfu5ZQdj17vgQ4wCHIxKPLwz Dm2OEmJNLCuuzD3EKMHBrCTCm78WKMSbklhZlVqUH19UmpNafIhRmoNFSZz3vEFllJBAemJJ anZqakFqEUyWiYNTqoFRhUf0av7pvDoR5lrOJ2eTj2XVOS+cIyj86N7CJMeHGlv1NlbqTntR nLWzLP6mUtMuFpVvopzO8tklLN8kuBVUpDdv/fBKRvlVVloT02T9szfShHT7rq8022DAH2dS fV25+vV/Xdfn1Q+E5R1zl5aINm46dOj+5/y7CklLCjsr2aPvvpjiF6HEUpyRaKjFXFScCABO ysVMHAIAAA== X-CMS-MailID: 20180322181744eucas1p1a738955967cd8a6cc0330980753b2bad X-Msg-Generator: CA CMS-TYPE: 201P X-CMS-RootMailID: 20180322181744eucas1p1a738955967cd8a6cc0330980753b2bad X-RootMTR: 20180322181744eucas1p1a738955967cd8a6cc0330980753b2bad References: <1521742647-25550-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 v2 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 679467d..6c51df5 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 f95a7f3..71b0f19 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -630,14 +630,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; @@ -688,8 +689,6 @@ MigrationInfo *qmp_query_migrate(Error **errp) break; } info->status =3D s->state; - - return info; } =20 /** @@ -753,6 +752,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 6d9aaeb..7c69598 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -77,6 +77,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 6b01884..bbc1a95 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -139,6 +139,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. @@ -512,6 +561,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; } @@ -1156,6 +1208,10 @@ void *postcopy_get_tmp_page(MigrationIncomingState *= mis) =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 368bc4b..d6be74b 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -200,6 +200,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 postcopy_request_shared_page(const char *sharer, const char *rb, uint64_t = rb_offset) "for %s in %s offset 0x%"PRIx64 postcopy_request_shared_page_present(const char *sharer, const char *rb, u= int64_t rb_offset) "%s already %s offset 0x%"PRIx64 postcopy_wake_shared(uint64_t client_addr, const char *rb) "at 0x%"PRIx64"= in %s" diff --git a/qapi/migration.json b/qapi/migration.json index 24bfc19..f3974c6 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.13) +# +# @postcopy-vcpu-blocktime: list of the postcopy blocktime per vCPU (Since= 2.13) +# + +# # 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