From nobody Mon Feb 9 04:48:27 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1749486009; cv=none; d=zohomail.com; s=zohoarc; b=e9o4gXYU8Zsz8pIR26ILE7EKVGby9RDUzPp2QWNr6hbgL15YAzyQCc3KdnS7vXo9LhsjV1Rr5I0YZWtCF/KP4XsWYowxv7r4qiKimL/JFjaf13fuNCbo9NpTf+tfoM4vxClRAdf4eWOjLMCrM3S+L7i+2TolVwF6RqA7QYOKmHU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1749486009; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GftW69IoIvz/x1xZNVGzz01cczNmp8jYtfQ1Gtjwb0s=; b=Vbe9tK3uWL7j5hkoTeuYbmBI1tMmQJX8LfBP0sKCRPH5Jq+KFdZUoAgF7k4bt8+pFMOFZ8Z7YiueSajHLCOI9l6i9Ucoryh+X88QZ05aLbWmVPvrOP1JYPANOBEAyiysReMvJbfcfIYYIHlOj/Bzy1dtyWaCb2c8OZMDQTjWVew= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1749486009066446.3862260821635; Mon, 9 Jun 2025 09:20:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uOfDH-0008LR-5r; Mon, 09 Jun 2025 12:19:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uOfDF-0008Ki-4R for qemu-devel@nongnu.org; Mon, 09 Jun 2025 12:19:05 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uOfDD-0004TS-2R for qemu-devel@nongnu.org; Mon, 09 Jun 2025 12:19:04 -0400 Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-577-f6GpiiGCN8q2REjdlCZUgg-1; Mon, 09 Jun 2025 12:19:01 -0400 Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-6fad8b4c92cso120102506d6.0 for ; Mon, 09 Jun 2025 09:19:01 -0700 (PDT) Received: from x1.local ([85.131.185.92]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6fb09ab95c1sm53420546d6.15.2025.06.09.09.18.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 09:18:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1749485942; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GftW69IoIvz/x1xZNVGzz01cczNmp8jYtfQ1Gtjwb0s=; b=OYpcFNJeZYH0O1PbprcQheFZ3r1j8DfhabjtbjQR+YSqrI5nxsP4QS505xf0+i5B4mzSYO Vhno7ikpL9IyQ6x82rOHJ9w9Qg0kTZi6/RcrWvKWVIjiTrlC6qr4JvQyh5SOSpOedp51b7 QijABUT2J311alCf/uR5eVyK1aqt3cw= X-MC-Unique: f6GpiiGCN8q2REjdlCZUgg-1 X-Mimecast-MFC-AGG-ID: f6GpiiGCN8q2REjdlCZUgg_1749485941 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749485940; x=1750090740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GftW69IoIvz/x1xZNVGzz01cczNmp8jYtfQ1Gtjwb0s=; b=NPeFrNMhnyvaw1O3EogS9AWFx0lk2szjLpeXPRL9otaqiQxcBLzYtMByP7H5Uhksca REYcrieNmVULrX0INRkMthL/sPFqh81J/G3ASavgltironf/bRApaHgdo7fc4ClyLu4W ib0Wff8nKg/f3UXzWp1RYS00P6dwPsg9jkB7iHf5lDWelBXVcyZmzBXEykaMtoFGuFfX TwNeu+Cra6ZIs9jQpz/VoxaEqnVXfYBRDN/6C6HSpgmbTTnCJdhgRhoSA75vrsvMi+5U bD+RqCroySsxfx78/eGAYCsApumOoat1w40siTKK7GxoLmcL9s5Wb/sTPdIXVUsO7+wS HBbA== X-Gm-Message-State: AOJu0YwMknAVE8WIXp9L74yTO4AqHE7jYIkl45GrG8G/7BCRNyFxH3sf kJwur7oY4apGf1SNicbWw1JfU8r9WryJr16WgqQaD+aCsC7GH9U4S5XXIda/Vpyxx3exOLXAk21 HlXCC6mlJFPPMmhN5JOabffmD+zAEXWzmwrLkZ2ABaUTJ7k1UMjXi3HtALLOKHnBQkjI/jQoGEC HxSxPQnnPJN2BO8CmkAZ132WiCCcS8yHcoJbHU9w== X-Gm-Gg: ASbGncsgTXZRkLl14itQgK9pWf4k09eiIXTiKzPSm7sIuKXj+eqsl37K8ACwvwhXNI8 LTiRJi+Qw0H1RPLyEX4u04R3J7XTtd9lxUWyhfr76NPp2Ua9chYHnK0awx9Z8hTJMJizTYW/Z9m iWohKE6B32wDDyCUIsuTRnRoTmqnBbh74FxujCKwgaZ9Edaet8iNe9UvZHNvgV5qDAtOtRJa49K x3OF7llxODcM61p8z4aw5aTZ4L5TitsBRSKkr9CKIdBGfvXaJbfwOdl0yP4bBKBtK1QJhYrXTyC ocjZ2+rVKXAasw== X-Received: by 2002:a05:6214:2602:b0:6f2:d25e:8f60 with SMTP id 6a1803df08f44-6fb08ff5e10mr211735876d6.22.1749485940047; Mon, 09 Jun 2025 09:19:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHnLeSdOx25LaY53ALmIXXVSy+ck5Ba7YjZp22VZpyisx34lDsQcaTnx0qjm0XMOIlWIMfRTQ== X-Received: by 2002:a05:6214:2602:b0:6f2:d25e:8f60 with SMTP id 6a1803df08f44-6fb08ff5e10mr211735476d6.22.1749485939646; Mon, 09 Jun 2025 09:18:59 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: Juraj Marcin , peterx@redhat.com, "Dr . David Alan Gilbert" , Fabiano Rosas , Li Zhijian Subject: [PATCH v2 01/11] migration/hmp: Reorg "info migrate" once more Date: Mon, 9 Jun 2025 12:18:45 -0400 Message-ID: <20250609161855.6603-2-peterx@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250609161855.6603-1-peterx@redhat.com> References: <20250609161855.6603-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1749486011138116600 Content-Type: text/plain; charset="utf-8" Dave suggested the HMP output for "info migrate" can not only leverage the lines but also better grouping: https://lore.kernel.org/r/aC4_-nMc7FwsMf9p@gallifrey I followed Dave's suggestion, and some more modifications on top: - Added all elements into the picture - Use size_to_str() and drop most of the units: benefit is more friendly to most human eyes, bad side effect is lose of details, but that should be corner case per my uses, and one can still leverage the QMP interface when necessary. - Sub-grouping for "Transfers" ("Channels" and "Page Types"). - Better indentations Sample output: (qemu) info migrate Status: postcopy-active Time (ms): total=3D47317, setup=3D5, down=3D8 RAM info: Throughput (Mbps): 1342.83 Sizes: pagesize=3D4 KiB, total=3D4.02 GiB Transfers: transferred=3D1.41 GiB, remain=3D2.46 GiB Channels: precopy=3D15.2 MiB, multifd=3D0 B, postcopy=3D1.39 = GiB Page Types: normal=3D367713, zero=3D41195 Page Rates (pps): transfer=3D40900, dirty=3D4 Others: dirty_syncs=3D2, postcopy_req=3D57503 Suggested-by: Dr. David Alan Gilbert Tested-by: Li Zhijian Reviewed-by: Li Zhijian Acked-by: Dr. David Alan Gilbert Reviewed-by: Juraj Marcin Signed-off-by: Peter Xu --- migration/migration-hmp-cmds.c | 59 ++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c index e8a563c7d8..367ff6037f 100644 --- a/migration/migration-hmp-cmds.c +++ b/migration/migration-hmp-cmds.c @@ -69,7 +69,7 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) } =20 if (info->has_status) { - monitor_printf(mon, "Status: %s", + monitor_printf(mon, "Status: \t\t%s", MigrationStatus_str(info->status)); if (info->status =3D=3D MIGRATION_STATUS_FAILED && info->error_des= c) { monitor_printf(mon, " (%s)\n", info->error_desc); @@ -78,7 +78,7 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) } =20 if (info->total_time) { - monitor_printf(mon, "Time (ms): total=3D%" PRIu64, + monitor_printf(mon, "Time (ms): \t\ttotal=3D%" PRIu64, info->total_time); if (info->has_setup_time) { monitor_printf(mon, ", setup=3D%" PRIu64, @@ -110,48 +110,51 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdic= t) } =20 if (info->ram) { + g_autofree char *str_psize =3D size_to_str(info->ram->page_size); + g_autofree char *str_total =3D size_to_str(info->ram->total); + g_autofree char *str_transferred =3D size_to_str(info->ram->transf= erred); + g_autofree char *str_remaining =3D size_to_str(info->ram->remainin= g); + g_autofree char *str_precopy =3D size_to_str(info->ram->precopy_by= tes); + g_autofree char *str_multifd =3D size_to_str(info->ram->multifd_by= tes); + g_autofree char *str_postcopy =3D size_to_str(info->ram->postcopy_= bytes); + monitor_printf(mon, "RAM info:\n"); - monitor_printf(mon, " Throughput (Mbps): %0.2f\n", + monitor_printf(mon, " Throughput (Mbps): \t%0.2f\n", info->ram->mbps); - monitor_printf(mon, " Sizes (KiB): pagesize=3D%" PRIu64 - ", total=3D%" PRIu64 ",\n", - info->ram->page_size >> 10, - info->ram->total >> 10); - monitor_printf(mon, " transferred=3D%" PRIu64 - ", remain=3D%" PRIu64 ",\n", - info->ram->transferred >> 10, - info->ram->remaining >> 10); - monitor_printf(mon, " precopy=3D%" PRIu64 - ", multifd=3D%" PRIu64 - ", postcopy=3D%" PRIu64, - info->ram->precopy_bytes >> 10, - info->ram->multifd_bytes >> 10, - info->ram->postcopy_bytes >> 10); + monitor_printf(mon, " Sizes: \t\tpagesize=3D%s, total=3D%s\n", + str_psize, str_total); + monitor_printf(mon, " Transfers: \t\ttransferred=3D%s, remain=3D%= s\n", + str_transferred, str_remaining); + monitor_printf(mon, " Channels: \t\tprecopy=3D%s, " + "multifd=3D%s, postcopy=3D%s", + str_precopy, str_multifd, str_postcopy); =20 if (info->vfio) { - monitor_printf(mon, ", vfio=3D%" PRIu64, - info->vfio->transferred >> 10); + g_autofree char *str_vfio =3D size_to_str(info->vfio->transfer= red); + + monitor_printf(mon, ", vfio=3D%s", str_vfio); } monitor_printf(mon, "\n"); =20 - monitor_printf(mon, " Pages: normal=3D%" PRIu64 ", zero=3D%" PRIu= 64 - ", rate_per_sec=3D%" PRIu64 "\n", - info->ram->normal, - info->ram->duplicate, + monitor_printf(mon, " Page Types: \tnormal=3D%" PRIu64 + ", zero=3D%" PRIu64 "\n", + info->ram->normal, info->ram->duplicate); + monitor_printf(mon, " Page Rates (pps): \ttransfer=3D%" PRIu64, info->ram->pages_per_second); - monitor_printf(mon, " Others: dirty_syncs=3D%" PRIu64, - info->ram->dirty_sync_count); - if (info->ram->dirty_pages_rate) { - monitor_printf(mon, ", dirty_pages_rate=3D%" PRIu64, + monitor_printf(mon, ", dirty=3D%" PRIu64, info->ram->dirty_pages_rate); } + monitor_printf(mon, "\n"); + + monitor_printf(mon, " Others: \t\tdirty_syncs=3D%" PRIu64, + info->ram->dirty_sync_count); if (info->ram->postcopy_requests) { monitor_printf(mon, ", postcopy_req=3D%" PRIu64, info->ram->postcopy_requests); } if (info->ram->downtime_bytes) { - monitor_printf(mon, ", downtime_ram=3D%" PRIu64, + monitor_printf(mon, ", downtime_bytes=3D%" PRIu64, info->ram->downtime_bytes); } if (info->ram->dirty_sync_missed_zero_copy) { --=20 2.49.0