From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1644970471488291.74637451010494; Tue, 15 Feb 2022 16:14:31 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-650-Qc0JTEcPMTKtC1rjL5cNTQ-1; Tue, 15 Feb 2022 19:14:26 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id F1F331800D50; Wed, 16 Feb 2022 00:14:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D3B34519D5; Wed, 16 Feb 2022 00:14:21 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 243A54A7CA; Wed, 16 Feb 2022 00:14:21 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0CnEY022487 for ; Tue, 15 Feb 2022 19:12:50 -0500 Received: by smtp.corp.redhat.com (Postfix) id BA76D1457F07; Wed, 16 Feb 2022 00:12:49 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast07.extmail.prod.ext.rdu2.redhat.com [10.11.55.23]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B67631457F04 for ; Wed, 16 Feb 2022 00:12:49 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 521FB3C02B77 for ; Wed, 16 Feb 2022 00:12:49 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-568-un-WPYzfNzSfBetDowt5JQ-1; Tue, 15 Feb 2022 19:12:45 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id 4408E28008B; Wed, 16 Feb 2022 08:12:42 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id a85502edd628405b9a842850a7865d8f for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:43 CST X-MC-Unique: Qc0JTEcPMTKtC1rjL5cNTQ-1 X-MC-Unique: un-WPYzfNzSfBetDowt5JQ-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: a85502edd628405b9a842850a7865d8f X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 1/9] qemu: Refactor dirty page rate calculation status implementation Date: Wed, 16 Feb 2022 08:12:13 +0800 Message-Id: In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.85 on 10.11.54.7 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0CnEY022487 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970472778100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) For any virTypedParameter API normal practice is to use a string to expose the data, not the rather enum integer value. So let's drop the virDomainDirtyRateStatus in public header file and introduce internal enum def qemuMonitorDirtyRateStatus to describe the dirty page rate calculation status. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- include/libvirt/libvirt-domain.h | 18 ------------------ src/libvirt-domain.c | 4 ++-- src/qemu/qemu_driver.c | 9 ++++++--- src/qemu/qemu_monitor.h | 18 ++++++++++++++++-- src/qemu/qemu_monitor_json.c | 4 ++-- 5 files changed, 26 insertions(+), 27 deletions(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 8c16598..bf4746a 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -5241,24 +5241,6 @@ int virDomainGetMessages(virDomainPtr domain, char ***msgs, unsigned int flags); =20 -/** - * virDomainDirtyRateStatus: - * - * Details on the cause of a dirty rate calculation status. - */ -typedef enum { - VIR_DOMAIN_DIRTYRATE_UNSTARTED =3D 0, /* the dirtyrate calculation has - not been started */ - VIR_DOMAIN_DIRTYRATE_MEASURING =3D 1, /* the dirtyrate calculation is - measuring */ - VIR_DOMAIN_DIRTYRATE_MEASURED =3D 2, /* the dirtyrate calculation is - completed */ - -# ifdef VIR_ENUM_SENTINELS - VIR_DOMAIN_DIRTYRATE_LAST -# endif -} virDomainDirtyRateStatus; - int virDomainStartDirtyRateCalc(virDomainPtr domain, int seconds, unsigned int flags); diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index b8a6f10..f24d072 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11947,8 +11947,8 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * this format: * * "dirtyrate.calc_status" - the status of last memory dirty rate calc= ulation, - * returned as int from virDomainDirtyRateSt= atus - * enum. + * either of these 3 'unstarted,measuring,me= asured' + * values returned. * "dirtyrate.calc_start_time" - the start time of last memory dirty r= ate * calculation as long long. * "dirtyrate.calc_period" - the period of last memory dirty rate calc= ulation diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f262020..a22646c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18525,6 +18525,8 @@ qemuDomainGetStatsDirtyRateMon(virQEMUDriver *drive= r, return ret; } =20 +VIR_ENUM_DECL(qemuMonitorDirtyRateStatus); + static int qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, virDomainObj *dom, @@ -18539,8 +18541,9 @@ qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, if (qemuDomainGetStatsDirtyRateMon(driver, dom, &info) < 0) return -1; =20 - if (virTypedParamListAddInt(params, info.status, - "dirtyrate.calc_status") < 0) + if (virTypedParamListAddString(params, + qemuMonitorDirtyRateStatusTypeToString(= info.status), + "dirtyrate.calc_status") < 0) return -1; =20 if (virTypedParamListAddLLong(params, info.startTime, @@ -18551,7 +18554,7 @@ qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, "dirtyrate.calc_period") < 0) return -1; =20 - if ((info.status =3D=3D VIR_DOMAIN_DIRTYRATE_MEASURED) && + if ((info.status =3D=3D QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED) && virTypedParamListAddLLong(params, info.dirtyRate, "dirtyrate.megabytes_per_second") < 0) return -1; diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 1d21183..817391c 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1538,10 +1538,24 @@ int qemuMonitorStartDirtyRateCalc(qemuMonitor *mon, int seconds); =20 +/** + * qemuMonitorDirtyRateStatus: + * + * Details on the cause of a dirty page rate calculation status. + */ +typedef enum { + QEMU_MONITOR_DIRTYRATE_STATUS_UNSTARTED =3D 0, /* the dirtyrate calcul= ation has + not been started */ + QEMU_MONITOR_DIRTYRATE_STATUS_MEASURING, /* the dirtyrate calculati= on is + measuring */ + QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED, /* the dirtyrate calculati= on is + completed */ + QEMU_MONITOR_DIRTYRATE_STATUS_LAST, +} qemuMonitorDirtyRateStatus; + typedef struct _qemuMonitorDirtyRateInfo qemuMonitorDirtyRateInfo; struct _qemuMonitorDirtyRateInfo { - int status; /* the status of last dirtyrate calculation, - one of virDomainDirtyRateStatus */ + qemuMonitorDirtyRateStatus status; /* the status of last dirtyrate ca= lculation */ int calcTime; /* the period of dirtyrate calculation */ long long startTime; /* the start time of dirtyrate calculation */ long long dirtyRate; /* the dirtyrate in MiB/s */ diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 1de932f..b09ef12 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8764,7 +8764,7 @@ qemuMonitorJSONStartDirtyRateCalc(qemuMonitor *mon, =20 VIR_ENUM_DECL(qemuMonitorDirtyRateStatus); VIR_ENUM_IMPL(qemuMonitorDirtyRateStatus, - VIR_DOMAIN_DIRTYRATE_LAST, + QEMU_MONITOR_DIRTYRATE_STATUS_LAST, "unstarted", "measuring", "measured"); @@ -8792,7 +8792,7 @@ qemuMonitorJSONExtractDirtyRateInfo(virJSONValue *dat= a, /* `query-dirty-rate` replies `dirty-rate` data only if the status of = the latest * calculation is `measured`. */ - if ((info->status =3D=3D VIR_DOMAIN_DIRTYRATE_MEASURED) && + if ((info->status =3D=3D QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED) && (virJSONValueObjectGetNumberLong(data, "dirty-rate", &info->dirtyR= ate) < 0)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("query-dirty-rate reply was missing 'dirty-rate' = data")); --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1644970387512508.801142966499; Tue, 15 Feb 2022 16:13:07 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-362-9TZqC-vqMuuphvhT4tvCog-1; Tue, 15 Feb 2022 19:13:02 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BB8F0814243; Wed, 16 Feb 2022 00:12:56 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E3809519D3; Wed, 16 Feb 2022 00:12:54 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id E64B11809C88; Wed, 16 Feb 2022 00:12:51 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0Cmvu022477 for ; Tue, 15 Feb 2022 19:12:49 -0500 Received: by smtp.corp.redhat.com (Postfix) id 54EF441136EB; Wed, 16 Feb 2022 00:12:48 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4FE7E41136E0 for ; Wed, 16 Feb 2022 00:12:48 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 34F16185A7A4 for ; Wed, 16 Feb 2022 00:12:48 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-147-lRt91QBNOO-Gm3AS6t6MdA-1; Tue, 15 Feb 2022 19:12:46 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id 5C0022800AA; Wed, 16 Feb 2022 08:12:43 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id 1d9d35d9844843d691e7721bedb2c09e for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:44 CST X-MC-Unique: 9TZqC-vqMuuphvhT4tvCog-1 X-MC-Unique: lRt91QBNOO-Gm3AS6t6MdA-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: 1d9d35d9844843d691e7721bedb2c09e X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 2/9] qemu_capabilities: Introduce QEMU_CAPS_CALC_DIRTY_RATE capability Date: Wed, 16 Feb 2022 08:12:14 +0800 Message-Id: In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0Cmvu022477 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970388499100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) calc-dirty-rate command was introduced since qemu >=3D5.2.0. Introduce QEMU_CAPS_CALC_DIRTY_RATE capability definition. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml | 1 + tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 + 16 files changed, 17 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 1b28c3f..968185e 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -663,6 +663,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "device.json+hotplug", /* QEMU_CAPS_DEVICE_JSON */ "hvf", /* QEMU_CAPS_HVF */ "virtio-mem-pci.prealloc", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_PC= I_PREALLOC */ + "calc-dirty-rate", /* QEMU_CAPS_CALC_DIRTY_RATE */ ); =20 =20 @@ -1229,6 +1230,7 @@ struct virQEMUCapsStringFlags virQEMUCapsCommands[] = =3D { { "set-action", QEMU_CAPS_SET_ACTION }, { "query-dirty-rate", QEMU_CAPS_QUERY_DIRTY_RATE }, { "sev-inject-launch-secret", QEMU_CAPS_SEV_INJECT_LAUNCH_SECRET }, + { "calc-dirty-rate", QEMU_CAPS_CALC_DIRTY_RATE }, }; =20 struct virQEMUCapsStringFlags virQEMUCapsMigration[] =3D { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 6ff0b7a..a295bf0 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -638,6 +638,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ QEMU_CAPS_DEVICE_JSON, /* -device accepts JSON (and works with hot-unp= lug) */ QEMU_CAPS_HVF, /* Whether Hypervisor.framework is available */ QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_PREALLOC, /* -device virtio-mem-pci.pr= ealloc=3D */ + QEMU_CAPS_CALC_DIRTY_RATE, /* accepts calc-dirty-rate */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_5.2.0.aarch64.xml index e809b95..9f14d59 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.aarch64.xml @@ -183,6 +183,7 @@ + 5002000 0 61700243 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_5.2.0.ppc64.xml index 0cbbffe..e050514 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.ppc64.xml @@ -189,6 +189,7 @@ + 5002000 0 42900243 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml b/tests/qemu= capabilitiesdata/caps_5.2.0.riscv64.xml index 13a6967..4b123d4 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.riscv64.xml @@ -173,6 +173,7 @@ + 5002000 0 0 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_5.2.0.s390x.xml index 518bb7a..bc3c3c3 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.s390x.xml @@ -140,6 +140,7 @@ + 5002000 0 39100243 diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.2.0.x86_64.xml index 64e7bc2..70ad14f 100644 --- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.xml @@ -225,6 +225,7 @@ + 5002000 0 43100243 diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_6.0.0.aarch64.xml index 743f7d9..9d501f2 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.aarch64.xml @@ -191,6 +191,7 @@ + 6000000 0 61700242 diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml b/tests/qemuca= pabilitiesdata/caps_6.0.0.s390x.xml index b034ffd..02b24f5 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.s390x.xml @@ -148,6 +148,7 @@ + 6000000 0 39100242 diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_6.0.0.x86_64.xml index b213abb..8ea688f 100644 --- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.xml @@ -234,6 +234,7 @@ + 6000000 0 43100242 diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_6.1.0.x86_64.xml index d9bdcf9..ba1aecc 100644 --- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.xml @@ -238,6 +238,7 @@ + 6001000 0 43100243 diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_6.2.0.aarch64.xml index f200a7d..17d563e 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.aarch64.xml @@ -202,6 +202,7 @@ + 6001050 0 61700244 diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_6.2.0.ppc64.xml index ae5c1d3..eaa0ccc 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml @@ -199,6 +199,7 @@ + 6002000 0 42900244 diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_6.2.0.x86_64.xml index 103d00f..f3e86de 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -239,6 +239,7 @@ + 6002000 0 43100244 diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_7.0.0.ppc64.xml index 88eee87..e9e9b43 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml @@ -200,6 +200,7 @@ + 6002050 0 42900243 diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_7.0.0.x86_64.xml index 07d49a8..9ca33f9 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -241,6 +241,7 @@ + 6002050 0 43100243 --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1644970481634707.3764816091874; Tue, 15 Feb 2022 16:14:41 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-329-fXdHHUWMP_S4JxB1cK3_WA-1; Tue, 15 Feb 2022 19:14:36 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CA3A8100C62B; Wed, 16 Feb 2022 00:14:31 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AAF82519D8; Wed, 16 Feb 2022 00:14:31 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7D4FF4A7CD; Wed, 16 Feb 2022 00:14:31 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0CrRi022522 for ; Tue, 15 Feb 2022 19:12:53 -0500 Received: by smtp.corp.redhat.com (Postfix) id E1744200A39F; Wed, 16 Feb 2022 00:12:52 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast09.extmail.prod.ext.rdu2.redhat.com [10.11.55.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DCB062144B22 for ; Wed, 16 Feb 2022 00:12:49 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 298F629AB3E1 for ; Wed, 16 Feb 2022 00:12:49 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-613-1Vi6dbbjPfqeG3Rxr0VRtg-1; Tue, 15 Feb 2022 19:12:47 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id 75454280029; Wed, 16 Feb 2022 08:12:44 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id 328f6f1756304432b5a0b87d5a0293f3 for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:45 CST X-MC-Unique: fXdHHUWMP_S4JxB1cK3_WA-1 X-MC-Unique: 1Vi6dbbjPfqeG3Rxr0VRtg-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: 328f6f1756304432b5a0b87d5a0293f3 X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 3/9] qemu_driver: Probe capability before calculating dirty page rate Date: Wed, 16 Feb 2022 08:12:15 +0800 Message-Id: <7aa2cec000317ff7c26a4a3bb5e1fdb0ec6f31a6.1644970010.git.huangy81@chinatelecom.cn> In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0CrRi022522 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970482798100003 From: Hyman Huang(=E9=BB=84=E5=8B=87) Probing QEMU_CAPS_CALC_DIRTY_RATE capability in advance in case of failure when calculating dirty page rate. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_driver.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a22646c..18775e7 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -20691,6 +20691,13 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom, if (virDomainStartDirtyRateCalcEnsureACL(dom->conn, vm->def) < 0) goto cleanup; =20 + priv =3D vm->privateData; + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CALC_DIRTY_RATE)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("QEMU does not support calculating dirty page rat= e")); + goto cleanup; + } + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; =20 @@ -20702,7 +20709,6 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom, =20 VIR_DEBUG("Calculate dirty rate in next %d seconds", seconds); =20 - priv =3D vm->privateData; qemuDomainObjEnterMonitor(driver, vm); ret =3D qemuMonitorStartDirtyRateCalc(priv->mon, seconds); =20 --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1644970503238217.6739781707695; Tue, 15 Feb 2022 16:15:03 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-86-LU_xfckDMDKo-0NnM0OgJg-1; Tue, 15 Feb 2022 19:14:31 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9FAB61853028; Wed, 16 Feb 2022 00:14:26 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5A570519D8; Wed, 16 Feb 2022 00:14:26 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 2D5A51809C87; Wed, 16 Feb 2022 00:14:26 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0ColI022492 for ; Tue, 15 Feb 2022 19:12:50 -0500 Received: by smtp.corp.redhat.com (Postfix) id 9326A492D42; Wed, 16 Feb 2022 00:12:50 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast09.extmail.prod.ext.rdu2.redhat.com [10.11.55.25]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8E0DC492D1C for ; Wed, 16 Feb 2022 00:12:50 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7518929AA38B for ; Wed, 16 Feb 2022 00:12:50 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-589-XApAngT0ON-GTRHAnIAU-A-1; Tue, 15 Feb 2022 19:12:48 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id 9AFAB2800AF; Wed, 16 Feb 2022 08:12:45 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id ed05669fcb414b649530f58c4b0c9ce4 for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:46 CST X-MC-Unique: LU_xfckDMDKo-0NnM0OgJg-1 X-MC-Unique: XApAngT0ON-GTRHAnIAU-A-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: ed05669fcb414b649530f58c4b0c9ce4 X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 4/9] qemu_capabilities: Introduce QEMU_CAPS_DIRTYRATE_MODE capability Date: Wed, 16 Feb 2022 08:12:16 +0800 Message-Id: <7404ea9714c4dfdd431b22a73fff87fdf6225a6f.1644970010.git.huangy81@chinatelecom.cn> In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.85 on 10.11.54.9 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0ColI022492 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970505057100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) mode option of calc-dirty-rate command since qemu >=3D6.2.0. Introduce QEMU_CAPS_DIRTYRATE_MODE capability definition. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_capabilities.c | 2 ++ src/qemu/qemu_capabilities.h | 1 + tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml | 1 + 6 files changed, 7 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 968185e..529e9ce 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -664,6 +664,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "hvf", /* QEMU_CAPS_HVF */ "virtio-mem-pci.prealloc", /* QEMU_CAPS_DEVICE_VIRTIO_MEM_PC= I_PREALLOC */ "calc-dirty-rate", /* QEMU_CAPS_CALC_DIRTY_RATE */ + "dirtyrate-param.mode", /* QEMU_CAPS_DIRTYRATE_MODE */ ); =20 =20 @@ -1622,6 +1623,7 @@ static struct virQEMUCapsStringFlags virQEMUCapsQMPSc= hemaQueries[] =3D { { "screendump/arg-type/device", QEMU_CAPS_SCREENDUMP_DEVICE }, { "set-numa-node/arg-type/+hmat-lb", QEMU_CAPS_NUMA_HMAT }, { "object-add/arg-type/+sev-guest/kernel-hashes", QEMU_CAPS_SEV_GUEST_= KERNEL_HASHES }, + { "calc-dirty-rate/arg-type/mode", QEMU_CAPS_DIRTYRATE_MODE }, }; =20 typedef struct _virQEMUCapsObjectTypeProps virQEMUCapsObjectTypeProps; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a295bf0..f6188b4 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -639,6 +639,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ QEMU_CAPS_HVF, /* Whether Hypervisor.framework is available */ QEMU_CAPS_DEVICE_VIRTIO_MEM_PCI_PREALLOC, /* -device virtio-mem-pci.pr= ealloc=3D */ QEMU_CAPS_CALC_DIRTY_RATE, /* accepts calc-dirty-rate */ + QEMU_CAPS_DIRTYRATE_MODE , /* calc-dirty-rate accepts mode parameter */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_6.2.0.ppc64.xml index eaa0ccc..9fe9c27 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml @@ -200,6 +200,7 @@ + 6002000 0 42900244 diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_6.2.0.x86_64.xml index f3e86de..d77907a 100644 --- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml @@ -240,6 +240,7 @@ + 6002000 0 43100244 diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_7.0.0.ppc64.xml index e9e9b43..5d7f283 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.ppc64.xml @@ -201,6 +201,7 @@ + 6002050 0 42900243 diff --git a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_7.0.0.x86_64.xml index 9ca33f9..ae800ab 100644 --- a/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.0.0.x86_64.xml @@ -242,6 +242,7 @@ + 6002050 0 43100243 --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1644970478896735.4574609725406; Tue, 15 Feb 2022 16:14:38 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-487-A7v9BgikOH-OEHOZcomhgQ-1; Tue, 15 Feb 2022 19:14:36 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7AB028144E8; Wed, 16 Feb 2022 00:14:29 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 25272105B219; Wed, 16 Feb 2022 00:14:29 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id EA62D4A7CA; Wed, 16 Feb 2022 00:14:28 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0CpIA022498 for ; Tue, 15 Feb 2022 19:12:51 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6327EC23DB4; Wed, 16 Feb 2022 00:12:51 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 5EE73C23DB3 for ; Wed, 16 Feb 2022 00:12:51 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4758B85A5BC for ; Wed, 16 Feb 2022 00:12:51 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-568-EcDhqxZLP9WA_Xj82sSLoA-1; Tue, 15 Feb 2022 19:12:49 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id BBDDA2800AA; Wed, 16 Feb 2022 08:12:46 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id f12163373834476eb91c7b26d0c6e230 for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:47 CST X-MC-Unique: A7v9BgikOH-OEHOZcomhgQ-1 X-MC-Unique: EcDhqxZLP9WA_Xj82sSLoA-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: f12163373834476eb91c7b26d0c6e230 X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 5/9] include: Introduce virDomainDirtyRateCalcFlags Date: Wed, 16 Feb 2022 08:12:17 +0800 Message-Id: <4c2173213a7b9f25a516b719784a320deeadd4b0.1644970010.git.huangy81@chinatelecom.cn> In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.85 on 10.11.54.8 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0CpIA022498 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970480785100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) Introduce virDomainDirtyRateCalcFlags to get ready for adding mode parameter to qemuDomainStartDirtyRateCalc. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- include/libvirt/libvirt-domain.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index bf4746a..a474e83 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -5241,6 +5241,19 @@ int virDomainGetMessages(virDomainPtr domain, char ***msgs, unsigned int flags); =20 +/** + * virDomainDirtyRateCalcFlags: + * + * Flags OR'ed together to provide specific behaviour when calculating dir= ty page + * rate for a Domain + * + */ +typedef enum { + VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING =3D 0, /* default mode = - page-sampling */ + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP =3D 1 << 0, /* dirty-bitmap = mode */ + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING =3D 1 << 1, /* dirty-ring mo= de */ +} virDomainDirtyRateCalcFlags; + int virDomainStartDirtyRateCalc(virDomainPtr domain, int seconds, unsigned int flags); --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 164497040127128.935386019240582; Tue, 15 Feb 2022 16:13:21 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-484-TBPQY4kqMlOH5FH8ybPkaA-1; Tue, 15 Feb 2022 19:13:18 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7FC541006AA0; Wed, 16 Feb 2022 00:13:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3CCA8519D9; Wed, 16 Feb 2022 00:13:13 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D8DCE4BB7C; Wed, 16 Feb 2022 00:13:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0Cqho022510 for ; Tue, 15 Feb 2022 19:12:52 -0500 Received: by smtp.corp.redhat.com (Postfix) id 33CD241136EA; Wed, 16 Feb 2022 00:12:52 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2F4E641136E0 for ; Wed, 16 Feb 2022 00:12:52 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 18885800B24 for ; Wed, 16 Feb 2022 00:12:52 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-613-oYZC__BFN8a70AZz2QhUng-3; Tue, 15 Feb 2022 19:12:49 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id CB8FD280029; Wed, 16 Feb 2022 08:12:48 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id ad648103ac1041a0a0e571d4d880b597 for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:48 CST X-MC-Unique: TBPQY4kqMlOH5FH8ybPkaA-1 X-MC-Unique: oYZC__BFN8a70AZz2QhUng-3 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: ad648103ac1041a0a0e571d4d880b597 X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 6/9] qemu_driver: Add mode parameter to qemuDomainStartDirtyRateCalc Date: Wed, 16 Feb 2022 08:12:18 +0800 Message-Id: In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.84 on 10.11.54.1 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0Cqho022510 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970402240100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) Add mode parameter to qemuDomainStartDirtyRateCalc API, 'mode' option of 'calc-dirty-rate' command was introduced since qemu >=3D 6.2. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_driver.c | 3 ++- src/qemu/qemu_monitor.c | 5 +++-- src/qemu/qemu_monitor.h | 17 ++++++++++++++++- src/qemu/qemu_monitor_json.c | 16 ++++++++++++++-- src/qemu/qemu_monitor_json.h | 3 ++- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 18775e7..2f4415e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -20671,6 +20671,7 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom, virQEMUDriver *driver =3D dom->conn->privateData; virDomainObj *vm =3D NULL; qemuDomainObjPrivate *priv; + qemuMonitorDirtyRateCalcMode mode =3D QEMU_MONITOR_DIRTYRATE_CALC_MODE= _PAGE_SAMPLING; int ret =3D -1; =20 virCheckFlags(0, -1); @@ -20710,7 +20711,7 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom, VIR_DEBUG("Calculate dirty rate in next %d seconds", seconds); =20 qemuDomainObjEnterMonitor(driver, vm); - ret =3D qemuMonitorStartDirtyRateCalc(priv->mon, seconds); + ret =3D qemuMonitorStartDirtyRateCalc(priv->mon, seconds, mode); =20 qemuDomainObjExitMonitor(driver, vm); =20 diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index dc81e41..0ff938a 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4475,13 +4475,14 @@ qemuMonitorTransactionBackup(virJSONValue *actions, =20 int qemuMonitorStartDirtyRateCalc(qemuMonitor *mon, - int seconds) + int seconds, + qemuMonitorDirtyRateCalcMode mode) { VIR_DEBUG("seconds=3D%d", seconds); =20 QEMU_CHECK_MONITOR(mon); =20 - return qemuMonitorJSONStartDirtyRateCalc(mon, seconds); + return qemuMonitorJSONStartDirtyRateCalc(mon, seconds, mode); } =20 =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 817391c..efdecba 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1534,9 +1534,24 @@ qemuMonitorTransactionBackup(virJSONValue *actions, const char *bitmap, qemuMonitorTransactionBackupSyncMode syncmode= ); =20 +/** + * qemuMonitorDirtyRateCalcMode: + * + * Dirty page rate calculation mode used during measurement. + */ +typedef enum { + QEMU_MONITOR_DIRTYRATE_CALC_MODE_PAGE_SAMPLING =3D 0, + QEMU_MONITOR_DIRTYRATE_CALC_MODE_DIRTY_BITMAP, + QEMU_MONITOR_DIRTYRATE_CALC_MODE_DIRTY_RING, + QEMU_MONITOR_DIRTYRATE_CALC_MODE_LAST, +} qemuMonitorDirtyRateCalcMode; + +VIR_ENUM_DECL(qemuMonitorDirtyRateCalcMode); + int qemuMonitorStartDirtyRateCalc(qemuMonitor *mon, - int seconds); + int seconds, + qemuMonitorDirtyRateCalcMode mode); =20 /** * qemuMonitorDirtyRateStatus: diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index b09ef12..93288ab 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8740,18 +8740,30 @@ qemuMonitorJSONGetCPUMigratable(qemuMonitor *mon, migratable); } =20 +VIR_ENUM_IMPL(qemuMonitorDirtyRateCalcMode, + QEMU_MONITOR_DIRTYRATE_CALC_MODE_LAST, + "page-sampling", + "dirty-bitmap", + "dirty-ring"); =20 int qemuMonitorJSONStartDirtyRateCalc(qemuMonitor *mon, - int seconds) + int seconds, + qemuMonitorDirtyRateCalcMode mode) { g_autoptr(virJSONValue) cmd =3D NULL; g_autoptr(virJSONValue) reply =3D NULL; + const char *modestr =3D NULL; + + if (mode !=3D QEMU_MONITOR_DIRTYRATE_CALC_MODE_PAGE_SAMPLING) + modestr =3D qemuMonitorDirtyRateCalcModeTypeToString(mode); =20 if (!(cmd =3D qemuMonitorJSONMakeCommand("calc-dirty-rate", "i:calc-time", seconds, - NULL))) + "S:mode", modestr, + NULL))) { return -1; + } =20 if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) return -1; diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index eea3478..8e34f3b 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -853,7 +853,8 @@ qemuMonitorJSONGetCPUMigratable(qemuMonitor *mon, =20 int qemuMonitorJSONStartDirtyRateCalc(qemuMonitor *mon, - int seconds); + int seconds, + qemuMonitorDirtyRateCalcMode mode); =20 int qemuMonitorJSONQueryDirtyRate(qemuMonitor *mon, --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1644970482698689.9899368021548; Tue, 15 Feb 2022 16:14:42 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-418-mVOlWMxgMPiNGpYp2UQhig-1; Tue, 15 Feb 2022 19:14:39 -0500 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3861D83DD26; Wed, 16 Feb 2022 00:14:34 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 17187105B207; Wed, 16 Feb 2022 00:14:34 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id DC7144A700; Wed, 16 Feb 2022 00:14:33 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0CxT8022558 for ; Tue, 15 Feb 2022 19:12:59 -0500 Received: by smtp.corp.redhat.com (Postfix) id 5CC9376C2; Wed, 16 Feb 2022 00:12:59 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast03.extmail.prod.ext.rdu2.redhat.com [10.11.55.19]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 24B4B76F0 for ; Wed, 16 Feb 2022 00:12:55 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A9A53811E78 for ; Wed, 16 Feb 2022 00:12:55 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-526-yBY9ELkwO-SzjjCeZqWthQ-1; Tue, 15 Feb 2022 19:12:53 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id EB015280029; Wed, 16 Feb 2022 08:12:49 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id a7eed601d06147bab66d42d149a8d622 for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:51 CST X-MC-Unique: mVOlWMxgMPiNGpYp2UQhig-1 X-MC-Unique: yBY9ELkwO-SzjjCeZqWthQ-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: a7eed601d06147bab66d42d149a8d622 X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 7/9] qemu_driver: Extend flags parameter of virDomainStartDirtyRateCalc Date: Wed, 16 Feb 2022 08:12:19 +0800 Message-Id: <70f17de2bab7eb4d222657f4103c1fbc8e8035b4.1644970010.git.huangy81@chinatelecom.cn> In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0CxT8022558 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970484807100005 From: Hyman Huang(=E9=BB=84=E5=8B=87) Extend flags parameter of virDomainStartDirtyRateCalc as a superset of virDomainDirtyRateCalcFlags, parse the flags and handle it correspondingly in qemuDomainStartDirtyRateCalc. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_driver.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 2f4415e..3ac5f01 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -20674,7 +20674,9 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom, qemuMonitorDirtyRateCalcMode mode =3D QEMU_MONITOR_DIRTYRATE_CALC_MODE= _PAGE_SAMPLING; int ret =3D -1; =20 - virCheckFlags(0, -1); + virCheckFlags(VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING | + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP | + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING, -1); =20 if (seconds < MIN_DIRTYRATE_CALC_PERIOD || seconds > MAX_DIRTYRATE_CALC_PERIOD) { @@ -20699,6 +20701,25 @@ qemuDomainStartDirtyRateCalc(virDomainPtr dom, goto cleanup; } =20 + if (flags & VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP) { + mode =3D QEMU_MONITOR_DIRTYRATE_CALC_MODE_DIRTY_BITMAP; + } else if (flags & VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING) { + if (vm->def->features[VIR_DOMAIN_FEATURE_KVM] !=3D VIR_TRISTATE_SW= ITCH_ON || + vm->def->kvm_features->features[VIR_DOMAIN_KVM_DIRTY_RING] != =3D VIR_TRISTATE_SWITCH_ON) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("dirty-ring calculation mode requires dirty-r= ing feature enabled.")); + goto cleanup; + } + mode =3D QEMU_MONITOR_DIRTYRATE_CALC_MODE_DIRTY_RING; + } + + if (mode !=3D QEMU_MONITOR_DIRTYRATE_CALC_MODE_PAGE_SAMPLING && + !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DIRTYRATE_MODE)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("QEMU does not support dirty page rate calculatio= n mode.")); + goto cleanup; + } + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; =20 --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1644970425421186.83564139010502; Tue, 15 Feb 2022 16:13:45 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-323-VLjBFh0XOa6ssxI59ESosg-1; Tue, 15 Feb 2022 19:13:41 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1223D824F83; Wed, 16 Feb 2022 00:13:36 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E78295C2F3; Wed, 16 Feb 2022 00:13:35 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id BC89F4A7CA; Wed, 16 Feb 2022 00:13:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0CvMP022549 for ; Tue, 15 Feb 2022 19:12:57 -0500 Received: by smtp.corp.redhat.com (Postfix) id 1C02240FF409; Wed, 16 Feb 2022 00:12:57 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 178A240FF404 for ; Wed, 16 Feb 2022 00:12:57 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id F3B1B802E5E for ; Wed, 16 Feb 2022 00:12:56 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-328-b1h-l4XJMamNIuaOXiEuaQ-1; Tue, 15 Feb 2022 19:12:54 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id 0330B2800AA; Wed, 16 Feb 2022 08:12:52 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id 6cb709fadca3461994672fb76532b230 for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:52 CST X-MC-Unique: VLjBFh0XOa6ssxI59ESosg-1 X-MC-Unique: b1h-l4XJMamNIuaOXiEuaQ-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: 6cb709fadca3461994672fb76532b230 X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 8/9] virsh: Add mode option to domdirtyrate-calc virsh api Date: Wed, 16 Feb 2022 08:12:20 +0800 Message-Id: <55b42309b0c1052d84ff26fa1915cdf81883bc5b.1644970010.git.huangy81@chinatelecom.cn> In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.84 on 10.11.54.2 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0CvMP022549 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970443533100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) Extend domdirtyrate-calc virsh api with mode option, either of these three options "page-sampling,dirty-bitmap,dirty-ring" can be specified when calculating dirty page rate. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- docs/manpages/virsh.rst | 7 +++++-- src/libvirt-domain.c | 12 +++++++++++- tools/virsh-completer-domain.c | 17 +++++++++++++++++ tools/virsh-completer-domain.h | 4 ++++ tools/virsh-domain.c | 42 ++++++++++++++++++++++++++++++++++++++= +++- tools/virsh-domain.h | 9 +++++++++ 6 files changed, 87 insertions(+), 4 deletions(-) diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst index 429879d..00d21a1 100644 --- a/docs/manpages/virsh.rst +++ b/docs/manpages/virsh.rst @@ -1717,13 +1717,16 @@ domdirtyrate-calc :: =20 domdirtyrate-calc [--seconds ] + --mode=3D[page-sampling | dirty-bitmap | dirty-ring] =20 Calculate an active domain's memory dirty rate which may be expected by user in order to decide whether it's proper to be migrated out or not. The ``seconds`` parameter can be used to calculate dirty rate in a specific time which allows 60s at most now and would be default to 1s -if missing. The calculated dirty rate information is available by calling -'domstats --dirtyrate'. +if missing. These three *page-sampling, dirty-bitmap, dirty-ring* modes +are mutually exclusive and alternative when specify calculation mode, +*page-sampling* is the default mode if missing. The calculated dirty +rate information is available by calling 'domstats --dirtyrate'. =20 =20 domdisplay diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index f24d072..f70eff3 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -13313,7 +13313,7 @@ virDomainGetMessages(virDomainPtr domain, * virDomainStartDirtyRateCalc: * @domain: a domain object * @seconds: specified calculating time in seconds - * @flags: extra flags; not used yet, so callers should always pass 0 + * @flags: bitwise-OR of supported virDomainDirtyRateCalcFlags * * Calculate the current domain's memory dirty rate in next @seconds. * The calculated dirty rate information is available by calling @@ -13337,6 +13337,16 @@ virDomainStartDirtyRateCalc(virDomainPtr domain, =20 virCheckReadOnlyGoto(conn->flags, error); =20 + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING, + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP, + error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING, + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING, + error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP, + VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING, + error); + if (conn->driver->domainStartDirtyRateCalc) { int ret; ret =3D conn->driver->domainStartDirtyRateCalc(domain, seconds, fl= ags); diff --git a/tools/virsh-completer-domain.c b/tools/virsh-completer-domain.c index b4e744c..1c2df56 100644 --- a/tools/virsh-completer-domain.c +++ b/tools/virsh-completer-domain.c @@ -1150,3 +1150,20 @@ virshDomainNumatuneModeCompleter(vshControl *ctl G_G= NUC_UNUSED, =20 return ret; } + + +char ** +virshDomainDirtyRateCalcModeCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int flags) +{ + const char *modes[] =3D {"page-sampling", "dirty-bitmap", "dirty-ring"= , NULL}; + const char *mode =3D NULL; + + virCheckFlags(0, NULL); + + if (vshCommandOptStringQuiet(ctl, cmd, "mode", &mode) < 0) + return NULL; + + return virshCommaStringListComplete(mode, modes); +} diff --git a/tools/virsh-completer-domain.h b/tools/virsh-completer-domain.h index 94bb3b5..044c675 100644 --- a/tools/virsh-completer-domain.h +++ b/tools/virsh-completer-domain.h @@ -186,3 +186,7 @@ char ** virshDomainNumatuneModeCompleter(vshControl *ctl, const vshCmd *cmd, unsigned int flags); +char ** +virshDomainDirtyRateCalcModeCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int flags); diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 4ff531f..1902eb9 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -14484,14 +14484,28 @@ static const vshCmdOptDef opts_domdirtyrate_calc[= ] =3D { .help =3D N_("calculate memory dirty rate within specified seconds, " "the supported value range from 1 to 60, default to 1.") }, + {.name =3D "mode", + .type =3D VSH_OT_STRING, + .completer =3D virshDomainDirtyRateCalcModeCompleter, + .help =3D N_("dirty page rate calculation mode, either of these 3 opt= ions " + "'page-sampling,dirty-bitmap,dirty-ring' can be specified.= ") + }, {.name =3D NULL} }; =20 +VIR_ENUM_IMPL(virshDomainDirtyRateCalcMode, + VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_LAST, + "page-sampling", + "dirty-bitmap", + "dirty-ring"); + static bool cmdDomDirtyRateCalc(vshControl *ctl, const vshCmd *cmd) { g_autoptr(virshDomain) dom =3D NULL; int seconds =3D 1; /* the default value is 1 */ + const char *modestr =3D NULL; + unsigned int flags =3D 0; =20 if (!(dom =3D virshCommandOptDomain(ctl, cmd, NULL))) return false; @@ -14499,7 +14513,33 @@ cmdDomDirtyRateCalc(vshControl *ctl, const vshCmd = *cmd) if (vshCommandOptInt(ctl, cmd, "seconds", &seconds) < 0) return false; =20 - if (virDomainStartDirtyRateCalc(dom, seconds, 0) < 0) + if (vshCommandOptStringReq(ctl, cmd, "mode", &modestr) < 0) + return false; + + if (modestr) { + int mode =3D virshDomainDirtyRateCalcModeTypeFromString(modestr); + + if (mode < 0) { + vshError(ctl, _("Unknown calculation mode '%s'"), modestr); + return false; + } + + switch ((virshDomainDirtyRateCalcMode) mode) { + case VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_PAGE_SAMPLING: + flags |=3D VIR_DOMAIN_DIRTYRATE_MODE_PAGE_SAMPLING; + break; + case VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_DIRTY_BITMAP: + flags |=3D VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_BITMAP;; + break; + case VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_DIRTY_RING: + flags |=3D VIR_DOMAIN_DIRTYRATE_MODE_DIRTY_RING;; + break; + case VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_LAST: + break; + } + } + + if (virDomainStartDirtyRateCalc(dom, seconds, flags) < 0) return false; =20 vshPrintExtra(ctl, _("Start to calculate domain's memory " diff --git a/tools/virsh-domain.h b/tools/virsh-domain.h index cf5ce28..6a94438 100644 --- a/tools/virsh-domain.h +++ b/tools/virsh-domain.h @@ -46,6 +46,15 @@ typedef enum { =20 VIR_ENUM_DECL(virshDomainInterfaceSourceMode); =20 +typedef enum { + VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_PAGE_SAMPLING, + VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_DIRTY_BITMAP, + VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_DIRTY_RING, + VIRSH_DOMAIN_DIRTYRATE_CALC_MODE_LAST, +} virshDomainDirtyRateCalcMode; + +VIR_ENUM_DECL(virshDomainDirtyRateCalcMode); + extern const vshCmdDef domManagementCmds[]; =20 VIR_ENUM_DECL(virshDomainProcessSignal); --=20 1.8.3.1 From nobody Wed May 15 03:13:00 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1644970429718175.5459140568778; Tue, 15 Feb 2022 16:13:49 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-223-FNJh4TUiPTGIwhLXz48y8w-1; Tue, 15 Feb 2022 19:13:45 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 92E0A835BBF; Wed, 16 Feb 2022 00:13:39 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 46B836E1F4; Wed, 16 Feb 2022 00:13:39 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 1A2BB4A7C8; Wed, 16 Feb 2022 00:13:39 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 21G0D4YM022571 for ; Tue, 15 Feb 2022 19:13:04 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6A3492026990; Wed, 16 Feb 2022 00:13:04 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast04.extmail.prod.ext.rdu2.redhat.com [10.11.55.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6522E2026987 for ; Wed, 16 Feb 2022 00:13:01 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5AC351044560 for ; Wed, 16 Feb 2022 00:13:01 +0000 (UTC) Received: from chinatelecom.cn (prt-mail.chinatelecom.cn [42.123.76.222]) by relay.mimecast.com with ESMTP id us-mta-44-ZQ0gcbz0M6eSO-LW3OfBmQ-1; Tue, 15 Feb 2022 19:12:56 -0500 Received: from clientip-171.223.98.212 (unknown [172.18.0.218]) by chinatelecom.cn (HERMES) with SMTP id F1D14280029; Wed, 16 Feb 2022 08:12:53 +0800 (CST) Received: from ([172.18.0.218]) by app0025 with ESMTP id 1cbf0636b81a4a2590d47ef670e9d99a for libvir-list@redhat.com; Wed, 16 Feb 2022 08:12:54 CST X-MC-Unique: FNJh4TUiPTGIwhLXz48y8w-1 X-MC-Unique: ZQ0gcbz0M6eSO-LW3OfBmQ-1 HMM_SOURCE_IP: 172.18.0.218:48928.781884105 HMM_ATTACHE_NUM: 0000 HMM_SOURCE_TYPE: SMTP X-189-SAVE-TO-SEND: +huangy81@chinatelecom.cn X-Transaction-ID: 1cbf0636b81a4a2590d47ef670e9d99a X-Real-From: huangy81@chinatelecom.cn X-Receive-IP: 172.18.0.218 X-MEDUSA-Status: 0 From: huangy81@chinatelecom.cn To: libvir-list@redhat.com Subject: [PATCH v4 9/9] qemu_driver: Add calc_mode for dirtyrate statistics Date: Wed, 16 Feb 2022 08:12:21 +0800 Message-Id: <09d7f882a242a7a3da479a855a3f9c471543d532.1644970010.git.huangy81@chinatelecom.cn> In-Reply-To: References: In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Mimecast-Spam-Signature: yes X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 21G0D4YM022571 X-loop: libvir-list@redhat.com Cc: huangy81@chinatelecom.cn X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1644970430494100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) Add calc_mode for dirtyrate statistics retured by virsh domstats --dirtyrate api, also add vcpu dirtyrate if dirty-ring mode was used in last measurement. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/libvirt-domain.c | 6 +++++ src/qemu/qemu_driver.c | 22 +++++++++++++++--- src/qemu/qemu_monitor.h | 10 +++++++++ src/qemu/qemu_monitor_json.c | 53 ++++++++++++++++++++++++++++++++++++++++= ++++ 4 files changed, 88 insertions(+), 3 deletions(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index f70eff3..1fcbfc5 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -11956,6 +11956,12 @@ virConnectGetDomainCapabilities(virConnectPtr conn, * "dirtyrate.megabytes_per_second" - the calculated memory dirty rate= in * MiB/s as long long. It is produc= ed * only if the calc_status is measu= red. + * "dirtyrate.calc_mode" - the calculation mode used last measurement,= either + * of these 3 'page-sampling,dirty-bitmap,dirt= y-ring' + * values returned. + * "dirtyrate.vcpu..megabytes_per_second" - the calculated memory= dirty + * rate for a virtual cp= u as + * unsigned long long. * * Note that entire stats groups or individual stat fields may be missing = from * the output in case they are not supported by the given hypervisor, are = not diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 3ac5f01..7ce7936 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18554,11 +18554,27 @@ qemuDomainGetStatsDirtyRate(virQEMUDriver *driver, "dirtyrate.calc_period") < 0) return -1; =20 - if ((info.status =3D=3D QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED) && - virTypedParamListAddLLong(params, info.dirtyRate, - "dirtyrate.megabytes_per_second") < 0) + if (virTypedParamListAddString(params, + qemuMonitorDirtyRateCalcModeTypeToStrin= g(info.mode), + "dirtyrate.calc_mode") < 0) return -1; =20 + if (info.status =3D=3D QEMU_MONITOR_DIRTYRATE_STATUS_MEASURED) { + if (virTypedParamListAddLLong(params, info.dirtyRate, + "dirtyrate.megabytes_per_second") < = 0) + return -1; + + if (info.mode =3D=3D QEMU_MONITOR_DIRTYRATE_CALC_MODE_DIRTY_RING) { + int i; + for (i =3D 0; i < info.nvcpus; i++) { + if (virTypedParamListAddULLong(params, info.rates[i].value, + "dirtyrate.vcpu.%d.megabyte= s_per_second", + info.rates[i].index) < 0) + return -1; + } + } + } + return 0; } =20 diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index efdecba..8008f40 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1568,12 +1568,22 @@ typedef enum { QEMU_MONITOR_DIRTYRATE_STATUS_LAST, } qemuMonitorDirtyRateStatus; =20 +typedef struct _qemuMonitorDirtyRateVcpu qemuMonitorDirtyRateVcpu; +struct _qemuMonitorDirtyRateVcpu { + int index; /* virtual cpu index */ + unsigned long long value; /* virtual cpu dirty page rate in MB/s */ +}; + typedef struct _qemuMonitorDirtyRateInfo qemuMonitorDirtyRateInfo; struct _qemuMonitorDirtyRateInfo { qemuMonitorDirtyRateStatus status; /* the status of last dirtyrate ca= lculation */ int calcTime; /* the period of dirtyrate calculation */ long long startTime; /* the start time of dirtyrate calculation */ long long dirtyRate; /* the dirtyrate in MiB/s */ + qemuMonitorDirtyRateCalcMode mode; /* calculation mode used in + last measurement */ + size_t nvcpus; /* number of virtual cpu */ + qemuMonitorDirtyRateVcpu *rates; /* array of dirty page rate */ }; =20 int diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 93288ab..7ee0026 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8782,11 +8782,45 @@ VIR_ENUM_IMPL(qemuMonitorDirtyRateStatus, "measured"); =20 static int +qemuMonitorJSONExtractVcpuDirtyRate(virJSONValue *data, + qemuMonitorDirtyRateInfo *info) +{ + size_t nvcpus; + int i; + + nvcpus =3D virJSONValueArraySize(data); + info->nvcpus =3D nvcpus; + info->rates =3D g_new0(qemuMonitorDirtyRateVcpu, nvcpus); + + for (i =3D 0; i < nvcpus; i++) { + virJSONValue *entry =3D virJSONValueArrayGet(data, i); + if (virJSONValueObjectGetNumberInt(entry, "id", + &info->rates[i].index) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-dirty-rate reply was missing 'id' data= ")); + return -1; + } + + if (virJSONValueObjectGetNumberUlong(entry, "dirty-rate", + &info->rates[i].value) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-dirty-rate reply was missing 'dirty-ra= te' data")); + return -1; + } + } + + return 0; +} + +static int qemuMonitorJSONExtractDirtyRateInfo(virJSONValue *data, qemuMonitorDirtyRateInfo *info) { const char *statusstr; + const char *modestr; int status; + int mode; + virJSONValue *rates =3D NULL; =20 if (!(statusstr =3D virJSONValueObjectGetString(data, "status"))) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", @@ -8823,6 +8857,25 @@ qemuMonitorJSONExtractDirtyRateInfo(virJSONValue *da= ta, return -1; } =20 + if ((modestr =3D virJSONValueObjectGetString(data, "mode"))) { + if ((mode =3D qemuMonitorDirtyRateCalcModeTypeFromString(modestr))= < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Unknown dirty page rate calculation mode: %s"), = modestr); + return -1; + } + info->mode =3D mode; + } else { + info->mode =3D QEMU_MONITOR_DIRTYRATE_CALC_MODE_PAGE_SAMPLING; + } + + if ((rates =3D virJSONValueObjectGetArray(data, "vcpu-dirty-rate"))) { + if (qemuMonitorJSONExtractVcpuDirtyRate(rates, info) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-dirty-rate parsing 'vcpu-dirty-rate' in fa= ilure")); + return -1; + } + } + return 0; } =20 --=20 1.8.3.1