From nobody Thu Apr 25 06:32:41 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1603003036; cv=none; d=zohomail.com; s=zohoarc; b=H2VL0OLLa8QLbW8CME/q/liNjWOTIFCdyC7nlX9jidbofJuHJlSRjd74jBB6HS1nZchc9Gh2zqase6/Xg3L4VqaYBWAoQxOPCVrIr3k+HxvWFh7VSa37HxOYLErwN/QIXnmqc0eEud5CcD8h6qbzchdXOJAoD4Wre6Pm/EvmLZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603003036; h=Content-Type:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=094Voj9Pe+f113Ykg371HBlGRw6r1/aS/SO+7RDQ/dI=; b=KJo7apJQQJ3hDQwg1+mJVi+EshGDj48OZ2pgFQHz4ksGr84xd0EPiJiS0m2BqVPCJG77KXvRZHon8DSPOofzEvB989sHvaMKdx8YsB/W0n9R3OMy5bKmEbHyqt+wT1EHAf1QulvabMKnzVL1RP0b5GDkpybmHq53I5nYbVbOzdg= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603003036421397.8836922389179; Sat, 17 Oct 2020 23:37:16 -0700 (PDT) Received: from localhost ([::1]:49148 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kU2Jf-0008FX-0L for importer@patchew.org; Sun, 18 Oct 2020 02:37:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40122) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kU2Gw-0006Xi-Dr; Sun, 18 Oct 2020 02:34:26 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:38996 helo=huawei.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kU2Gt-0006C7-Rr; Sun, 18 Oct 2020 02:34:26 -0400 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 02C5AE006DC6BB0AAC8B; Sun, 18 Oct 2020 14:34:11 +0800 (CST) Received: from DESKTOP-80C7KIU.china.huawei.com (10.174.187.210) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.487.0; Sun, 18 Oct 2020 14:34:03 +0800 From: Zhengui li To: , , , Subject: [PATCH] qemu-img: add support for rate limit in qemu-img commit Date: Sun, 18 Oct 2020 06:33:59 +0000 Message-ID: <1603002839-1532-1-git-send-email-lizhengui@huawei.com> X-Mailer: git-send-email 2.6.4.windows.1 MIME-Version: 1.0 X-Originating-IP: [10.174.187.210] X-CFilter-Loop: Reflected Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=45.249.212.35; envelope-from=lizhengui@huawei.com; helo=huawei.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/18 02:34:11 X-ACL-Warn: Detected OS = Linux 3.11 and newer [fuzzy] X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: xieyingtai@huawei.com, lizhengui@huawei.com, qemu-devel@nongnu.org, qemu-block@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Zhengui Currently, there is no rate limit for qemu-img commit. This may cause the task of qemu-img commit to consume all the bandwidth of the storage. This will affect the IO performance of other processes and virtual machines under shared storage. So we add support for offline rate limit in qemu-img commit to get better quality of sevice. Signed-off-by: Zhengui --- qemu-img-cmds.hx | 4 ++-- qemu-img.c | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx index b89c019..ed55b76 100644 --- a/qemu-img-cmds.hx +++ b/qemu-img-cmds.hx @@ -34,9 +34,9 @@ SRST ERST =20 DEF("commit", img_commit, - "commit [--object objectdef] [--image-opts] [-q] [-f fmt] [-t cache] [= -b base] [-d] [-p] filename") + "commit [--object objectdef] [--image-opts] [-q] [-f fmt] [-t cache] [= -b base] [-s speed] [-d] [-p] filename") SRST -.. option:: commit [--object OBJECTDEF] [--image-opts] [-q] [-f FMT] [-t C= ACHE] [-b BASE] [-d] [-p] FILENAME +.. option:: commit [--object OBJECTDEF] [--image-opts] [-q] [-f FMT] [-t C= ACHE] [-b BASE] [-s SPEED] [-d] [-p] FILENAME ERST =20 DEF("compare", img_compare, diff --git a/qemu-img.c b/qemu-img.c index 2103507..74e4d64 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -980,6 +980,7 @@ static int img_commit(int argc, char **argv) CommonBlockJobCBInfo cbi; bool image_opts =3D false; AioContext *aio_context; + int64_t rate_limit =3D 0; =20 fmt =3D NULL; cache =3D BDRV_DEFAULT_CACHE; @@ -991,7 +992,7 @@ static int img_commit(int argc, char **argv) {"image-opts", no_argument, 0, OPTION_IMAGE_OPTS}, {0, 0, 0, 0} }; - c =3D getopt_long(argc, argv, ":f:ht:b:dpq", + c =3D getopt_long(argc, argv, ":f:ht:b:dpqs:", long_options, NULL); if (c =3D=3D -1) { break; @@ -1026,6 +1027,14 @@ static int img_commit(int argc, char **argv) case 'q': quiet =3D true; break; + case 's': { + unsigned long long sval; + if (qemu_strtou64(optarg, NULL, 10, &sval)) { + error_report("rate limit parse failed"); + return 1; + } + rate_limit =3D (int64_t)sval * 1024 * 1024; + } break; case OPTION_OBJECT: { QemuOpts *opts; opts =3D qemu_opts_parse_noisily(&qemu_object_opts, @@ -1099,7 +1108,7 @@ static int img_commit(int argc, char **argv) =20 aio_context =3D bdrv_get_aio_context(bs); aio_context_acquire(aio_context); - commit_active_start("commit", bs, base_bs, JOB_DEFAULT, 0, + commit_active_start("commit", bs, base_bs, JOB_DEFAULT, rate_limit, BLOCKDEV_ON_ERROR_REPORT, NULL, common_block_job_c= b, &cbi, false, &local_err); aio_context_release(aio_context); --=20 1.8.3.1