From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: "lihuisong (C)" <lihuisong@huawei.com>
Cc: "Morten Brørup" <mb@smartsharesystems.com>,
dev@dpdk.org, weh@microsoft.com,
"longli@microsoft.com >> Long Li" <longli@microsoft.com>,
alan.elder@microsoft.com, thomas@monjalon.net,
ferruh.yigit@amd.com, anatoly.burakov@intel.com,
david.hunt@intel.com, sivaprasad.tummala@amd.com,
liuyonglong@huawei.com
Subject: Re: [PATCH 0/2] introduce PM QoS interface
Date: Fri, 22 Mar 2024 10:55:47 -0700 [thread overview]
Message-ID: <20240322175547.GB11150@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> (raw)
In-Reply-To: <9e85c849-99d9-2d81-b79f-28fc49a54e4f@huawei.com>
On Fri, Mar 22, 2024 at 04:54:01PM +0800, lihuisong (C) wrote:
> +Tyler, +Alan, +Wei, +Long for asking this similar feature on Windows.
>
> 在 2024/3/21 21:30, Morten Brørup 写道:
> >>From: lihuisong (C) [mailto:lihuisong@huawei.com]
> >>Sent: Thursday, 21 March 2024 04.04
> >>
> >>Hi Moren,
> >>
> >>Thanks for your revew.
> >>
> >>在 2024/3/20 22:05, Morten Brørup 写道:
> >>>>From: Huisong Li [mailto:lihuisong@huawei.com]
> >>>>Sent: Wednesday, 20 March 2024 11.55
> >>>>
> >>>>The system-wide CPU latency QoS limit has a positive impact on the idle
> >>>>state selection in cpuidle governor.
> >>>>
> >>>>Linux creates a cpu_dma_latency device under '/dev' directory to obtain the
> >>>>CPU latency QoS limit on system and send the QoS request for userspace.
> >>>>Please see the PM QoS framework in the following link:
> >>>>https://docs.kernel.org/power/pm_qos_interface.html?highlight=qos
> >>>>This feature is supported by kernel-v2.6.25.
> >>>>
> >>>>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.
> >>>>
> >>>>So this series introduce PM QoS interface.
> >>>This looks like a 1:1 wrapper for a Linux kernel feature.
> >>right
> >>>Does Windows or BSD offer something similar?
> >>How do we know Windows or BSD support this similar feature?
> >Ask Windows experts or research using Google.
> I download freebsd source code, I didn't find this similar feature.
> They don't even support cpuidle feature(this QoS feature affects cpuilde.).
> I don't find any useful about this on Windows from google.
>
>
> @Tyler, @Alan, @Wei and @Long
>
> Do you know windows support that userspace read and send CPU latency
> which has an impact on deep level of CPU idle?
it is unlikely you'll find an api that let's you manage things in terms
of raw latency values as the linux knobs here do. windows more often employs
policy centric schemes to permit the system to abstract implementation detail.
powercfg is probably the closest thing you can use to tune the same
things on windows. where you select e.g. the 'performance' scheme but it
won't allow you to pick specific latency numbers.
https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/powercfg-command-line-options
>
> >>The DPDK power lib just work on Linux according to the meson.build under
> >>lib/power.
> >>If they support this features, they can open it.
> >The DPDK power lib currently only works on Linux, yes.
> >But its API should still be designed to be platform agnostic, so the functions can be implemented on other platforms in the future.
> >
> >DPDK is on track to work across multiple platforms, including Windows.
> >We must always consider other platforms, and not design DPDK APIs as if they are for Linux/BSD only.
> totally understand you.
since lib/power isn't built for windows at this time i don't think it's
appropriate to constrain your innovation. i do appreciate the engagement
though and would just offer general guidance that if you can design your
api with some kind of abstraction in mind that would be great and by all
means if you can figure out how to wrangle powercfg /Qh into satisfying the
api in a policy centric way it might be kind of nice.
i'll let other windows experts chime in here if they choose.
thanks!
> >
> >>>Furthermore, any high-res timing should use nanoseconds, not microseconds or
> >>milliseconds.
> >>>I realize that the Linux kernel only uses microseconds for these APIs, but
> >>the DPDK API should use nanoseconds.
> >>Nanoseconds is more precise, it's good.
> >>But DPDK API how use nanoseconds as you said the the Linux kernel only
> >>uses microseconds for these APIs.
> >>Kernel interface just know an integer value with microseconds unit.
> >One solution is to expose nanoseconds in the DPDK API, and in the Linux specific implementation convert from/to microseconds.
> If so, we have to modify the implementation interface on Linux. This
> change the input/output unit about the interface.
> And DPDK also has to do this based on kernel version. It is not good.
> The cpuidle governor select which idle state based on the worst-case
> latency of idle state.
> These the worst-case latency of Cstate reported by ACPI table is in
> microseconds as the section 8.4.1.1. _CST (C States) and 8.4.3.3.
> _LPI (Low Power Idle States) in ACPI spec [1].
> So it is probably not meaning to change this interface implementation.
>
> For the case need PM QoS in DPDK, I think, it is better to set cpu
> latency to zero to prevent service thread from the deeper the idle
> state.
> >You might also want to add a note to the in-line documentation of the relevant functions that the Linux implementation only uses microsecond resolution.
> >
> [1] https://uefi.org/specs/ACPI/6.5/08_Processor_Configuration_and_Control.html
next prev parent reply other threads:[~2024-03-22 17:55 UTC|newest]
Thread overview: 125+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-20 10:55 Huisong Li
2024-03-20 10:55 ` [PATCH 1/2] power: " Huisong Li
2024-03-20 10:55 ` [PATCH 2/2] examples/l3fwd-power: add PM QoS request configuration Huisong Li
2024-03-20 14:05 ` [PATCH 0/2] introduce PM QoS interface Morten Brørup
2024-03-21 3:04 ` lihuisong (C)
2024-03-21 13:30 ` Morten Brørup
2024-03-22 8:54 ` lihuisong (C)
2024-03-22 12:35 ` Morten Brørup
2024-03-26 2:11 ` lihuisong (C)
2024-03-26 8:27 ` Morten Brørup
2024-03-26 12:15 ` lihuisong (C)
2024-03-26 12:46 ` Morten Brørup
2024-03-29 1:59 ` lihuisong (C)
2024-03-22 17:55 ` Tyler Retzlaff [this message]
2024-03-26 2:20 ` lihuisong (C)
2024-03-26 16:04 ` Tyler Retzlaff
2024-06-13 11:20 ` [PATCH v2 0/2] power: " Huisong Li
2024-06-13 11:20 ` [PATCH v2 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-06-14 8:04 ` Morten Brørup
2024-06-18 12:19 ` lihuisong (C)
2024-06-18 12:53 ` Morten Brørup
2024-06-13 11:20 ` [PATCH v2 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-06-19 6:31 ` [PATCH v3 0/2] power: introduce PM QoS interface Huisong Li
2024-06-19 6:31 ` [PATCH v3 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-06-19 14:56 ` Stephen Hemminger
2024-06-20 2:22 ` lihuisong (C)
2024-06-19 15:32 ` Thomas Monjalon
2024-06-20 2:32 ` lihuisong (C)
2024-06-19 6:31 ` [PATCH v3 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-06-19 14:54 ` Stephen Hemminger
2024-06-20 2:24 ` lihuisong (C)
2024-06-19 6:59 ` [PATCH v3 0/2] power: introduce PM QoS interface Morten Brørup
2024-06-27 6:00 ` [PATCH v4 " Huisong Li
2024-06-27 6:00 ` [PATCH v4 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-06-27 15:06 ` Stephen Hemminger
2024-06-28 4:07 ` lihuisong (C)
2024-06-27 6:00 ` [PATCH v4 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-07-02 3:50 ` [PATCH v5 0/2] power: introduce PM QoS interface Huisong Li
2024-07-02 3:50 ` [PATCH v5 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-07-03 1:32 ` zhoumin
2024-07-03 2:52 ` lihuisong (C)
2024-07-02 3:50 ` [PATCH v5 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-07-09 2:29 ` [PATCH v6 0/2] power: introduce PM QoS interface Huisong Li
2024-07-09 2:29 ` [PATCH v6 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-07-09 2:29 ` [PATCH v6 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-07-09 3:07 ` Stephen Hemminger
2024-07-09 3:18 ` lihuisong (C)
2024-07-09 6:31 ` [PATCH v7 0/2] power: introduce PM QoS interface Huisong Li
2024-07-09 6:31 ` [PATCH v7 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-07-09 6:31 ` [PATCH v7 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-07-09 7:25 ` [PATCH v8 0/2] power: introduce PM QoS interface Huisong Li
2024-07-09 7:25 ` [PATCH v8 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-07-09 7:25 ` [PATCH v8 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-08-09 9:50 ` [PATCH v9 0/2] power: introduce PM QoS interface Huisong Li
2024-08-09 9:50 ` [PATCH v9 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-09-10 2:00 ` fengchengwen
2024-09-10 9:32 ` lihuisong (C)
2024-09-12 1:14 ` fengchengwen
2024-08-09 9:50 ` [PATCH v9 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-09-10 2:26 ` fengchengwen
2024-09-10 12:07 ` lihuisong (C)
2024-09-12 1:15 ` fengchengwen
2024-09-12 2:38 ` [PATCH v10 0/2] power: introduce PM QoS interface Huisong Li
2024-09-12 2:38 ` [PATCH v10 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-10-13 1:10 ` Stephen Hemminger
2024-10-14 12:19 ` lihuisong (C)
2024-10-15 9:41 ` lihuisong (C)
2024-10-15 15:45 ` Stephen Hemminger
2024-10-17 2:11 ` lihuisong (C)
2024-10-17 3:20 ` Stephen Hemminger
2024-10-17 8:37 ` lihuisong (C)
2024-10-22 3:10 ` lihuisong (C)
2024-10-14 8:29 ` Konstantin Ananyev
2024-10-15 7:47 ` lihuisong (C)
2024-09-12 2:38 ` [PATCH v10 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-10-14 8:24 ` Konstantin Ananyev
2024-10-14 8:46 ` Konstantin Ananyev
2024-10-15 7:32 ` lihuisong (C)
2024-10-16 0:24 ` Konstantin Ananyev
2024-10-17 2:25 ` lihuisong (C)
2024-10-17 11:14 ` Konstantin Ananyev
2024-09-12 3:07 ` [PATCH v10 0/2] power: introduce PM QoS interface fengchengwen
2024-10-12 2:07 ` lihuisong (C)
2024-10-14 15:27 ` Stephen Hemminger
2024-10-15 9:30 ` lihuisong (C)
2024-10-21 11:42 ` [PATCH v11 " Huisong Li
2024-10-21 11:42 ` [PATCH v11 1/2] power: introduce PM QoS API on CPU wide Huisong Li
2024-10-22 9:08 ` Konstantin Ananyev
2024-10-22 9:41 ` lihuisong (C)
2024-10-21 11:42 ` [PATCH v11 2/2] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-10-22 9:10 ` Konstantin Ananyev
2024-10-22 9:44 ` lihuisong (C)
2024-10-22 12:15 ` Konstantin Ananyev
2024-10-23 6:27 ` lihuisong (C)
2024-10-23 4:09 ` [PATCH v12 0/3] power: introduce PM QoS interface Huisong Li
2024-10-23 4:09 ` [PATCH v12 1/3] power: introduce PM QoS API on CPU wide Huisong Li
2024-10-23 4:09 ` [PATCH v12 2/3] examples/l3fwd-power: fix data overflow when parse command line Huisong Li
2024-10-24 16:34 ` Konstantin Ananyev
2024-10-23 4:09 ` [PATCH v12 3/3] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-10-24 16:44 ` Konstantin Ananyev
2024-10-25 3:35 ` lihuisong (C)
2024-10-25 9:18 ` [PATCH v13 0/3] power: introduce PM QoS interface Huisong Li
2024-10-25 9:18 ` [PATCH v13 1/3] power: introduce PM QoS API on CPU wide Huisong Li
2024-10-25 12:08 ` Tummala, Sivaprasad
2024-10-25 9:18 ` [PATCH v13 2/3] examples/l3fwd-power: fix data overflow when parse command line Huisong Li
2024-10-25 11:27 ` fengchengwen
2024-10-29 5:48 ` Tummala, Sivaprasad
2024-10-25 9:18 ` [PATCH v13 3/3] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-10-29 13:28 ` [PATCH v14 0/3] power: introduce PM QoS interface Huisong Li
2024-10-29 13:28 ` [PATCH v14 1/3] power: introduce PM QoS API on CPU wide Huisong Li
2024-10-29 13:28 ` [PATCH v14 2/3] examples/l3fwd-power: fix data overflow when parse command line Huisong Li
2024-10-29 13:28 ` [PATCH v14 3/3] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-10-29 13:45 ` Konstantin Ananyev
2024-11-04 9:13 ` [PATCH v14 0/3] power: introduce PM QoS interface lihuisong (C)
2024-11-11 2:25 ` [PATCH v15 " Huisong Li
2024-11-11 2:25 ` [PATCH v15 1/3] power: introduce PM QoS API on CPU wide Huisong Li
2024-11-11 10:18 ` Thomas Monjalon
2024-11-11 12:47 ` lihuisong (C)
2024-11-11 2:25 ` [PATCH v15 2/3] examples/l3fwd-power: fix data overflow when parse command line Huisong Li
2024-11-11 2:25 ` [PATCH v15 3/3] examples/l3fwd-power: add PM QoS configuration Huisong Li
2024-11-11 10:29 ` [PATCH v15 0/3] power: introduce PM QoS interface Thomas Monjalon
2024-11-11 9:14 ` [RESEND PATCH " Huisong Li
2024-11-11 9:14 ` [RESEND PATCH v15 1/3] power: introduce PM QoS API on CPU wide Huisong Li
2024-11-11 9:14 ` [RESEND PATCH v15 2/3] examples/l3fwd-power: fix data overflow when parse command line Huisong Li
2024-11-11 9:14 ` [RESEND PATCH v15 3/3] examples/l3fwd-power: add PM QoS configuration Huisong Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240322175547.GB11150@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net \
--to=roretzla@linux.microsoft.com \
--cc=alan.elder@microsoft.com \
--cc=anatoly.burakov@intel.com \
--cc=david.hunt@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@amd.com \
--cc=lihuisong@huawei.com \
--cc=liuyonglong@huawei.com \
--cc=longli@microsoft.com \
--cc=mb@smartsharesystems.com \
--cc=sivaprasad.tummala@amd.com \
--cc=thomas@monjalon.net \
--cc=weh@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).