#
b3477a6b |
| 13-Nov-2024 |
Huisong Li <lihuisong@huawei.com> |
power: fix typo in PM QoS doc
The typo in the guide is hard to understand. Necessary to fix it.
Fixes: dd6fd75bf662 ("power: introduce PM QoS API on CPU wide")
Signed-off-by: Huisong Li <lihuisong
power: fix typo in PM QoS doc
The typo in the guide is hard to understand. Necessary to fix it.
Fixes: dd6fd75bf662 ("power: introduce PM QoS API on CPU wide")
Signed-off-by: Huisong Li <lihuisong@huawei.com>
show more ...
|
#
dd6fd75b |
| 11-Nov-2024 |
Huisong Li <lihuisong@huawei.com> |
power: introduce PM QoS API on CPU wide
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 ti
power: introduce PM QoS API on CPU wide
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 control this CPU's idle state selection and limit just enter the shallowest idle state to low the delay when wake up from by setting strict resume latency (zero value).
Signed-off-by: Huisong Li <lihuisong@huawei.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
show more ...
|
#
da4d64d0 |
| 28-Oct-2024 |
Sivaprasad Tummala <sivaprasad.tummala@amd.com> |
power/amd_uncore: add uncore for AMD EPYC processors
This patch introduces driver support for power management of uncore components in AMD EPYC processors.
Signed-off-by: Sivaprasad Tummala <sivapr
power/amd_uncore: add uncore for AMD EPYC processors
This patch introduces driver support for power management of uncore components in AMD EPYC processors.
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
show more ...
|
#
ebe99d35 |
| 28-Oct-2024 |
Sivaprasad Tummala <sivaprasad.tummala@amd.com> |
power: refactor uncore power management
This patch refactors the power management library, addressing uncore power management. The primary changes involve the creation of dedicated directories for e
power: refactor uncore power management
This patch refactors the power management library, addressing uncore power management. The primary changes involve the creation of dedicated directories for each driver within 'drivers/power/uncore/*'. The adjustment of meson.build files enables the selective activation of individual drivers.
This refactor significantly improves code organization, enhances clarity and boosts maintainability. It lays the foundation for more focused development on individual drivers and facilitates seamless integration of future enhancements, particularly the AMD uncore driver.
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com> Acked-by: Huisong Li <lihuisong@huawei.com>
show more ...
|
#
9c75ff42 |
| 08-Feb-2023 |
David Hunt <david.hunt@intel.com> |
power: remove experimental empty poll API
The API "empty poll" is removed, which has been in an experimental state since it was added.
This API is no longer needed as it is superseded by the PMD Po
power: remove experimental empty poll API
The API "empty poll" is removed, which has been in an experimental state since it was added.
This API is no longer needed as it is superseded by the PMD Power Management monitor/pause/scale callback mechanism.
Signed-off-by: David Hunt <david.hunt@intel.com> Acked-by: Reshma Pattan <reshma.pattan@intel.com>
show more ...
|
#
b0058c83 |
| 02-Nov-2022 |
Reshma Pattan <reshma.pattan@intel.com> |
doc: add removal warning for power empty poll API
Add removal warning for experimental empty poll API.
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: David Hunt <david.hunt@intel.
doc: add removal warning for power empty poll API
Add removal warning for experimental empty poll API.
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com> Acked-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
60b8a661 |
| 06-Oct-2022 |
Tadhg Kearney <tadhg.kearney@intel.com> |
power: add Intel uncore frequency control
Add API to allow uncore frequency adjustment.
Uncore is a term used by Intel to describe function of a microprocessor that are closely connected to the cor
power: add Intel uncore frequency control
Add API to allow uncore frequency adjustment.
Uncore is a term used by Intel to describe function of a microprocessor that are closely connected to the core to achieve high performance.
This is done through manipulating related uncore frequency control sysfs entries to adjust the minimum and maximum uncore frequency values and works on Linux for Intel hardware.
Signed-off-by: Tadhg Kearney <tadhg.kearney@intel.com> Reviewed-by: David Hunt <david.hunt@intel.com> Acked-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
42651168 |
| 02-Jun-2022 |
Kevin Laatz <kevin.laatz@intel.com> |
power: add get/set min/max scaling frequencies API
Add new get/set API to allow the user or application to set the minimum and maximum frequencies to use when scaling. Previously, the frequency rang
power: add get/set min/max scaling frequencies API
Add new get/set API to allow the user or application to set the minimum and maximum frequencies to use when scaling. Previously, the frequency range was determined by the HW capabilities of the CPU. With this new API, the user or application can constrain this if required.
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com> Acked-by: Ray Kinsella <mdr@ashroe.eu> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
4a8fbc28 |
| 02-Jun-2022 |
Kevin Laatz <kevin.laatz@intel.com> |
power: add get/set pause duration API
Add new get/set API for configuring 'pause_duration' which used to adjust the pause mode callback duration.
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
power: add get/set pause duration API
Add new get/set API for configuring 'pause_duration' which used to adjust the pause mode callback duration.
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com> Acked-by: Ray Kinsella <mdr@ashroe.eu> Acked-by: Anatoly Burakov <anatoly.burakov@intel.com> Tested-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
9e9e945b |
| 02-Jun-2022 |
Kevin Laatz <kevin.laatz@intel.com> |
power: add get/set empty-poll maximum API
Add new get/set APIs to configure emptypoll max which is used to determine when a queue can go into sleep state.
Signed-off-by: Kevin Laatz <kevin.laatz@in
power: add get/set empty-poll maximum API
Add new get/set APIs to configure emptypoll max which is used to determine when a queue can go into sleep state.
Signed-off-by: Kevin Laatz <kevin.laatz@intel.com> Acked-by: Ray Kinsella <mdr@ashroe.eu> Tested-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
7580f973 |
| 24-Nov-2021 |
David Hunt <david.hunt@intel.com> |
doc: add power management scale mode reaction time note
When using PMD Power Management, scale mode reacts slower than monitor mode and pause mode. Add note in user guide to this effect.
Signed-off
doc: add power management scale mode reaction time note
When using PMD Power Management, scale mode reacts slower than monitor mode and pause mode. Add note in user guide to this effect.
Signed-off-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
f53fe635 |
| 09-Jul-2021 |
Anatoly Burakov <anatoly.burakov@intel.com> |
power: support monitoring multiple Rx queues
Use the new multi-monitor intrinsic to allow monitoring multiple ethdev Rx queues while entering the energy efficient power state. The multi version will
power: support monitoring multiple Rx queues
Use the new multi-monitor intrinsic to allow monitoring multiple ethdev Rx queues while entering the energy efficient power state. The multi version will be used unconditionally if supported, and the UMWAIT one will only be used when multi-monitor is not supported by the hardware.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Tested-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
5dff9a72 |
| 09-Jul-2021 |
Anatoly Burakov <anatoly.burakov@intel.com> |
power: support callbacks for multiple Rx queues
Currently, there is a hard limitation on the PMD power management support that only allows it to support a single queue per lcore. This is not ideal a
power: support callbacks for multiple Rx queues
Currently, there is a hard limitation on the PMD power management support that only allows it to support a single queue per lcore. This is not ideal as most DPDK use cases will poll multiple queues per core.
The PMD power management mechanism relies on ethdev Rx callbacks, so it is very difficult to implement such support because callbacks are effectively stateless and have no visibility into what the other ethdev devices are doing. This places limitations on what we can do within the framework of Rx callbacks, but the basics of this implementation are as follows:
- Replace per-queue structures with per-lcore ones, so that any device polled from the same lcore can share data - Any queue that is going to be polled from a specific lcore has to be added to the list of queues to poll, so that the callback is aware of other queues being polled by the same lcore - Both the empty poll counter and the actual power saving mechanism is shared between all queues polled on a particular lcore, and is only activated when all queues in the list were polled and were determined to have no traffic. - The limitation on UMWAIT-based polling is not removed because UMWAIT is incapable of monitoring more than one address.
Also, while we're at it, update and improve the docs.
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com> Tested-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
682a6454 |
| 22-Jan-2021 |
Liang Ma <liang.j.ma@intel.com> |
power: add ethdev power management
Add a simple on/off switch that will enable saving power when no packets are arriving. It is based on counting the number of empty polls and, when the number reach
power: add ethdev power management
Add a simple on/off switch that will enable saving power when no packets are arriving. It is based on counting the number of empty polls and, when the number reaches a certain threshold, entering an architecture-defined optimized power state that will either wait until a TSC timestamp expires, or when packets arrive.
This API mandates a core-to-single-queue mapping (that is, multiple queued per device are supported, but they have to be polled on different cores).
This design is using PMD RX callbacks.
1. UMWAIT/UMONITOR:
When a certain threshold of empty polls is reached, the core will go into a power optimized sleep while waiting on an address of next RX descriptor to be written to.
2. TPAUSE/Pause instruction
This method uses the pause (or TPAUSE, if available) instruction to avoid busy polling.
3. Frequency scaling Reuse existing DPDK power library to scale up/down core frequency depending on traffic volume.
Signed-off-by: Liang Ma <liang.j.ma@intel.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
fa77f80f |
| 18-Jan-2019 |
David Hunt <david.hunt@intel.com> |
doc: fix references in power management guide
In the References section in the Power Management overview, both links pointed to the same l3fwd-power app. Fix the links so that one points to l3fwd-po
doc: fix references in power management guide
In the References section in the Power Management overview, both links pointed to the same l3fwd-power app. Fix the links so that one points to l3fwd-power, and the other points to the vm_power_manager sample app.
Signed-off-by: David Hunt <david.hunt@intel.com> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
show more ...
|
#
50360349 |
| 07-Jan-2019 |
Yong Wang <wang.yong19@zte.com.cn> |
doc: fix a typo in power management guide
This patch fixes a typo in programmer's guide. It should be Frequency, not Fequence.
Fixes: 450f0791312c ("power: add traffic pattern aware power control")
doc: fix a typo in power management guide
This patch fixes a typo in programmer's guide. It should be Frequency, not Fequence.
Fixes: 450f0791312c ("power: add traffic pattern aware power control") Cc: stable@dpdk.org
Signed-off-by: Yong Wang <wang.yong19@zte.com.cn>
show more ...
|
#
450f0791 |
| 19-Oct-2018 |
Liang Ma <liang.j.ma@intel.com> |
power: add traffic pattern aware power control
1. Abstract
For packet processing workloads such as DPDK polling is continuous. This means CPU cores always show 100% busy independent of how much wor
power: add traffic pattern aware power control
1. Abstract
For packet processing workloads such as DPDK polling is continuous. This means CPU cores always show 100% busy independent of how much work those cores are doing. It is critical to accurately determine how busy a core is hugely important for the following reasons:
* No indication of overload conditions.
* User does not know how much real load is on a system, resulting in wasted energy as no power management is utilized.
Compared to the original l3fwd-power design, instead of going to sleep after detecting an empty poll, the new mechanism just lowers the core frequency. As a result, the application does not stop polling the device, which leads to improved handling of bursts of traffic.
When the system become busy, the empty poll mechanism can also increase the core frequency (including turbo) to do best effort for intensive traffic. This gives us more flexible and balanced traffic awareness over the standard l3fwd-power application.
2. Proposed solution
The proposed solution focuses on how many times empty polls are executed. The less the number of empty polls, means current core is busy with processing workload, therefore, the higher frequency is needed. The high empty poll number indicates the current core not doing any real work therefore, we can lower the frequency to safe power.
In the current implementation, each core has 1 empty-poll counter which assume 1 core is dedicated to 1 queue. This will need to be expanded in the future to support multiple queues per core.
2.1 Power state definition:
LOW: Not currently used, reserved for future use.
MED: the frequency is used to process modest traffic workload.
HIGH: the frequency is used to process busy traffic workload.
2.2 There are two phases to establish the power management system:
a.Initialization/Training phase. The training phase is necessary in order to figure out the system polling baseline numbers from idle to busy. The highest poll count will be during idle, where all polls are empty. These poll counts will be different between systems due to the many possible processor micro-arch, cache and device configurations, hence the training phase. In the training phase, traffic is blocked so the training algorithm can average the empty-poll numbers for the LOW, MED and HIGH power states in order to create a baseline. The core's counter are collected every 10ms, and the Training phase will take 2 seconds. Training is disabled as default configuration. The default parameter is applied. Sample App still can trigger training if that's needed. Once the training phase has been executed once on a system, the application can then be started with the relevant thresholds provided on the command line, allowing the application to start passing start traffic immediately
b.Normal phase. Traffic starts immediately based on the default thresholds, or based on the user supplied thresholds via the command line parameters. The run-time poll counts are compared with the baseline and the decision will be taken to move to MED power state or HIGH power state. The counters are calculated every 10ms.
3. Proposed API
1. rte_power_empty_poll_stat_init(struct ep_params **eptr, uint8_t *freq_tlb, struct ep_policy *policy); which is used to initialize the power management system. 2. rte_power_empty_poll_stat_free(void); which is used to free the resource hold by power management system. 3. rte_power_empty_poll_stat_update(unsigned int lcore_id); which is used to update specific core empty poll counter, not thread safe 4. rte_power_poll_stat_update(unsigned int lcore_id, uint8_t nb_pkt); which is used to update specific core valid poll counter, not thread safe 5. rte_power_empty_poll_stat_fetch(unsigned int lcore_id); which is used to get specific core empty poll counter. 6. rte_power_poll_stat_fetch(unsigned int lcore_id); which is used to get specific core valid poll counter.
7. rte_empty_poll_detection(struct rte_timer *tim, void *arg); which is used to detect empty poll state changes then take action.
Signed-off-by: Liang Ma <liang.j.ma@intel.com> Reviewed-by: Lei Yao <lei.a.yao@intel.com> Acked-by: David Hunt <david.hunt@intel.com>
show more ...
|
#
5630257f |
| 01-Feb-2018 |
Ferruh Yigit <ferruh.yigit@intel.com> |
doc: convert Intel license headers to SPDX tags
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
|
#
d9e71f52 |
| 31-Jan-2018 |
David Hunt <david.hunt@intel.com> |
doc: add hyperthreading note to power library guide
Signed-off-by: David Hunt <david.hunt@intel.com> Acked-by: Marko Kovacevic <marko.kovacevic@intel.com>
|
#
94608a0f |
| 13-Sep-2017 |
David Hunt <david.hunt@intel.com> |
power: add per-core turbo boost API
Adds a new set of APIs to allow per-core turbo enable-disable.
Signed-off-by: David Hunt <david.hunt@intel.com>
|
#
48624fd9 |
| 19-Dec-2014 |
Siobhan Butler <siobhan.a.butler@intel.com> |
doc: remove Intel references from prog guide
Removed redundant references to Intel(R) DPDK in Programmers Guide.
Signed-off-by: Siobhan Butler <siobhan.a.butler@intel.com> Acked-by: Bernard Iremong
doc: remove Intel references from prog guide
Removed redundant references to Intel(R) DPDK in Programmers Guide.
Signed-off-by: Siobhan Butler <siobhan.a.butler@intel.com> Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
show more ...
|
#
fc1f2750 |
| 14-Nov-2014 |
Bernard Iremonger <bernard.iremonger@intel.com> |
doc: programmers guide
The 1.7 DPDK_Prog_Guide document in MSWord has been converted to rst format for use with Sphinx. There is an rst file for each chapter and an index.rst file which contains the
doc: programmers guide
The 1.7 DPDK_Prog_Guide document in MSWord has been converted to rst format for use with Sphinx. There is an rst file for each chapter and an index.rst file which contains the table of contents. The top level index file has been modified to include this guide.
This document contains some png image files. If any of these png files are modified they should be replaced with an svg file.
This is the sixth document from a set of 6 documents.
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
show more ...
|