[PATCH v10 1/2] power: introduce PM QoS API on CPU wide

lihuisong (C) lihuisong at huawei.com
Tue Oct 15 11:41:39 CEST 2024


Hi Stephen,

Can you take a look at this reply so as to send out the next version ASAP?
Thanks.😁

/Huisong
在 2024/10/14 20:19, lihuisong (C) 写道:
> Hi Stephen,
>
>
> 在 2024/10/13 9:10, Stephen Hemminger 写道:
>> On Thu, 12 Sep 2024 10:38:11 +0800
>> Huisong Li <lihuisong at huawei.com> wrote:
>>
>>> +
>>> +PM QoS
>>> +------
>>> +
>>> +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. 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 set and get the CPU resume 
>>> latency based
>>> +on this sysfs.
>>> +
>>> +The ``rte_power_qos_set_cpu_resume_latency()`` function can control 
>>> the CPU's
>>> +idle state selection in Linux and limit just to enter the 
>>> shallowest idle state
>>> +to low the delay of resuming service after sleeping by setting 
>>> strict resume
>>> +latency (zero value).
>>> +
>>> +The ``rte_power_qos_get_cpu_resume_latency()`` function can get the 
>>> resume
>>> +latency on specified CPU.
>>> +
>> These paragraphs need some editing help. The wording is awkward,
>> it uses passive voice, and does not seemed directed at a user audience.
>> If you need help, a writer or AI might help clarify.
> How about the following description:
> -->
> 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. Each cpuidle governor in Linux select which idle state to 
> enter
> based on this CPU resume latency in their idle task.
>
> 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.
>
> The ``rte_power_qos_set_cpu_resume_latency()`` and 
> ``rte_power_qos_get_cpu_resume_latency()``
> can set and get the CPU resume latency based on this per-CPU sysfs.
>
> The ``rte_power_qos_set_cpu_resume_latency()`` can control the CPU's
> idle state selection and limit to enter the shallowest idle state
> to low the delay of resuming service by setting strict resume
> latency (zero value) so as to get better performance.
>>
>> It also ends up in the section associated with Intel UnCore.
>> It would be better after the Turbo Boost section.
> Ack
>>
>>
>>
>>> +    ret = open_core_sysfs_file(&f, "w", 
>>> PM_QOS_SYSFILE_RESUME_LATENCY_US, lcore_id);
>>> +    if (ret != 0) {
>>> +        POWER_LOG(ERR, "Failed to open 
>>> "PM_QOS_SYSFILE_RESUME_LATENCY_US, lcore_id);
>>> +        return ret;
>>> +    }
>> The function open_core_sysfs_file() should have been written to 
>> return FILE *
>> and then it could have same attributes as fopen().
> Do you mean we should save this handle for directly using it to get or 
> set this resume latency?
> If it is I understand, we cannot do it like this. Because qos driver 
> in Linux use the "noop_llseek()" as the .llseek API.
>>
>> The message should include the error reason.
>>
>>     if (open_core_sysfs_file(&f, "w", 
>> PM_QOS_SYSFILE_RESUME_LATENCY_US, lcore_id)) {
>>         POWER_LOG(ERR, "Failed to open " 
>> PM_QOS_SYSFILE_RESUME_LATENCY_US ": %s",
>>             lcore_id, strerror(errno));
> Good idea.  Thanks.
>
>>
>> .


More information about the dev mailing list