Message ID | 20241029132804.27613-1-lihuisong@huawei.com (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 64CDD45C0B; Tue, 29 Oct 2024 14:39:00 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F367542E10; Tue, 29 Oct 2024 14:38:59 +0100 (CET) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id A546A42E10 for <dev@dpdk.org>; Tue, 29 Oct 2024 14:38:57 +0100 (CET) Received: from mail.maildlp.com (unknown [172.19.88.234]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XdBBr1X5Jz1jw1d; Tue, 29 Oct 2024 21:37:24 +0800 (CST) Received: from kwepemm600004.china.huawei.com (unknown [7.193.23.242]) by mail.maildlp.com (Postfix) with ESMTPS id 0670B1401F1; Tue, 29 Oct 2024 21:38:55 +0800 (CST) Received: from localhost.localdomain (10.28.79.22) by kwepemm600004.china.huawei.com (7.193.23.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 29 Oct 2024 21:38:54 +0800 From: Huisong Li <lihuisong@huawei.com> To: <dev@dpdk.org> CC: <mb@smartsharesystems.com>, <thomas@monjalon.net>, <ferruh.yigit@amd.com>, <anatoly.burakov@intel.com>, <david.hunt@intel.com>, <sivaprasad.tummala@amd.com>, <stephen@networkplumber.org>, <konstantin.ananyev@huawei.com>, <david.marchand@redhat.com>, <fengchengwen@huawei.com>, <liuyonglong@huawei.com>, <lihuisong@huawei.com> Subject: [PATCH v14 0/3] power: introduce PM QoS interface Date: Tue, 29 Oct 2024 21:28:01 +0800 Message-ID: <20241029132804.27613-1-lihuisong@huawei.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20240320105529.5626-1-lihuisong@huawei.com> References: <20240320105529.5626-1-lihuisong@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.28.79.22] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemm600004.china.huawei.com (7.193.23.242) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org |
Series |
power: introduce PM QoS interface
|
|
Message
lihuisong (C)
Oct. 29, 2024, 1:28 p.m. UTC
The deeper the idle state, the lower the power consumption, but the longer the resume time. Some service are delay sensitive and very except the low resume time, like interrupt packet receiving mode. And the "/sys/devices/system/cpu/cpuX/power/pm_qos_resume_latency_us" sysfs interface is used to set and get the resume latency limit on the cpuX for userspace. Please see the description in kernel document[1]. Each cpuidle governor in Linux select which idle state to enter based on this CPU resume latency in their idle task. The per-CPU PM QoS API can be used to control this CPU's idle state selection and limit just enter the shallowest idle state to low the delay when wake up from idle state by setting strict resume latency (zero value). [1] https://www.kernel.org/doc/html/latest/admin-guide/abi-testing.html?highlight=pm_qos_resume_latency_us#abi-sys-devices-power-pm-qos-resume-latency-us --- v14: - use parse_uint to parse --cpu-resume-latency instead of adding a new parse_int() v13: - not allow negative value for --cpu-resume-latency. - restore to the original value as Konstantin suggested. v12: - add Acked-by Chengwen and Konstantin - fix overflow issue in l3fwd-power when parse command line - add a command parameter to set CPU resume latency v11: - operate the cpu id the lcore mapped by the new function power_get_lcore_mapped_cpu_id(). v10: - replace LINE_MAX with a custom macro and fix two typos. v9: - move new feature description from release_24_07.rst to release_24_11.rst. v8: - update the latest code to resolve CI warning v7: - remove a dead code rte_lcore_is_enabled in patch[2/2] v6: - update release_24_07.rst based on dpdk repo to resolve CI warning. v5: - use LINE_MAX to replace BUFSIZ, and use snprintf to replace sprintf. v4: - fix some comments basd on Stephen - add stdint.h include - add Acked-by Morten Brørup <mb@smartsharesystems.com> v3: - add RTE_POWER_xxx prefix for some macro in header - add the check for lcore_id with rte_lcore_is_enabled v2: - use PM QoS on CPU wide to replace the one on system wide Huisong Li (3): power: introduce PM QoS API on CPU wide examples/l3fwd-power: fix data overflow when parse command line examples/l3fwd-power: add PM QoS configuration doc/guides/prog_guide/power_man.rst | 19 +++ doc/guides/rel_notes/release_24_11.rst | 5 + .../sample_app_ug/l3_forward_power_man.rst | 5 +- examples/l3fwd-power/main.c | 96 +++++++++++--- lib/power/meson.build | 2 + lib/power/rte_power_qos.c | 123 ++++++++++++++++++ lib/power/rte_power_qos.h | 73 +++++++++++ lib/power/version.map | 4 + 8 files changed, 306 insertions(+), 21 deletions(-) create mode 100644 lib/power/rte_power_qos.c create mode 100644 lib/power/rte_power_qos.h
Comments
Hi Ferruh and Thomas, Kindly ping for merge. 在 2024/10/29 21:28, Huisong Li 写道: > The deeper the idle state, the lower the power consumption, but the longer > the resume time. Some service are delay sensitive and very except the low > resume time, like interrupt packet receiving mode. > > And the "/sys/devices/system/cpu/cpuX/power/pm_qos_resume_latency_us" sysfs > interface is used to set and get the resume latency limit on the cpuX for > userspace. Please see the description in kernel document[1]. > Each cpuidle governor in Linux select which idle state to enter based on > this CPU resume latency in their idle task. > > The per-CPU PM QoS API can be used to control this CPU's idle state > selection and limit just enter the shallowest idle state to low the delay > when wake up from idle state by setting strict resume latency (zero value). > > [1] https://www.kernel.org/doc/html/latest/admin-guide/abi-testing.html?highlight=pm_qos_resume_latency_us#abi-sys-devices-power-pm-qos-resume-latency-us > > --- > v14: > - use parse_uint to parse --cpu-resume-latency instead of adding a new > parse_int() > v13: > - not allow negative value for --cpu-resume-latency. > - restore to the original value as Konstantin suggested. > v12: > - add Acked-by Chengwen and Konstantin > - fix overflow issue in l3fwd-power when parse command line > - add a command parameter to set CPU resume latency > v11: > - operate the cpu id the lcore mapped by the new function > power_get_lcore_mapped_cpu_id(). > v10: > - replace LINE_MAX with a custom macro and fix two typos. > v9: > - move new feature description from release_24_07.rst to release_24_11.rst. > v8: > - update the latest code to resolve CI warning > v7: > - remove a dead code rte_lcore_is_enabled in patch[2/2] > v6: > - update release_24_07.rst based on dpdk repo to resolve CI warning. > v5: > - use LINE_MAX to replace BUFSIZ, and use snprintf to replace sprintf. > v4: > - fix some comments basd on Stephen > - add stdint.h include > - add Acked-by Morten Brørup <mb@smartsharesystems.com> > v3: > - add RTE_POWER_xxx prefix for some macro in header > - add the check for lcore_id with rte_lcore_is_enabled > v2: > - use PM QoS on CPU wide to replace the one on system wide > > > Huisong Li (3): > power: introduce PM QoS API on CPU wide > examples/l3fwd-power: fix data overflow when parse command line > examples/l3fwd-power: add PM QoS configuration > > doc/guides/prog_guide/power_man.rst | 19 +++ > doc/guides/rel_notes/release_24_11.rst | 5 + > .../sample_app_ug/l3_forward_power_man.rst | 5 +- > examples/l3fwd-power/main.c | 96 +++++++++++--- > lib/power/meson.build | 2 + > lib/power/rte_power_qos.c | 123 ++++++++++++++++++ > lib/power/rte_power_qos.h | 73 +++++++++++ > lib/power/version.map | 4 + > 8 files changed, 306 insertions(+), 21 deletions(-) > create mode 100644 lib/power/rte_power_qos.c > create mode 100644 lib/power/rte_power_qos.h >