From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712454; cv=none; d=zohomail.com; s=zohoarc; b=enCekUZBkwaCW8gXUEnglIqawAf2Jnzk4HptP8Y+4PUiuXddFifZhoBAgbZgtDkKp/EguLpYvHv3YP+PMa09afIT4ZrkdACo5FG6tXTl85t7uoctjpEdeaPquiRbudNVarEK7i4FYsalaHnurUcZnf9Nsoj9258gNQ7khG58gnU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712454; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=VpcpIZ4DxsxkUrU/5Cs5VTkjROtq+x2FuQox/Z3IMoE=; b=e3xkuovbI3l6x69XIIVxCdt6t25vpUlZweYtecsxlnuelCrmCMFhHwZD54MSjbdh7QosKjuDWeesnph2XNGMou2i9ltsjB62eKo0xTtCke76R2Up0J28REPDRLhQYOX3WO0Qs/0tMTkJEMf6/S4TVGVyNUSimC9MnmAjgpcR0pA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712454933477.4918467250386; Sun, 30 Jul 2023 03:20:54 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-36-SD1e3kIoMuyQpy-iKkkwiw-1; Sun, 30 Jul 2023 06:20:50 -0400 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 792DA835051; Sun, 30 Jul 2023 10:20:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6633F401061; Sun, 30 Jul 2023 10:20:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 250961946A52; Sun, 30 Jul 2023 10:20:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 1E41C1946588 for ; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id CE621F783E; Sun, 30 Jul 2023 10:20:40 +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 C6908F7842 for ; Sun, 30 Jul 2023 10:20:40 +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 A8E4286F121 for ; Sun, 30 Jul 2023 10:20:40 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-88-63x-DKcJOHOAvEpGaD3iFQ-1; Sun, 30 Jul 2023 06:20:37 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 57E7511EEFB for ; Sun, 30 Jul 2023 10:20:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712454; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=VpcpIZ4DxsxkUrU/5Cs5VTkjROtq+x2FuQox/Z3IMoE=; b=IniEGIjQB9CKeuIXgWtTGsm/IK6zPFcs+PNOkK8q4ltIONV+x1r78MZyxJdFGMhD0+J8IP buMm8nBT1u4mGu8ZwmJ7+XKJDs9GZev1SoIIq1qheTfB5elS3kfEV1JWGo9Vz7uDgXLkko sZCYSjN17yGT7a0+L1nY3FzoFPOM+AY= X-MC-Unique: SD1e3kIoMuyQpy-iKkkwiw-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: 63x-DKcJOHOAvEpGaD3iFQ-1 From: ~hyman Date: Tue, 02 Aug 2022 22:49:24 +0800 Subject: [PATCH Libvirt 01/11] qemu_capabilities: Introduce QEMU_CAPS_VCPU_DIRTY_LIMIT capability MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-1@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712455251100007 From: Hyman Huang(=E9=BB=84=E5=8B=87) set-vcpu-dirty-limit/cancel-vcpu-dirty-limit/query-vcpu-dirty-limit were introduced since qemu >=3D7.1.0. Introduce corresponding capability. 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_7.1.0_ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml | 1 + tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml | 1 + tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml | 1 + tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml | 1 + 11 files changed, 12 insertions(+) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f80bdb579d..6e0c095b55 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -697,6 +697,7 @@ VIR_ENUM_IMPL(virQEMUCaps, =20 /* 450 */ "run-with.async-teardown", /* QEMU_CAPS_RUN_WITH_ASYNC_TEARD= OWN */ + "set-vcpu-dirty-limit", /* QEMU_CAPS_VCPU_DIRTY_LIMIT */ ); =20 =20 @@ -1221,6 +1222,7 @@ struct virQEMUCapsStringFlags virQEMUCapsCommands[] = =3D { { "calc-dirty-rate", QEMU_CAPS_CALC_DIRTY_RATE }, { "query-stats", QEMU_CAPS_QUERY_STATS }, { "query-stats-schemas", QEMU_CAPS_QUERY_STATS_SCHEMAS }, + { "set-vcpu-dirty-limit", QEMU_CAPS_VCPU_DIRTY_LIMIT }, }; =20 struct virQEMUCapsStringFlags virQEMUCapsMigration[] =3D { diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c72f73a161..9e96f548af 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -676,6 +676,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ =20 /* 450 */ QEMU_CAPS_RUN_WITH_ASYNC_TEARDOWN, /* asynchronous teardown -run-with = async-teardown=3Don|off */ + QEMU_CAPS_VCPU_DIRTY_LIMIT, /* 'set-vcpu-dirty-limit' QMP command pres= ent */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml b/tests/qemuca= pabilitiesdata/caps_7.1.0_ppc64.xml index 3ff7a88cd2..f333df6599 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml @@ -158,6 +158,7 @@ + 7001000 42900244 v7.1.0 diff --git a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_7.1.0_x86_64.xml index 4e2addd76b..20e10b3090 100644 --- a/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml @@ -195,6 +195,7 @@ + 7001000 43100244 v7.1.0 diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml b/tests/qemucapa= bilitiesdata/caps_7.2.0_ppc.xml index 06f8c5801f..50e1d6c359 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml @@ -153,6 +153,7 @@ + 7002000 0 qemu-7.2.0-6.fc37 diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml b/tests/q= emucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml index 0007a33dca..d804bb51e1 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml @@ -199,6 +199,7 @@ + 7002000 43100245 v7.2.0 diff --git a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_7.2.0_x86_64.xml index e298cbd9b1..618e2e7778 100644 --- a/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml @@ -199,6 +199,7 @@ + 7002000 43100245 v7.2.0 diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml b/tests/qemu= capabilitiesdata/caps_8.0.0_riscv64.xml index 987962ca41..0643fd8054 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml @@ -140,6 +140,7 @@ + 7002050 0 v7.2.0-333-g222059a0fc diff --git a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_8.0.0_x86_64.xml index c43c209328..1e0bc96f88 100644 --- a/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml @@ -203,6 +203,7 @@ + 8000000 43100244 v8.0.0 diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml b/tests/qemuca= pabilitiesdata/caps_8.1.0_s390x.xml index 35751ed441..6d5e6ee76f 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_s390x.xml @@ -114,6 +114,7 @@ + 8000050 39100245 v8.0.0-1270-g1c12355b diff --git a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml b/tests/qemuc= apabilitiesdata/caps_8.1.0_x86_64.xml index e656a2024a..ca8b5d056c 100644 --- a/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml @@ -204,6 +204,7 @@ + 8000050 43100245 v8.0.0-2835-g361d539735 --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712451; cv=none; d=zohomail.com; s=zohoarc; b=JekPnYjOB+qwb7l/HAB9TQkGJ/5vmmqd769raTkqgKzzEowqub38DPorfJQUDZitn02Sp8EoQaNl/3g80XcjQsEBfV+V/jD4PtfSQ++1IF2ov1Xy3aB/jAApDiiCLOnJkXpn+u2QhFdSGyVnMWJcMB9A+73fYtL8CU2IIKoUUTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712451; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=FYSdY0k9in8C7jilssITeivn1nvMk9KMdxHp4PgnyH8=; b=jKy4OjOADlqbjwmfdKfaTXlaja/DMrAim1S+kC3fvMBjXMJK8t4xfbgUPhr9kmL49cBsgwqxdELj4RlUQpHNAOFaRZU0Kj1GdU0wepuZy9Be94qd5rdKgNhgHpBQtDA+jEc72nkm/7AFEfK8lIUPDKeHlnKg1B5aBSJSJElcYOM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712451267687.5395508776445; Sun, 30 Jul 2023 03:20:51 -0700 (PDT) Received: from mimecast-mx02.redhat.com (66.187.233.73 [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-57-1omBlBt3M9S-qPTeVzxP5A-1; Sun, 30 Jul 2023 06:20:47 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E28982932484; Sun, 30 Jul 2023 10:20:44 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id C984240C2074; Sun, 30 Jul 2023 10:20:43 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E0B841946A68; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 22F6A19465BB for ; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id F144E2166B29; Sun, 30 Jul 2023 10:20:40 +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 E85812166B25 for ; Sun, 30 Jul 2023 10:20:40 +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 C76262932480 for ; Sun, 30 Jul 2023 10:20:40 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-157-VGiRAUiPP_CSFf5SQctEBQ-1; Sun, 30 Jul 2023 06:20:38 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 8E90E11EF0E for ; Sun, 30 Jul 2023 10:20:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712450; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=FYSdY0k9in8C7jilssITeivn1nvMk9KMdxHp4PgnyH8=; b=WcCK/PWGgO4jGEGpQcth3sG+Z/+veS96enf7mUfTcFL5Kh66uPZAX1FZziIf9hvwE6ZTiu 8ioWMKy0FmPZ+LD8rFm/Iv4VWmJRChMpTF/iZ6HtfK9t1v0oZUTtxI21b+Bm8x8t0m2CfC DhwjsTi4ugBCTEDVRuU6z60CcEaGghg= X-MC-Unique: 1omBlBt3M9S-qPTeVzxP5A-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: VGiRAUiPP_CSFf5SQctEBQ-1 From: ~hyman Date: Tue, 02 Aug 2022 22:13:40 +0800 Subject: [PATCH Libvirt 02/11] libvirt: Add virDomainSetVcpuDirtyLimit API MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-2@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712452207100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) Introduce virDomainSetVcpuDirtyLimit API to set upper limit of dirty page rate. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- include/libvirt/libvirt-domain.h | 16 ++++++++++ src/driver-hypervisor.h | 7 +++++ src/libvirt-domain.c | 54 ++++++++++++++++++++++++++++++++ src/libvirt_public.syms | 5 +++ src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 15 ++++++++- src/remote_protocol-structs | 7 +++++ 7 files changed, 104 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index a1902546bb..df7deffaa9 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -6506,4 +6506,20 @@ int virDomainFDAssociate(virDomainPtr domain, int *fds, unsigned int flags); =20 +/** + * virDomainDirtyLimitFlags: + * + * Since: 9.6.0 + */ +typedef enum { + VIR_DOMAIN_DIRTYLIMIT_VCPU =3D 1 << 0,/* render specified virtual CPU = for + dirty page rate upper limit (Si= nce: 9.6.0) */ + VIR_DOMAIN_DIRTYLIMIT_ALL =3D 1 << 1, /* render all virtual CPU for di= rty + page rate upper limit (Since: 9= .6.0) */ +} virDomainDirtyLimitFlags; + +int virDomainSetVcpuDirtyLimit(virDomainPtr domain, + int vcpu, + unsigned long long rate, + unsigned int flags); #endif /* LIBVIRT_DOMAIN_H */ diff --git a/src/driver-hypervisor.h b/src/driver-hypervisor.h index 5219344b72..e61b9efca5 100644 --- a/src/driver-hypervisor.h +++ b/src/driver-hypervisor.h @@ -1448,6 +1448,12 @@ typedef int int *fds, unsigned int flags); =20 +typedef int +(*virDrvDomainSetVcpuDirtyLimit)(virDomainPtr domain, + int vcpu, + unsigned long long rate, + unsigned int flags); + typedef struct _virHypervisorDriver virHypervisorDriver; =20 /** @@ -1720,4 +1726,5 @@ struct _virHypervisorDriver { virDrvDomainGetMessages domainGetMessages; virDrvDomainStartDirtyRateCalc domainStartDirtyRateCalc; virDrvDomainFDAssociate domainFDAssociate; + virDrvDomainSetVcpuDirtyLimit domainSetVcpuDirtyLimit; }; diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index ec42bb9a53..878d2a6d8c 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -14057,5 +14057,59 @@ virDomainFDAssociate(virDomainPtr domain, =20 error: virDispatchError(conn); +} + +/** + * virDomainSetVcpuDirtyLimit: + * @domain: pointer to domain object, or NULL for Domain0 + * @vcpu: mandatory parameter only if the specified index of the + * virtual CPU is limited; ignored otherwise. + * @rate: upper limit of dirty page rate (MB/s) for virtual CPUs + * @flags: bitwise-OR of supported virDomainDirtyLimitFlags + * + * Dynamically set the upper dirty page rate limit of the virtual CPUs. + * + * Returns 0 in case of success, -1 in case of failure. + * + * Since: 9.6.0 + */ +int +virDomainSetVcpuDirtyLimit(virDomainPtr domain, + int vcpu, + unsigned long long rate, + unsigned int flags) +{ + virConnectPtr conn; + + VIR_DOMAIN_DEBUG(domain, "vcpu=3D%d, dirty page rate limit=3D%lld", + vcpu, rate); + + virCheckFlags(VIR_DOMAIN_DIRTYLIMIT_VCPU | + VIR_DOMAIN_DIRTYLIMIT_ALL, -1); + + virResetLastError(); + + virCheckDomainReturn(domain, -1); + conn =3D domain->conn; + + virCheckReadOnlyGoto(conn->flags, error); + virCheckPositiveArgGoto(rate, error); + + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_DIRTYLIMIT_VCPU, + VIR_DOMAIN_DIRTYLIMIT_ALL, + error); + + if (conn->driver->domainSetVcpuDirtyLimit) { + int ret; + ret =3D conn->driver->domainSetVcpuDirtyLimit(domain, vcpu, rate, = flags); + if (ret < 0) + goto error; + return ret; + } + + virReportUnsupportedError(); + + error: + virDispatchError(domain->conn); return -1; } diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index 80742f268e..6fc01b518f 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -932,4 +932,9 @@ LIBVIRT_9.0.0 { virDomainFDAssociate; } LIBVIRT_8.5.0; =20 +LIBVIRT_9.6.0 { + global: + virDomainSetVcpuDirtyLimit; +} LIBVIRT_9.0.0; + # .... define new API here using predicted next version number .... diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 65ec239fb7..4d7682eb32 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8126,6 +8126,7 @@ static virHypervisorDriver hypervisor_driver =3D { .domainStartDirtyRateCalc =3D remoteDomainStartDirtyRateCalc, /* 7.2.0= */ .domainSetLaunchSecurityState =3D remoteDomainSetLaunchSecurityState, = /* 8.0.0 */ .domainFDAssociate =3D remoteDomainFDAssociate, /* 9.0.0 */ + .domainSetVcpuDirtyLimit =3D remoteDomainSetVcpuDirtyLimit, /* 9.6.0 */ }; =20 static virNetworkDriver network_driver =3D { diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 5d86a51116..f0b7f0a5fa 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -3935,6 +3935,14 @@ struct remote_domain_fd_associate_args { remote_nonnull_string name; unsigned int flags; }; + +struct remote_domain_set_vcpu_dirty_limit_args { + remote_nonnull_domain dom; + int vcpu; + unsigned hyper rate; + unsigned int flags; +}; + /*----- Protocol. -----*/ =20 /* Define the program number, protocol version and procedure numbers here.= */ @@ -6974,5 +6982,10 @@ enum remote_procedure { * @generate: none * @acl: domain:write */ - REMOTE_PROC_DOMAIN_FD_ASSOCIATE =3D 443 + REMOTE_PROC_DOMAIN_FD_ASSOCIATE =3D 443, + /** + * @generate: both + * @acl: domain:write + */ + REMOTE_PROC_DOMAIN_SET_VCPU_DIRTY_LIMIT =3D 444 }; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index 3c6c230a16..f7543ec667 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -3273,6 +3273,12 @@ struct remote_domain_fd_associate_args { remote_nonnull_string name; u_int flags; }; +struct remote_domain_set_vcpu_dirty_limit_args { + remote_nonnull_domain dom; + int vcpu; + uint64_t rate; + u_int flags; +}; enum remote_procedure { REMOTE_PROC_CONNECT_OPEN =3D 1, REMOTE_PROC_CONNECT_CLOSE =3D 2, @@ -3717,4 +3723,5 @@ enum remote_procedure { REMOTE_PROC_DOMAIN_RESTORE_PARAMS =3D 441, REMOTE_PROC_DOMAIN_ABORT_JOB_FLAGS =3D 442, REMOTE_PROC_DOMAIN_FD_ASSOCIATE =3D 443, + REMOTE_PROC_DOMAIN_SET_VCPU_DIRTY_LIMIT =3D 444, }; --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712464; cv=none; d=zohomail.com; s=zohoarc; b=lC2jAezB1b0OA67PApxjW3CQ2QijolVXrG98S9f8f4DnRiukcdzIRxFU+Fm2VRH65h74ygRvjMp6sgHAZ3GofSpZPlp+hLEAYTV7k31BkFoHGud3rlfFgvYxQKZVSnprP+QXgY51M/7wO8UC+E3rEJhEm8WrsqzPDr81H3Yxvk8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712464; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=wZKCQnNVIjW/WwbpnZSGLhsR38ogmPQXhL7CStI0mPY=; b=a3uCeoaFgurGe1wc3g3TB6G50Js4nU9KUSfVUC4OliqFq3+Ft95Tq84Dcv9zzqgJZnnC5gGrOnul4B7V4pFhHIXt/flyozAVVwdZk1Pg3IH3qFgPuKzt28lCKGTATf12P7jbCvWTdNt6XuXSIdsmgs7HEoaN6h6n/8A7jrmO4TE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712464416523.4368658777603; Sun, 30 Jul 2023 03:21:04 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-674-bat9cZlOP7u45EGcphkwTQ-1; Sun, 30 Jul 2023 06:20:48 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E2AC4830DAC; Sun, 30 Jul 2023 10:20:44 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4FE271454146; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A7FA0194658C; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 1E71C1946594 for ; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id E83F44094DCA; Sun, 30 Jul 2023 10:20:40 +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 E10144094DC9 for ; Sun, 30 Jul 2023 10:20:40 +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 C6405101A54E for ; Sun, 30 Jul 2023 10:20:40 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-306-5966LVpVMMCZ3VelD0roYw-1; Sun, 30 Jul 2023 06:20:38 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id B52B611EF24 for ; Sun, 30 Jul 2023 10:20:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712463; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=wZKCQnNVIjW/WwbpnZSGLhsR38ogmPQXhL7CStI0mPY=; b=fLEFI1lcDeFGaHws0A9+Ejza2SAtkKeAvnSbexoa3E+Hk+Ro05Mz1uxdZuvmlQUs6KHhv/ ibn2xTJTeQfiqkM6SKN7/3AvEmgK3VwpfFrJA5x/nHkVqOBRDx3uwDG890oVpXKNvJtOFL kQGyHS96s2O/gSGCXTQI0gImc7riPQs= X-MC-Unique: bat9cZlOP7u45EGcphkwTQ-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: 5966LVpVMMCZ3VelD0roYw-1 From: ~hyman Date: Wed, 03 Aug 2022 00:27:47 +0800 Subject: [PATCH Libvirt 03/11] qemu_driver: Implement qemuDomainSetVcpuDirtyLimit MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-3@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712466223100001 From: Hyman Huang(=E9=BB=84=E5=8B=87) Implement qemuDomainSetVcpuDirtyLimit which set dirty page rate upper limit. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_driver.c | 52 ++++++++++++++++++++++++++++++++++++ src/qemu/qemu_monitor.c | 13 +++++++++ src/qemu/qemu_monitor.h | 5 ++++ src/qemu/qemu_monitor_json.c | 45 +++++++++++++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 5 ++++ 5 files changed, 120 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 497923ffee..61b992fc51 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -19912,6 +19912,57 @@ qemuDomainFDAssociate(virDomainPtr domain, return ret; } =20 +static int +qemuDomainSetVcpuDirtyLimit(virDomainPtr domain, + int vcpu, + unsigned long long rate, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuDomainObjPrivate *priv; + int ret =3D -1; + + if (!(vm =3D qemuDomainObjFromDomain(domain))) + return -1; + + if (virDomainSetVcpuDirtyLimitEnsureACL(domain->conn, vm->def)) + goto cleanup; + + priv =3D vm->privateData; + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VCPU_DIRTY_LIMIT)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("QEMU does not support setting dirty page rate li= mit")); + goto cleanup; + } + + if (virDomainObjBeginJob(vm, VIR_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + qemuDomainObjEnterMonitor(vm); + if (flags & VIR_DOMAIN_DIRTYLIMIT_VCPU) { + if (vcpu < 0) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("Require cpu index to limit dirty page rate")); + goto endjob; + } + ret =3D qemuMonitorSetVcpuDirtyLimit(priv->mon, vcpu, rate); + VIR_DEBUG("Set vcpu[%d] dirty page rate limit %lld", vcpu, rate); + } else { + ret =3D qemuMonitorSetVcpuDirtyLimit(priv->mon, -1, rate); + VIR_DEBUG("Set all vcpus dirty page rate limit %lld of vm", rate); + } + qemuDomainObjExitMonitor(vm); + + endjob: + virDomainObjEndJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} =20 static virHypervisorDriver qemuHypervisorDriver =3D { .name =3D QEMU_DRIVER_NAME, @@ -20162,6 +20213,7 @@ static virHypervisorDriver qemuHypervisorDriver =3D= { .domainStartDirtyRateCalc =3D qemuDomainStartDirtyRateCalc, /* 7.2.0 */ .domainSetLaunchSecurityState =3D qemuDomainSetLaunchSecurityState, /*= 8.0.0 */ .domainFDAssociate =3D qemuDomainFDAssociate, /* 9.0.0 */ + .domainSetVcpuDirtyLimit =3D qemuDomainSetVcpuDirtyLimit, /* 9.6.0 */ }; =20 =20 diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index c680c4b804..87926edec6 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4505,3 +4505,16 @@ qemuMonitorGetStatsByQOMPath(virJSONValue *arr, =20 return NULL; } + + +int +qemuMonitorSetVcpuDirtyLimit(qemuMonitor *mon, + int vcpu, + unsigned long long rate) +{ + VIR_DEBUG("set vcpu %d dirty page rate limit %lld", vcpu, rate); + + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONSetVcpuDirtyLimit(mon, vcpu, rate); +} diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 6c590933aa..07a05365cf 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1579,3 +1579,8 @@ qemuMonitorExtractQueryStats(virJSONValue *info); virJSONValue * qemuMonitorGetStatsByQOMPath(virJSONValue *arr, char *qom_path); + +int +qemuMonitorSetVcpuDirtyLimit(qemuMonitor *mon, + int vcpu, + unsigned long long rate); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index d9e9a4481c..732366ab29 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8889,3 +8889,48 @@ qemuMonitorJSONQueryStats(qemuMonitor *mon, =20 return virJSONValueObjectStealArray(reply, "return"); } + +/** + * qemuMonitorJSONSetVcpuDirtyLimit: + * @mon: monitor object + * @vcpu: virtual cpu index to be set, -1 means all virtual cpus + * @rate: dirty page rate upper limit to be set + * + * Returns -1 on failure. + */ +int +qemuMonitorJSONSetVcpuDirtyLimit(qemuMonitor *mon, + int vcpu, + unsigned long long rate) +{ + g_autoptr(virJSONValue) cmd =3D NULL; + g_autoptr(virJSONValue) reply =3D NULL; + + if (vcpu < -1) + return -1; + + if (vcpu >=3D 0) { + /* set vcpu dirty page rate limit */ + if (!(cmd =3D qemuMonitorJSONMakeCommand("set-vcpu-dirty-limit", + "i:cpu-index", vcpu, + "U:dirty-rate", rate, + NULL))) { + return -1; + } + } else if (vcpu =3D=3D -1) { + /* set vm dirty page rate limit */ + if (!(cmd =3D qemuMonitorJSONMakeCommand("set-vcpu-dirty-limit", + "U:dirty-rate", rate, + NULL))) { + return -1; + } + } + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + return -1; + + if (qemuMonitorJSONCheckError(cmd, reply) < 0) + return -1; + + return 0; +} diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 06023b98ea..89f61b3052 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -825,3 +825,8 @@ qemuMonitorJSONQueryStats(qemuMonitor *mon, qemuMonitorQueryStatsTargetType target, char **vcpus, GPtrArray *providers); + +int +qemuMonitorJSONSetVcpuDirtyLimit(qemuMonitor *mon, + int vcpu, + unsigned long long rate); --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712458; cv=none; d=zohomail.com; s=zohoarc; b=jcCKAd0tj/Cu1gSi+fklTFjAq8jCBj9QWglAPwq3LrPsDm87Lcs+eLOhx+EuNeTJEAjBbFpJciGTTe3TV9eNSwm2yWoqskBZEmocKNR/DsNYhPuU7WbRJwqkDBWN8k/PCGm6gh93SwagnwJ5eT/4tlObZt8LVEBSIC0TBC5qzwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712458; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=bo1vRDIU9T28UEQHOqIkxYJa76uf+1Zm0lV9+r2Ok/8=; b=ecGLwCLdn+c219urpRcdCOwnq1+IJuukB0o6ZVRFEUcfTVgC64dMagI+RvYmU/P0nxCH/FZO3nkJ5NmSvG8CvVxmD3/CYZnvYmWkqig+Rc7WODDe8agL+UbSZQObiVeaTbaMFNcHjz9yUKfCxWXoekVxECNJ9AeOWGxf5TqAJks= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712458362109.69198589686175; Sun, 30 Jul 2023 03:20:58 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-651-Lx6WUJFVMiiT1u_rS0TQpA-1; Sun, 30 Jul 2023 06:20:52 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DE68781DA5D; Sun, 30 Jul 2023 10:20:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id C586B1454143; Sun, 30 Jul 2023 10:20:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0D02C19451CC; Sun, 30 Jul 2023 10:20:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 20FB319465A3 for ; Sun, 30 Jul 2023 10:20:40 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id BF80E2166B27; Sun, 30 Jul 2023 10:20:40 +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 B6BBA2166B25 for ; Sun, 30 Jul 2023 10:20:40 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-inbound-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 964638022EF for ; Sun, 30 Jul 2023 10:20:40 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-441-W0q17_m_PUKHu8IXp2R0Dg-1; Sun, 30 Jul 2023 06:20:38 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id DA0BB11EF26 for ; Sun, 30 Jul 2023 10:20:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712457; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=bo1vRDIU9T28UEQHOqIkxYJa76uf+1Zm0lV9+r2Ok/8=; b=dX51sJvEi4qLbvdKEk6U86mcqKtTT2eTrE55lmeJIL5AH4nRQ16jjJJvV/IGj05wP2maco c2PNduBIYBQ++UBmYa9/IAMIrGAC5UbDhAjRMl0ICrpiBK60WBSN66zQFME+Z0Jt8fdYxJ nMJWRMr3lxrU6MkK91jtVQSfON5chPY= X-MC-Unique: Lx6WUJFVMiiT1u_rS0TQpA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: W0q17_m_PUKHu8IXp2R0Dg-1 From: ~hyman Date: Mon, 08 Aug 2022 23:41:27 +0800 Subject: [PATCH Libvirt 04/11] virsh: Introduce limit-dirty-page-rate api MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-4@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712459667100017 From: Hyman Huang(=E9=BB=84=E5=8B=87) Introduce limit-dirty-page-rate virsh api to set dirty page rate upper limit for virtual CPUs: The following is the usage: $ virsh limit-dirty-page-rate [--vcpu ] Set the specified index of vcpu if 'vcpu' option is specified, set all virtual CPUs of a VM otherwise. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- tools/virsh-domain.c | 92 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index fb54562eb6..ba2309eb3c 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -13817,6 +13817,92 @@ cmdDomDirtyRateCalc(vshControl *ctl, const vshCmd = *cmd) return true; } =20 +#define IGNORED_CPU_INDEX -1 + +/* + * "limit-dirty-page-rate" command + */ +static const vshCmdInfo info_limit_dirty_page_rate[] =3D { + {.name =3D "help", + .data =3D N_("Set dirty page rate upper limit") + }, + {.name =3D "desc", + .data =3D N_("Set dirty page rate upper limit, " + "require dirty-ring size configured") + }, + {.name =3D NULL} +}; + +static const vshCmdOptDef opts_limit_dirty_page_rate[] =3D { + VIRSH_COMMON_OPT_DOMAIN_FULL(0), + {.name =3D "rate", + .type =3D VSH_OT_INT, + .flags =3D VSH_OFLAG_REQ, + .help =3D N_("Upper limit of dirty page rate (MB/s) for " + "virtual CPUs") + }, + {.name =3D "vcpu", + .type =3D VSH_OT_INT, + .help =3D N_("Index of a virtual CPU") + }, + {.name =3D NULL} +}; + +static bool +cmdLimitDirtyPageRate(vshControl *ctl, const vshCmd *cmd) +{ + g_autoptr(virshDomain) dom =3D NULL; + int vcpu_idx =3D -1; + unsigned long long rate =3D 0; + bool vcpu =3D vshCommandOptBool(cmd, "vcpu"); + unsigned int flags =3D 0; + + if (!(dom =3D virshCommandOptDomain(ctl, cmd, NULL))) + return false; + + if (vcpu) { + if (vshCommandOptInt(ctl, cmd, "vcpu", &vcpu_idx) < 0) + return false; + + if (vcpu_idx < 0) { + vshError(ctl, "%s", _("Invalid vcpu index, using --vcpu " + "to specify cpu index")); + return false; + } + } + + if (vshCommandOptULongLong(ctl, cmd, "rate", &rate) < 0) + return false; + + if (!rate) { + vshError(ctl, "%s", _("Invalid dirty page rate limit")); + return false; + } + + if (vcpu) { + /* set specified vcpu dirty page rate limit of vm */ + if (virDomainSetVcpuDirtyLimit(dom, vcpu_idx, + rate, flags | VIR_DOMAIN_DIRTYLIMIT_VCPU) < 0) + return false; + g_autofree char *info =3D + g_strdup_printf("Set vcpu[%d] dirty page rate upper " + "limit %lld(MB/s) successfully", + vcpu_idx, rate); + vshPrintExtra(ctl, _("%1$s\n"), info); + } else { + /* set all vcpu dirty page rate limit of vm */ + if (virDomainSetVcpuDirtyLimit(dom, IGNORED_CPU_INDEX, + rate, flags | VIR_DOMAIN_DIRTYLIMIT_ALL) < 0) + return false; + g_autofree char *info =3D + g_strdup_printf("Set dirty page rate limit %lld(MB/s) " + "on all virtual CPUs successfully", + rate); + vshPrintExtra(ctl, _("%1$s\n"), info); + } + + return true; +} =20 const vshCmdDef domManagementCmds[] =3D { {.name =3D "attach-device", @@ -14481,5 +14567,11 @@ const vshCmdDef domManagementCmds[] =3D { .info =3D info_dom_fd_associate, .flags =3D 0 }, + {.name =3D "limit-dirty-page-rate", + .handler =3D cmdLimitDirtyPageRate, + .opts =3D opts_limit_dirty_page_rate, + .info =3D info_limit_dirty_page_rate, + .flags =3D 0 + }, {.name =3D NULL} }; --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712457; cv=none; d=zohomail.com; s=zohoarc; b=LzoX8UrlCQKhcOjcDQWiVx2uS56WNHR9spyuU+KdGdAk8OcLvgotXoDcVlcx5cPqd/PA4LzGwq2RMg/utn9kpfyXXe52m74cvgbouO1sZOZJdqKrhiWdHuNORXCmMAS0wYoU8MRJ/h1ScdNVu/PfSuOTzyyOfQlA5viqY2BS+oM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712457; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=Vibq0xVvJTBV/ganctUZUDPS4mKSlgan8uQdz/rgX5M=; b=NpMnauQ+LwBJcjSPwT9MQWobNF20+j+H/+FXu8jV+6nkGY6tjq+zgmLhRkEO00UuS7XNnduOuswojXRk2OqiKPxRYOWBylhBmGAm6BQGMUgum/LkTFIy2C8MJ7dD3fUhuO7h6DH6uAk9AmsO1se5ojANAMp5xlckAafw8blE2xM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 169071245748137.18827177969524; Sun, 30 Jul 2023 03:20:57 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-142-H3HL17f8NBGsazADpaKyxw-1; Sun, 30 Jul 2023 06:20:50 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id ADBA8185A7B2; Sun, 30 Jul 2023 10:20:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 91FC2145414B; Sun, 30 Jul 2023 10:20:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id CEB8319451C4; Sun, 30 Jul 2023 10:20:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id CECD719451E5 for ; Sun, 30 Jul 2023 10:20:43 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id AFD34401DA9; Sun, 30 Jul 2023 10:20:43 +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 A7FC8401061 for ; Sun, 30 Jul 2023 10:20:43 +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 8B7F5293248A for ; Sun, 30 Jul 2023 10:20:43 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-98-pqye39RUPLedGpobepLlcw-1; Sun, 30 Jul 2023 06:20:39 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 12BF511EF45 for ; Sun, 30 Jul 2023 10:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712456; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=Vibq0xVvJTBV/ganctUZUDPS4mKSlgan8uQdz/rgX5M=; b=Y463ZYXAnNMefP56SwPoYQHw+YFMTDgrwGw7NKAMdlms7bx7aR7E6kf6+kOAsUPYQHkXJE 3+EOFH1i+9zzGWdD0e8iqSsinBQZr5RDz4LQ6USPBnKgXHbmxI2+n9JehzIq2ZL3dlOFHc 0UVvUNG105bWznZpbElelu/Y05D0Abo= X-MC-Unique: H3HL17f8NBGsazADpaKyxw-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: pqye39RUPLedGpobepLlcw-1 From: ~hyman Date: Fri, 12 Aug 2022 23:50:36 +0800 Subject: [PATCH Libvirt 05/11] qemu_monitor: Implement qemuMonitorQueryVcpuDirtyLimit MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-5@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712459523100015 From: Hyman Huang(=E9=BB=84=E5=8B=87) Implement qemuMonitorQueryVcpuDirtyLimit which query vcpu dirty limit info by calling qmp 'query-vcpu-dirty-limit'. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_monitor.c | 12 +++++++ src/qemu/qemu_monitor.h | 17 ++++++++++ src/qemu/qemu_monitor_json.c | 64 ++++++++++++++++++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 4 +++ 4 files changed, 97 insertions(+) diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 87926edec6..a8a6a6e4e2 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4518,3 +4518,15 @@ qemuMonitorSetVcpuDirtyLimit(qemuMonitor *mon, =20 return qemuMonitorJSONSetVcpuDirtyLimit(mon, vcpu, rate); } + + +int +qemuMonitorQueryVcpuDirtyLimit(qemuMonitor *mon, + qemuMonitorVcpuDirtyLimitInfo *info) +{ + VIR_DEBUG("info=3D%p", info); + + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONQueryVcpuDirtyLimit(mon, info); +} diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 07a05365cf..1828bb202a 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1584,3 +1584,20 @@ int qemuMonitorSetVcpuDirtyLimit(qemuMonitor *mon, int vcpu, unsigned long long rate); + +typedef struct _qemuMonitorVcpuDirtyLimit qemuMonitorVcpuDirtyLimit; +struct _qemuMonitorVcpuDirtyLimit { + int idx; /* virtual cpu index */ + unsigned long long limit; /* virtual cpu dirty page rate limit i= n MB/s */ + unsigned long long current; /* virtual cpu dirty page rate in MB/s= */ +}; + +typedef struct _qemuMonitorVcpuDirtyLimitInfo qemuMonitorVcpuDirtyLimitInf= o; +struct _qemuMonitorVcpuDirtyLimitInfo { + size_t nvcpus; /* number of virtual cpu */ + qemuMonitorVcpuDirtyLimit *limits; /* array of dirty page rate limit= */ +}; + +int +qemuMonitorQueryVcpuDirtyLimit(qemuMonitor *mon, + qemuMonitorVcpuDirtyLimitInfo *info); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 732366ab29..f8406c1857 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8934,3 +8934,67 @@ qemuMonitorJSONSetVcpuDirtyLimit(qemuMonitor *mon, =20 return 0; } + +static int +qemuMonitorJSONExtractVcpuDirtyLimitInfo(virJSONValue *data, + qemuMonitorVcpuDirtyLimitInfo *in= fo) +{ + size_t nvcpus; + size_t i; + + nvcpus =3D virJSONValueArraySize(data); + info->nvcpus =3D nvcpus; + info->limits =3D g_new0(qemuMonitorVcpuDirtyLimit, nvcpus); + + for (i =3D 0; i < nvcpus; i++) { + virJSONValue *entry =3D virJSONValueArrayGet(data, i); + if (virJSONValueObjectGetNumberInt(entry, "cpu-index", + &info->limits[i].idx) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-vcpu-dirty-limit reply was missing 'cp= u-index' data")); + return -1; + } + + if (virJSONValueObjectGetNumberUlong(entry, "limit-rate", + &info->limits[i].limit) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-vcpu-dirty-limit reply was missing 'li= mit-rate' data")); + return -1; + } + + if (virJSONValueObjectGetNumberUlong(entry, "current-rate", + &info->limits[i].current) < 0)= { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-vcpu-dirty-limit reply was missing 'cu= rrent-rate' data")); + return -1; + } + } + + return 0; +} + +int +qemuMonitorJSONQueryVcpuDirtyLimit(qemuMonitor *mon, + qemuMonitorVcpuDirtyLimitInfo *info) +{ + g_autoptr(virJSONValue) cmd =3D NULL; + g_autoptr(virJSONValue) reply =3D NULL; + virJSONValue *data =3D NULL; + + if (!(cmd =3D qemuMonitorJSONMakeCommand("query-vcpu-dirty-limit", NUL= L))) + return -1; + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + return -1; + + if (qemuMonitorJSONCheckError(cmd, reply) < 0) + return -1; + + if (!(data =3D virJSONValueObjectGetArray(reply, "return"))) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("query-vcpu-dirty-limit reply was missing 'return= ' data")); + return -1; + } + + return qemuMonitorJSONExtractVcpuDirtyLimitInfo(data, info); +} diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index 89f61b3052..bd8131508b 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -830,3 +830,7 @@ int qemuMonitorJSONSetVcpuDirtyLimit(qemuMonitor *mon, int vcpu, unsigned long long rate); + +int +qemuMonitorJSONQueryVcpuDirtyLimit(qemuMonitor *mon, + qemuMonitorVcpuDirtyLimitInfo *info); --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712456; cv=none; d=zohomail.com; s=zohoarc; b=KNtH71cMmKj/nRuaemSlL8CUECNSORmhiEpLK05eIJc8pFYW3rCLvEvmQL+yd1gKDbHKfmQOlZTGxbgN9TbWpIDVgxJLUj6JNLCjhzfuXlrCa0YS68idiHAwsgPIQlcTIKA47U/Y7w7qpBXDnjQLaVuTjU7T9n7uUBVWnGvxGbA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712456; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=tocfpLYsw6PLEpP2kNWg2ALJixeOzbhyHMEfev18tsU=; b=TPz4KC0kXWEGdoGppL34079gaPrCdqD7fjpIpDS1EC5q2wN0/4KbQ89LfnaHbghwJWLbPjolI4b0vfmo5GnZxrqTf5jnMx5fkznvWsEsbm2KFh0VN+1dP7N9hHP7pJ5U+ePpWYV5WA6oFlPgVyYQXLMqAMV3tX6nEvhpqdi4o1o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712455991613.9680188682114; Sun, 30 Jul 2023 03:20:55 -0700 (PDT) Received: from mimecast-mx02.redhat.com (66.187.233.73 [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-67-KRI-GwfDOMCVAvVFtxVgsg-1; Sun, 30 Jul 2023 06:20:47 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 7CEA53802B8F; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6A40A492CA6; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5637A1946594; Sun, 30 Jul 2023 10:20:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 490B319451D0 for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 2B13E1454147; Sun, 30 Jul 2023 10:20:42 +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 230E31454146 for ; Sun, 30 Jul 2023 10:20:42 +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 0744E185A78B for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-336-EamPjdaaOcqkaRq6B9ahfw-1; Sun, 30 Jul 2023 06:20:39 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 3D6F711EF48 for ; Sun, 30 Jul 2023 10:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712455; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=tocfpLYsw6PLEpP2kNWg2ALJixeOzbhyHMEfev18tsU=; b=CB8qMl4brx0w/cnt64g+BLwcBf1a+tcIdHPBNshD6RcXJY3CaX2knb58mZ5oSYJgftZ0/q 7fg6+DG7KmZeNFBvhoML4ovxIH5Srl4SAR7W+ke+L4jt4Iy7dzDNoyFD8FQ2b5GorlRjNS 2/PxoLNrB5DcKd4JI21q4Y9aDFhaJM4= X-MC-Unique: KRI-GwfDOMCVAvVFtxVgsg-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: EamPjdaaOcqkaRq6B9ahfw-1 From: ~hyman Date: Sat, 13 Aug 2022 11:06:27 +0800 Subject: [PATCH Libvirt 06/11] qemu_driver: Extend qemuDomainGetVcpus MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-6@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712456154100009 From: Hyman Huang(=E9=BB=84=E5=8B=87) Extend qemuDomainGetVcpus for getting dirty page rate upper limit info so 'virsh vcpuinfo' api can display it. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- include/libvirt/libvirt-domain.h | 2 ++ src/qemu/qemu_driver.c | 55 ++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index df7deffaa9..4c63d0be7c 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -2395,6 +2395,8 @@ struct _virVcpuInfo { int state; /* value from virVcpuState */ unsigned long long cpuTime; /* CPU time used, in nanoseconds */ int cpu; /* real CPU number, or one of the values f= rom virVcpuHostCpuState */ + unsigned long long limit; /* virtual cpu dirty page rate upper limit= in MB/s */ + unsigned long long current; /* current virtual cpu dirty page rate in = MB/s */ }; =20 /** diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 61b992fc51..f7ff3b7098 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4599,6 +4599,57 @@ qemuDomainGetEmulatorPinInfo(virDomainPtr dom, return ret; } =20 +static int +qemuDomainGetVcpuDirtyLimit(virDomainObj *vm, + virVcpuInfoPtr info, + int maxinfo) +{ + qemuDomainObjPrivate *priv =3D vm->privateData; + qemuMonitorVcpuDirtyLimitInfo dirtylimit_info; + size_t cpuinfo_idx =3D 0; + size_t i; + int ret =3D -1; + + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VCPU_DIRTY_LIMIT)) + return 0; + + if (virDomainObjBeginJob(vm, VIR_JOB_MODIFY) < 0) + goto endjob; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + qemuDomainObjEnterMonitor(vm); + if (qemuMonitorQueryVcpuDirtyLimit(priv->mon, &dirtylimit_info) < 0) { + qemuDomainObjExitMonitor(vm); + goto endjob; + } + qemuDomainObjExitMonitor(vm); + + while (cpuinfo_idx < maxinfo) { + virVcpuInfoPtr vcpuinfo =3D info + cpuinfo_idx; + for (i =3D 0; i < dirtylimit_info.nvcpus && + i < virDomainDefGetVcpusMax(vm->def); i++) { + /* skip the offline virtual CPU */ + virDomainVcpuDef *vcpu =3D virDomainDefGetVcpu(vm->def, i); + if (!vcpu->online) + continue; + + /* match the index of virtual CPU */ + if (vcpuinfo->number =3D=3D dirtylimit_info.limits[i].idx) { + vcpuinfo->current =3D dirtylimit_info.limits[i].current; + vcpuinfo->limit =3D dirtylimit_info.limits[i].limit; + } + } + cpuinfo_idx++; + } + ret =3D 0; + + endjob: + virDomainObjEndJob(vm); + return ret; +} + static int qemuDomainGetVcpus(virDomainPtr dom, virVcpuInfoPtr info, @@ -4623,6 +4674,10 @@ qemuDomainGetVcpus(virDomainPtr dom, =20 ret =3D qemuDomainHelperGetVcpus(vm, info, NULL, NULL, maxinfo, cpumap= s, maplen); =20 + /* append dirty limit data to vcpu info */ + if (qemuDomainGetVcpuDirtyLimit(vm, info, maxinfo) < 0) + goto cleanup; + cleanup: virDomainObjEndAPI(&vm); return ret; --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712458; cv=none; d=zohomail.com; s=zohoarc; b=aXRvKCRnp/KC4n1bamSJy8YCvFZlSI5m7rRCwbFv55B+WyI0W8+uo+3ZXsC5J11HeOVrWswlGrF6WKRkjBTPT3tsjw5arlQb+nYmvQc8ApXp9c55wxC26JJ01KZfWsnLIvvQy8U+ve5cxtVraT3teMh5TEQ+uR9IDf/fnRm/xvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712458; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=AUwlODyy7yPFRFJar7mIqojUGQuQ9+ApMpI8Swz0d9U=; b=CjMCsxmuTy3Ki+zcZQaQMh61mUpiPX9dv7d75Pckhjz67SteDy1L+OqRc1WviNIB5wR3bpeuGdeQEKb1So9DIMyBtssE9dfW7qANyUOE+Tl1pCIz4dTqjZ2XaoBpHinrDTnKVCgObFv6/ebl4rkfz8mHv4+HKHAetT3hi8zFdMo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712458115144.66476309150516; Sun, 30 Jul 2023 03:20:58 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-86-JwwBsD_MNp--pV8vXoQJFA-1; Sun, 30 Jul 2023 06:20:50 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2EF4286801E; Sun, 30 Jul 2023 10:20:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 16FC7492CAE; Sun, 30 Jul 2023 10:20:47 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 5C5AB19451EC; Sun, 30 Jul 2023 10:20:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id DAB8C1946A63 for ; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id C64221121318; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast08.extmail.prod.ext.rdu2.redhat.com [10.11.55.24]) by smtp.corp.redhat.com (Postfix) with ESMTPS id BE4F61121314 for ; Sun, 30 Jul 2023 10:20:41 +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 A17DF380390E for ; Sun, 30 Jul 2023 10:20:41 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-74-x2vMPKIQMwWeJd2_j-yIOA-1; Sun, 30 Jul 2023 06:20:39 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 663A511EF57 for ; Sun, 30 Jul 2023 10:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712457; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=AUwlODyy7yPFRFJar7mIqojUGQuQ9+ApMpI8Swz0d9U=; b=OUP4ZZFe1vsG2BmHzV9g1tgrkrSMm/+BqOpPt9Wo/jAxDMLPdavUvKM/HTvtelfgL3itgu r7r/TzMeokxxCuXXuaTQ7xRx7LYEGcD7OSVNlEL/tr5kDfunQGYsWoW+ZMs8tpGM5Zpb+W 3JufbZ0FRKIK2RL2dbKdlwH8FKnVg88= X-MC-Unique: JwwBsD_MNp--pV8vXoQJFA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: x2vMPKIQMwWeJd2_j-yIOA-1 From: ~hyman Date: Sat, 13 Aug 2022 11:11:15 +0800 Subject: [PATCH Libvirt 07/11] virsh: Extend vcpuinfo api MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-7@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712460175100021 From: Hyman Huang(=E9=BB=84=E5=8B=87) Extend vcpuinfo api to display dirty page rate upper limit info, which is set by 'limit-dirty-page-rate'. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/remote/remote_daemon_dispatch.c | 2 ++ src/remote/remote_driver.c | 2 ++ src/remote/remote_protocol.x | 2 ++ tools/virsh-domain.c | 5 +++++ 4 files changed, 11 insertions(+) diff --git a/src/remote/remote_daemon_dispatch.c b/src/remote/remote_daemon= _dispatch.c index 7144e9e7ca..edf6386653 100644 --- a/src/remote/remote_daemon_dispatch.c +++ b/src/remote/remote_daemon_dispatch.c @@ -2893,6 +2893,8 @@ remoteDispatchDomainGetVcpus(virNetServer *server G_G= NUC_UNUSED, ret->info.info_val[i].state =3D info[i].state; ret->info.info_val[i].cpu_time =3D info[i].cpuTime; ret->info.info_val[i].cpu =3D info[i].cpu; + ret->info.info_val[i].limit =3D info[i].limit; + ret->info.info_val[i].current =3D info[i].current; } =20 /* Don't need to allocate/copy the cpumaps if we make the reasonable diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 4d7682eb32..c03e9e862b 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -2147,6 +2147,8 @@ remoteDomainGetVcpus(virDomainPtr domain, info[i].state =3D ret.info.info_val[i].state; info[i].cpuTime =3D ret.info.info_val[i].cpu_time; info[i].cpu =3D ret.info.info_val[i].cpu; + info[i].limit =3D ret.info.info_val[i].limit; + info[i].current =3D ret.info.info_val[i].current; } =20 for (i =3D 0; i < ret.cpumaps.cpumaps_len; ++i) diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index f0b7f0a5fa..633b9af74e 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -416,6 +416,8 @@ struct remote_vcpu_info { int state; unsigned hyper cpu_time; int cpu; + unsigned hyper limit; + unsigned hyper current; }; =20 /* Wire encoding of virTypedParameter. diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index ba2309eb3c..b51bd7a3d0 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -6935,6 +6935,11 @@ cmdVcpuinfo(vshControl *ctl, const vshCmd *cmd) maxcpu, pretty) < 0) return false; =20 + if (cpuinfo[n].limit !=3D 0) { + vshPrint(ctl, "%-15s %lld\n", _("DirtyRate limit:"), cpuinfo[n= ].limit); + vshPrint(ctl, "%-15s %lld\n", _("DirtyRate current:"), cpuinfo= [n].current); + } + if (n < (ncpus - 1)) vshPrint(ctl, "\n"); } --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712458; cv=none; d=zohomail.com; s=zohoarc; b=Q14BuRriSn6y8XM7xnkHK1MK+c50w7N1ghfUgabOLO9Fdg+Uos7SGNukMTtYXDoBMqbkvcL0rdcpUzNDp92ypLZLotDx7RCD5YpMk6uzty24swaA3iW2TPXsMoYed/8f1IvkUUHBNaRNt6yWvqrH5cuhGoXfqOp4OfvUmQy3d0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712458; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=irZAOmrIpR0zAHZ8GD6dheATF3+kFUWfpKgKR3gMd20=; b=SMvgpYFGf8NX+cM9HfUAhaSk0Q7TWxf+44nGDoUFtCN3FxFX4GDuWC1tmDKukFAszBNb7F72fH+8f4OmnfJIa9pNzXa1GYoHXwO+FrFHbkCWD5QaPLCC+tEj2xl2Kf3XfvlRI93+1kkbJv5wmlvaKZMbW0Aqv5afgcelic4UaPA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712458451518.5308104694385; Sun, 30 Jul 2023 03:20:58 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-60-gh8ORvJ1OQWswBe8yKUWvg-1; Sun, 30 Jul 2023 06:20:52 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2EBED8870D9; Sun, 30 Jul 2023 10:20:50 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0F1F91454149; Sun, 30 Jul 2023 10:20:50 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 775DA1946A4C; Sun, 30 Jul 2023 10:20:47 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 73A1B1946588 for ; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 4D4364094DCB; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast08.extmail.prod.ext.rdu2.redhat.com [10.11.55.24]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 459DB4094DCA for ; Sun, 30 Jul 2023 10:20:45 +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 2B75D3803523 for ; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-140-o-pIUB61PXiGQKDlqHORDQ-1; Sun, 30 Jul 2023 06:20:39 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 8F13411EF66 for ; Sun, 30 Jul 2023 10:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712457; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=irZAOmrIpR0zAHZ8GD6dheATF3+kFUWfpKgKR3gMd20=; b=UEyj0+ga6tlSIKZ0sRWvzYjpKFkBRyUTg02jTTqy4jluaITHKO+tqemqHqOG4LJJ6KlJLb X7+6AMf8OKwJ0Dv34Co34dYBHGHYsbXWmVKD2snyAMRNo/H1rF8rH3teuL3+MF5dLHLsho SWeka93L8JL6Ru1fi5TziPVH+jCC4uM= X-MC-Unique: gh8ORvJ1OQWswBe8yKUWvg-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: o-pIUB61PXiGQKDlqHORDQ-1 From: ~hyman Date: Tue, 09 Aug 2022 07:57:03 +0800 Subject: [PATCH Libvirt 08/11] libvirt: Add virDomainCancelVcpuDirtyLimit API MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-8@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712459700100018 From: Hyman Huang(=E9=BB=84=E5=8B=87) Introduce the virDomainCancelVcpuDirtyLimit API to cancel the upper limit of dirty page rate. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- include/libvirt/libvirt-domain.h | 4 +++ src/driver-hypervisor.h | 6 ++++ src/libvirt-domain.c | 52 ++++++++++++++++++++++++++++++++ src/libvirt_public.syms | 1 + src/remote/remote_driver.c | 1 + src/remote/remote_protocol.x | 13 +++++++- src/remote_protocol-structs | 6 ++++ 7 files changed, 82 insertions(+), 1 deletion(-) diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-dom= ain.h index 4c63d0be7c..ddc4339c7e 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -6524,4 +6524,8 @@ int virDomainSetVcpuDirtyLimit(virDomainPtr domain, int vcpu, unsigned long long rate, unsigned int flags); + +int virDomainCancelVcpuDirtyLimit(virDomainPtr domain, + int vcpu, + unsigned int flags); #endif /* LIBVIRT_DOMAIN_H */ diff --git a/src/driver-hypervisor.h b/src/driver-hypervisor.h index e61b9efca5..4cfd9d1cdc 100644 --- a/src/driver-hypervisor.h +++ b/src/driver-hypervisor.h @@ -1454,6 +1454,11 @@ typedef int unsigned long long rate, unsigned int flags); =20 +typedef int +(*virDrvDomainCancelVcpuDirtyLimit)(virDomainPtr domain, + int vcpu, + unsigned int flags); + typedef struct _virHypervisorDriver virHypervisorDriver; =20 /** @@ -1727,4 +1732,5 @@ struct _virHypervisorDriver { virDrvDomainStartDirtyRateCalc domainStartDirtyRateCalc; virDrvDomainFDAssociate domainFDAssociate; virDrvDomainSetVcpuDirtyLimit domainSetVcpuDirtyLimit; + virDrvDomainCancelVcpuDirtyLimit domainCancelVcpuDirtyLimit; }; diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 878d2a6d8c..f122775248 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -14113,3 +14113,55 @@ virDomainSetVcpuDirtyLimit(virDomainPtr domain, virDispatchError(domain->conn); return -1; } + +/** + * virDomainCancelVcpuDirtyLimit: + * + * @domain: pointer to domain object + * @vcpu: mandatory parameter only if the specified index of the + * virtual CPU is cancelled; ignored otherwise. + * @flags: bitwise-OR of supported virDomainDirtyLimitFlags + * + * Dynamically cancel the dirty page rate upper limit of the virtual CPUs. + * + * Returns 0 in case of success, -1 in case of failure. + * + * Since: 9.6.0 + */ +int +virDomainCancelVcpuDirtyLimit(virDomainPtr domain, + int vcpu, + unsigned int flags) +{ + virConnectPtr conn; + + VIR_DOMAIN_DEBUG(domain, "cancel vcpu[%d] dirty page rate limit", vcpu= ); + + virCheckFlags(VIR_DOMAIN_DIRTYLIMIT_VCPU | + VIR_DOMAIN_DIRTYLIMIT_ALL, -1); + + virResetLastError(); + + virCheckDomainReturn(domain, -1); + conn =3D domain->conn; + + virCheckReadOnlyGoto(conn->flags, error); + + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_DOMAIN_DIRTYLIMIT_VCPU, + VIR_DOMAIN_DIRTYLIMIT_ALL, + error); + + if (conn->driver->domainCancelVcpuDirtyLimit) { + int ret; + ret =3D conn->driver->domainCancelVcpuDirtyLimit(domain, vcpu, fla= gs); + if (ret < 0) + goto error; + return ret; + } + + virReportUnsupportedError(); + + error: + virDispatchError(domain->conn); + return -1; +} diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms index 6fc01b518f..a6a7980cbc 100644 --- a/src/libvirt_public.syms +++ b/src/libvirt_public.syms @@ -935,6 +935,7 @@ LIBVIRT_9.0.0 { LIBVIRT_9.6.0 { global: virDomainSetVcpuDirtyLimit; + virDomainCancelVcpuDirtyLimit; } LIBVIRT_9.0.0; =20 # .... define new API here using predicted next version number .... diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index c03e9e862b..4782de395f 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -8129,6 +8129,7 @@ static virHypervisorDriver hypervisor_driver =3D { .domainSetLaunchSecurityState =3D remoteDomainSetLaunchSecurityState, = /* 8.0.0 */ .domainFDAssociate =3D remoteDomainFDAssociate, /* 9.0.0 */ .domainSetVcpuDirtyLimit =3D remoteDomainSetVcpuDirtyLimit, /* 9.6.0 */ + .domainCancelVcpuDirtyLimit =3D remoteDomainCancelVcpuDirtyLimit, /* 9= .6.0 */ }; =20 static virNetworkDriver network_driver =3D { diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index 633b9af74e..49f0b44e34 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -3945,6 +3945,12 @@ struct remote_domain_set_vcpu_dirty_limit_args { unsigned int flags; }; =20 +struct remote_domain_cancel_vcpu_dirty_limit_args { + remote_nonnull_domain dom; + int vcpu; + unsigned int flags; +}; + /*----- Protocol. -----*/ =20 /* Define the program number, protocol version and procedure numbers here.= */ @@ -6989,5 +6995,10 @@ enum remote_procedure { * @generate: both * @acl: domain:write */ - REMOTE_PROC_DOMAIN_SET_VCPU_DIRTY_LIMIT =3D 444 + REMOTE_PROC_DOMAIN_SET_VCPU_DIRTY_LIMIT =3D 444, + /** + * @generate: both + * @acl: domain:write + */ + REMOTE_PROC_DOMAIN_CANCEL_VCPU_DIRTY_LIMIT =3D 445 }; diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index f7543ec667..29963a8ab5 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -3279,6 +3279,11 @@ struct remote_domain_set_vcpu_dirty_limit_args { uint64_t rate; u_int flags; }; +struct remote_domain_cancel_vcpu_dirty_limit_args { + remote_nonnull_domain dom; + int vcpu; + u_int flags; +}; enum remote_procedure { REMOTE_PROC_CONNECT_OPEN =3D 1, REMOTE_PROC_CONNECT_CLOSE =3D 2, @@ -3724,4 +3729,5 @@ enum remote_procedure { REMOTE_PROC_DOMAIN_ABORT_JOB_FLAGS =3D 442, REMOTE_PROC_DOMAIN_FD_ASSOCIATE =3D 443, REMOTE_PROC_DOMAIN_SET_VCPU_DIRTY_LIMIT =3D 444, + REMOTE_PROC_DOMAIN_CANCEL_VCPU_DIRTY_LIMIT =3D 445, }; --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712457; cv=none; d=zohomail.com; s=zohoarc; b=Tg/RHE/Zxa4+Kbv5PXpAgacSl24vcMx1iVsyIrOWtw5hs3adn0elLNyXtwZiGLhk1jYggKhKe9sVoo4DzyTKHIAecKDRCeDMbC4KqQO/jVFqKR2hHYHxD3L0/BcNxsdpRZc47ckR7gI6oEyccRTXavXcJ30CSD94FYerBPWIMcc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712457; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=H0OaADEzfIh9UPHpuj11CqewYLBmQKn04HP8yvQJi0Y=; b=VJt1Acl67C/UiJHJHVrYbq3sz2X4a8aTAKHvsa5EM3j6GedQ4jfPxbCLKDgIQuvffxwy82o9nyGr8e0LSP0qN242F903Q/8UJVxMOWd6TMll7PsPKvGD2hTaLwlAXRKLg36VMP7dv99+BgrA612x5COgqIyNCPPpk5EQjJSNO9s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712457254269.97257998420866; Sun, 30 Jul 2023 03:20:57 -0700 (PDT) Received: from mimecast-mx02.redhat.com (66.187.233.73 [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-383-B9qpFZQxNEe6Qvb06YJbaQ-1; Sun, 30 Jul 2023 06:20:51 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 497E03C0ED68; Sun, 30 Jul 2023 10:20:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2D64840C2072; Sun, 30 Jul 2023 10:20:48 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id A97801946594; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id AF1CB1946594 for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 9197B492B02; Sun, 30 Jul 2023 10:20:42 +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 89CD1492CA6 for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-inbound-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 6D88186F122 for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-5-_xRFIfq8PKCNfwbemchCbg-1; Sun, 30 Jul 2023 06:20:40 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id B7D2811EF7D for ; Sun, 30 Jul 2023 10:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712456; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=H0OaADEzfIh9UPHpuj11CqewYLBmQKn04HP8yvQJi0Y=; b=heAdokH6IWcXo+nVPrHcwpHsGkUkwUFmEVdhT9F5RVfWQdQHClSHuF082mHmZDsCz7Qaky gfFv/Jbg0RYVJxAwmt/bBlBuQLqF6vDgeW6LGsAuCDsE3uda4M0AkQmx8z8urz6RqsrZCR ATbV+cvY/euP+63v8I15k6KzIVOnDgY= X-MC-Unique: B9qpFZQxNEe6Qvb06YJbaQ-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: _xRFIfq8PKCNfwbemchCbg-1 From: ~hyman Date: Tue, 09 Aug 2022 08:05:21 +0800 Subject: [PATCH Libvirt 09/11] qemu_driver: Implement qemuDomainCancelVcpuDirtyLimit MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-9@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712458187100013 From: Hyman Huang(=E9=BB=84=E5=8B=87) Implement qemuDomainCancelVcpuDirtyLimit to cancel vcpu dirty page rate upper limit. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- src/qemu/qemu_driver.c | 47 ++++++++++++++++++++++++++++++++++++ src/qemu/qemu_monitor.c | 11 +++++++++ src/qemu/qemu_monitor.h | 4 +++ src/qemu/qemu_monitor_json.c | 41 +++++++++++++++++++++++++++++++ src/qemu/qemu_monitor_json.h | 4 +++ 5 files changed, 107 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f7ff3b7098..c4ffacd88c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -20019,6 +20019,52 @@ qemuDomainSetVcpuDirtyLimit(virDomainPtr domain, return ret; } =20 +static int +qemuDomainCancelVcpuDirtyLimit(virDomainPtr domain, + int vcpu, + unsigned int flags) +{ + virDomainObj *vm =3D NULL; + qemuDomainObjPrivate *priv; + int ret =3D -1; + + if (!(vm =3D qemuDomainObjFromDomain(domain))) + return -1; + + if (virDomainCancelVcpuDirtyLimitEnsureACL(domain->conn, vm->def)) + goto cleanup; + + priv =3D vm->privateData; + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VCPU_DIRTY_LIMIT)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("QEMU does not support setting vcpu dirty page ra= te limit")); + goto cleanup; + } + + if (virDomainObjBeginJob(vm, VIR_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjCheckActive(vm) < 0) + goto endjob; + + qemuDomainObjEnterMonitor(vm); + if (flags & VIR_DOMAIN_DIRTYLIMIT_VCPU) { + VIR_DEBUG("Cancel vcpu[%d] dirty page rate limit", vcpu); + ret =3D qemuMonitorCancelVcpuDirtyLimit(priv->mon, vcpu); + } else { + VIR_DEBUG("Cancel all vcpus dirty page rate limit of vm"); + ret =3D qemuMonitorCancelVcpuDirtyLimit(priv->mon, -1); + } + qemuDomainObjExitMonitor(vm); + + endjob: + virDomainObjEndJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + static virHypervisorDriver qemuHypervisorDriver =3D { .name =3D QEMU_DRIVER_NAME, .connectURIProbe =3D qemuConnectURIProbe, @@ -20269,6 +20315,7 @@ static virHypervisorDriver qemuHypervisorDriver =3D= { .domainSetLaunchSecurityState =3D qemuDomainSetLaunchSecurityState, /*= 8.0.0 */ .domainFDAssociate =3D qemuDomainFDAssociate, /* 9.0.0 */ .domainSetVcpuDirtyLimit =3D qemuDomainSetVcpuDirtyLimit, /* 9.6.0 */ + .domainCancelVcpuDirtyLimit =3D qemuDomainCancelVcpuDirtyLimit, /* 9.6= .0 */ }; =20 =20 diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index a8a6a6e4e2..13cb4f1e79 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -4530,3 +4530,14 @@ qemuMonitorQueryVcpuDirtyLimit(qemuMonitor *mon, =20 return qemuMonitorJSONQueryVcpuDirtyLimit(mon, info); } + +int +qemuMonitorCancelVcpuDirtyLimit(qemuMonitor *mon, + int vcpu) +{ + VIR_DEBUG("cancel vcpu %d dirty page rate limit", vcpu); + + QEMU_CHECK_MONITOR(mon); + + return qemuMonitorJSONCancelVcpuDirtyLimit(mon, vcpu); +} diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 1828bb202a..cbfd4fdaaf 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -1601,3 +1601,7 @@ struct _qemuMonitorVcpuDirtyLimitInfo { int qemuMonitorQueryVcpuDirtyLimit(qemuMonitor *mon, qemuMonitorVcpuDirtyLimitInfo *info); + +int +qemuMonitorCancelVcpuDirtyLimit(qemuMonitor *mon, + int vcpu); diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index f8406c1857..c0a79dfa97 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -8998,3 +8998,44 @@ qemuMonitorJSONQueryVcpuDirtyLimit(qemuMonitor *mon, =20 return qemuMonitorJSONExtractVcpuDirtyLimitInfo(data, info); } + +/** + * qemuMonitorJSONCancelVcpuDirtyLimit: + * @mon: monitor object + * @vcpu: virtual cpu index to be cancelled, -1 means all virtual cpus + * + * Returns -1 on failure. + */ +int +qemuMonitorJSONCancelVcpuDirtyLimit(qemuMonitor *mon, + int vcpu) +{ + g_autoptr(virJSONValue) cmd =3D NULL; + g_autoptr(virJSONValue) reply =3D NULL; + + if (vcpu < -1) + return -1; + + if (vcpu >=3D 0) { + /* cancel vcpu dirty page rate limit */ + if (!(cmd =3D qemuMonitorJSONMakeCommand("cancel-vcpu-dirty-limit", + "i:cpu-index", vcpu, + NULL))) { + return -1; + } + } else if (vcpu =3D=3D -1) { + /* cancel vm dirty page rate limit */ + if (!(cmd =3D qemuMonitorJSONMakeCommand("cancel-vcpu-dirty-limit= ", + NULL))) { + return -1; + } + } + + if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0) + return -1; + + if (qemuMonitorJSONCheckError(cmd, reply) < 0) + return -1; + + return 0; +} diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h index bd8131508b..0549627c81 100644 --- a/src/qemu/qemu_monitor_json.h +++ b/src/qemu/qemu_monitor_json.h @@ -834,3 +834,7 @@ qemuMonitorJSONSetVcpuDirtyLimit(qemuMonitor *mon, int qemuMonitorJSONQueryVcpuDirtyLimit(qemuMonitor *mon, qemuMonitorVcpuDirtyLimitInfo *info); + +int +qemuMonitorJSONCancelVcpuDirtyLimit(qemuMonitor *mon, + int vcpu); --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712455; cv=none; d=zohomail.com; s=zohoarc; b=WPvxOZ1PzvCDSNMdL+5vLBxhu83pCLDhAxj7bmU3QhXzViXvuus/+926Uuqd4YJSamYQXUyQDXn+K+A4w6WrD1FJ3HfN85oee6/3k013wa/mhyNZxhAnTzc6JKe1K40I5gqqksC8h9atLJRFpwIj/MnWKKjD6dF7wC5OFlAFZVY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712455; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=J/DCfhPRBoqwcz+dM9mIiasrFoM6iM56bdWAN5UfHEM=; b=SyGx+Rxw+bZcwoLlglc2t7fOuse7ZJNvwCMdI5Gw1D4cKf+m9n8xjbFjEBdN9aOQxcnWxUh8g+aQGEs9kv5RgQlt8m6VGq8Xt99Eh09B6U3AeyqihkZnIxQwVHDRIT0TkhZUfsTGAEceDQwTKrJKQ2xdep6Gphh5ASj7JbwHtn0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712455784844.5397595982537; Sun, 30 Jul 2023 03:20:55 -0700 (PDT) Received: from mimecast-mx02.redhat.com (66.187.233.73 [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-264-dWY1RnmBMYSYuosnUkrRHA-1; Sun, 30 Jul 2023 06:20:52 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8B2473C0F676; Sun, 30 Jul 2023 10:20:49 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 705D948FB00; Sun, 30 Jul 2023 10:20:49 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4585919451DD; Sun, 30 Jul 2023 10:20:46 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 4589319451CF for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 28595F7843; Sun, 30 Jul 2023 10:20:42 +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 20CABF7842 for ; Sun, 30 Jul 2023 10:20:42 +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 0688385A58A for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-226-v_maAsYsNaW6_qlPm4MC0w-1; Sun, 30 Jul 2023 06:20:39 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id E062A11EF7F for ; Sun, 30 Jul 2023 10:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712454; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=J/DCfhPRBoqwcz+dM9mIiasrFoM6iM56bdWAN5UfHEM=; b=hxAvmcLMB0WcRW9nbmlwZZVhW1REvZxwHBtmeV7wDhHkLD7Ift6efkvBIZP0G9JPLQYx2Y 5HjxndBMC9XKfX8vVTC1+AlvmpUhAI0ELgDm7jMHjAh7xMKhNFw+Q0eSwcjrHB1Xn0oKPO LOpUUpg4bZA/RYtfk8AsHNZfFmOHOso= X-MC-Unique: dWY1RnmBMYSYuosnUkrRHA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: v_maAsYsNaW6_qlPm4MC0w-1 From: ~hyman Date: Tue, 09 Aug 2022 08:21:39 +0800 Subject: [PATCH Libvirt 10/11] virsh: Add cancel option of limit-dirty-page-rate api MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-10@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712457934100011 From: Hyman Huang(=E9=BB=84=E5=8B=87) Add cancel option of limit-dirty-page-rate api to cancel dirty page rate upper limit for virtual CPUs. The following is the usage: $ virsh limit-dirty-page-rate [--rate ] \ [--vcpu ] [--cancel] Specify the 'cancel' option to cancel dirty page rate upper limit. Cancel the specified index of vcpu if 'vcpu' option is specified, cancel all virtual CPUs of a VM otherwise. Cancelling dirty page rate upper limit does not need 'rate' option. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- tools/virsh-domain.c | 82 +++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index b51bd7a3d0..7f112efdfe 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -13829,10 +13829,10 @@ cmdDomDirtyRateCalc(vshControl *ctl, const vshCmd= *cmd) */ static const vshCmdInfo info_limit_dirty_page_rate[] =3D { {.name =3D "help", - .data =3D N_("Set dirty page rate upper limit") + .data =3D N_("Set or cancel dirty page rate upper limit") }, {.name =3D "desc", - .data =3D N_("Set dirty page rate upper limit, " + .data =3D N_("Set or cancel dirty page rate upper limit, " "require dirty-ring size configured") }, {.name =3D NULL} @@ -13842,7 +13842,6 @@ static const vshCmdOptDef opts_limit_dirty_page_rat= e[] =3D { VIRSH_COMMON_OPT_DOMAIN_FULL(0), {.name =3D "rate", .type =3D VSH_OT_INT, - .flags =3D VSH_OFLAG_REQ, .help =3D N_("Upper limit of dirty page rate (MB/s) for " "virtual CPUs") }, @@ -13850,6 +13849,10 @@ static const vshCmdOptDef opts_limit_dirty_page_ra= te[] =3D { .type =3D VSH_OT_INT, .help =3D N_("Index of a virtual CPU") }, + {.name =3D "cancel", + .type =3D VSH_OT_BOOL, + .help =3D N_("Cancel dirty page rate upper limit") + }, {.name =3D NULL} }; =20 @@ -13860,8 +13863,11 @@ cmdLimitDirtyPageRate(vshControl *ctl, const vshCm= d *cmd) int vcpu_idx =3D -1; unsigned long long rate =3D 0; bool vcpu =3D vshCommandOptBool(cmd, "vcpu"); + bool cancel =3D vshCommandOptBool(cmd, "cancel"); unsigned int flags =3D 0; =20 + VSH_EXCLUSIVE_OPTIONS("cancel", "rate"); + if (!(dom =3D virshCommandOptDomain(ctl, cmd, NULL))) return false; =20 @@ -13876,34 +13882,54 @@ cmdLimitDirtyPageRate(vshControl *ctl, const vshC= md *cmd) } } =20 - if (vshCommandOptULongLong(ctl, cmd, "rate", &rate) < 0) - return false; - - if (!rate) { - vshError(ctl, "%s", _("Invalid dirty page rate limit")); - return false; - } + if (!cancel) { + if (vshCommandOptULongLong(ctl, cmd, "rate", &rate) < 0) + return false; =20 - if (vcpu) { - /* set specified vcpu dirty page rate limit of vm */ - if (virDomainSetVcpuDirtyLimit(dom, vcpu_idx, - rate, flags | VIR_DOMAIN_DIRTYLIMIT_VCPU) < 0) + if (!rate) { + vshError(ctl, "%s", _("Invalid dirty page rate limit")); return false; - g_autofree char *info =3D - g_strdup_printf("Set vcpu[%d] dirty page rate upper " - "limit %lld(MB/s) successfully", - vcpu_idx, rate); - vshPrintExtra(ctl, _("%1$s\n"), info); + } + + if (vcpu) { + /* set specified vcpu dirty page rate limit of vm */ + if (virDomainSetVcpuDirtyLimit(dom, vcpu_idx, + rate, flags | VIR_DOMAIN_DIRTYLIMIT_VCPU) < 0) + return false; + g_autofree char *info =3D + g_strdup_printf("Set vcpu[%d] dirty page rate upper " + "limit %lld(MB/s) successfully", + vcpu_idx, rate); + vshPrintExtra(ctl, _("%1$s\n"), info); + } else { + /* set all vcpu dirty page rate limit of vm */ + if (virDomainSetVcpuDirtyLimit(dom, IGNORED_CPU_INDEX, + rate, flags | VIR_DOMAIN_DIRTYLIMIT_ALL) < 0) + return false; + g_autofree char *info =3D + g_strdup_printf("Set dirty page rate limit %lld(MB/s) " + "on all virtual CPUs successfully", + rate); + vshPrintExtra(ctl, _("%1$s\n"), info); + } } else { - /* set all vcpu dirty page rate limit of vm */ - if (virDomainSetVcpuDirtyLimit(dom, IGNORED_CPU_INDEX, - rate, flags | VIR_DOMAIN_DIRTYLIMIT_ALL) < 0) - return false; - g_autofree char *info =3D - g_strdup_printf("Set dirty page rate limit %lld(MB/s) " - "on all virtual CPUs successfully", - rate); - vshPrintExtra(ctl, _("%1$s\n"), info); + if (vcpu) { + /* cancel specified vcpu dirty page rate limit of vm */ + if (virDomainCancelVcpuDirtyLimit(dom, vcpu_idx, + flags | VIR_DOMAIN_DIRTYLIMIT_VCPU) < 0) + return false; + g_autofree char *info =3D + g_strdup_printf("Cancel vcpu[%d] dirty page rate limit " + "successfully", vcpu); + vshPrintExtra(ctl, _("%1$s\n"), info); + } else { + /* cancel all vcpu dirty page rate limit of vm */ + if (virDomainCancelVcpuDirtyLimit(dom, IGNORED_CPU_INDEX, + flags | VIR_DOMAIN_DIRTYLIMIT_ALL) < 0) + return false; + vshPrintExtra(ctl, "%s", _("Cancel dirty page rate upper " + "limit on all virtual CPUs successfully\n")); + } } =20 return true; --=20 2.38.5 From nobody Sun May 19 14:14:30 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; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail(p=none dis=none) header.from=git.sr.ht ARC-Seal: i=1; a=rsa-sha256; t=1690712452; cv=none; d=zohomail.com; s=zohoarc; b=CP0WHdLLUre8UD+b5ZD2et0fEgnVSd2OF5tYxBEquDTT+iWsw75thwvnMUtUIFpQQDrjZdizU4jfalbEZ/HJitJfEmfSTZr6mHFtObjlAVuT3HW3BH8JkcjupB5VG2SQ4vAxf+xhW6jVuBmLmP3uftLjQj5iuM988/dvl45FchU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1690712452; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To; bh=8RUhRgKbxaOxo2YD2uPqyns43JI14WrIRVA59kMg93U=; b=KnIq4Z9ePo4EQE9omPSraz8pn7DDjkAt14vnNMbqElFj9+q0/c93Bi7a/lWuqD078tKlYBM2JLntooJ4c3GArjaXSy6E9I1FJ0w/JKJ+5iU6toONUdjHDxsN/551li75r5bQAMZv3y+5P3sRmekgpGi0CEcyfhGIl2umnKqu0Os= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=fail header.from= (p=none dis=none) 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 1690712452494384.9154259063745; Sun, 30 Jul 2023 03:20:52 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-448-52KK5nOHMh2FBGhweMtiyA-1; Sun, 30 Jul 2023 06:20:48 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 091E5185A793; Sun, 30 Jul 2023 10:20:46 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id E7A2B492CA6; Sun, 30 Jul 2023 10:20:45 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 9250219451DB; Sun, 30 Jul 2023 10:20:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id E057C1946594 for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id D1B6BF7842; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast10.extmail.prod.ext.rdu2.redhat.com [10.11.55.26]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C9D12F7843 for ; Sun, 30 Jul 2023 10:20:42 +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 B430E1C06905 for ; Sun, 30 Jul 2023 10:20:42 +0000 (UTC) Received: from mail-b.sr.ht (mail-b.sr.ht [173.195.146.151]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-29-qZ8CgOPZMI2U2Jmq8n6yxA-1; Sun, 30 Jul 2023 06:20:40 -0400 Received: from git.sr.ht (unknown [173.195.146.142]) by mail-b.sr.ht (Postfix) with ESMTPSA id 14EB511EF8C for ; Sun, 30 Jul 2023 10:20:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1690712451; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=8RUhRgKbxaOxo2YD2uPqyns43JI14WrIRVA59kMg93U=; b=U2cnYOVJmn2405Er1zafw6Z1BqAPdEYSll4hSVEoofid7RJpY5PPaSd4QlQBv4is/hdfds AesL5UZakI3vbupBvqXy6vYNVzCYpV4jdKvnNLZdi9tCPkfML1e8W2pNUYswqGz76S1cj3 ylpLBIqCVDtLB2qdV2n5lMSK/tj909Y= X-MC-Unique: 52KK5nOHMh2FBGhweMtiyA-1 X-Original-To: libvir-list@listman.corp.redhat.com X-MC-Unique: qZ8CgOPZMI2U2Jmq8n6yxA-1 From: ~hyman Date: Sat, 13 Aug 2022 16:26:50 +0800 Subject: [PATCH Libvirt 11/11] NEWS: Document limit dirty page rate APIs MIME-Version: 1.0 Message-ID: <169071243700.22823.6002973365882521706-11@git.sr.ht> In-Reply-To: <169071243700.22823.6002973365882521706-0@git.sr.ht> To: libvir-list@redhat.com 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-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: ~hyman Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: git.sr.ht Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1690712453511100005 From: Hyman Huang(=E9=BB=84=E5=8B=87) New libvirt APIs for limiting dirty page rate are introduced. Document this change. Signed-off-by: Hyman Huang(=E9=BB=84=E5=8B=87) --- NEWS.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 1de8314a61..76a569736c 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -16,6 +16,22 @@ v9.6.0 (unreleased) * **Removed features** =20 * **New features** + * qemu: Add support for limiting dirty page rate + + New API ``virDomainSetVcpuDirtyLimit()`` and virsh command + ``limit-dirty-page-rate`` are added to set the dirty page rate upper + limit. + + New API ``virDomainCancelVcpuDirtyLimit()`` and virsh command option + ``limit-dirty-page-rate --cancel`` are added to cancel the dirty page + rate upper limit. + + Note that this feature requires dirty-ring size to be configured. + + * qemu: Add support for querying dirty page rate upper limit + + User can query the dirty page rate limit with the virsh command + ``vcpuinfo``. =20 * **Improvements** =20 --=20 2.38.5