mbox series

[API-NEXT,0/5] power management api

Message ID 1484670521-28503-1-git-send-email-sergei.trofimov@arm.com
Headers show
Series power management api | expand

Message

Sergei Trofimov Jan. 17, 2017, 4:28 p.m. UTC
This patch series introduces a power management API and provides a sample power
governor implementation. The API provides a way to query abstract performance
levels supported by the platform, and to associate a power "governor" to manage
power/performance levels on a set of CPUs. 

The sample governor implementation lowers frequencies of governed CPUs over
time, raising them to max if monitored queues' depths exceed a set threshold.
This behavior is analogous to the "ondemand" cpufreq governor in the Linux
kernel.

In order to enable the implementation of the sample governor, queue API is
extended to support depth tracking and blocking dequeues.

Sergei Trofimov (5):
  power: added API for managing CPU DVFS
  odp_queue: added support for queue depth tracking
  queue: adding a notification queue type
  queue: adding depth threshold trigger
  power: Adding a power governor implementation

 doc/users-guide/users-guide.adoc                   |   7 +
 include/odp/api/spec/power.h                       | 153 +++++++++++
 include/odp/api/spec/queue.h                       |  71 ++++-
 include/odp_api.h                                  |   1 +
 platform/Makefile.inc                              |   1 +
 platform/linux-generic/Makefile.am                 |   3 +
 platform/linux-generic/include/odp/api/power.h     |   1 +
 .../linux-generic/include/odp_config_internal.h    |   5 +
 platform/linux-generic/include/odp_internal.h      |   4 +
 .../linux-generic/include/odp_packet_io_queue.h    |   4 +-
 .../linux-generic/include/odp_queue_internal.h     |  16 +-
 platform/linux-generic/odp_init.c                  |  12 +
 platform/linux-generic/odp_packet_io.c             |   6 +-
 platform/linux-generic/odp_power.c                 | 294 +++++++++++++++++++++
 platform/linux-generic/odp_power_governor.c        | 220 +++++++++++++++
 platform/linux-generic/odp_queue.c                 | 196 +++++++++++++-
 test/common_plat/validation/api/queue/queue.c      |   2 +
 17 files changed, 984 insertions(+), 12 deletions(-)
 create mode 100644 include/odp/api/spec/power.h
 create mode 100644 platform/linux-generic/include/odp/api/power.h
 create mode 100644 platform/linux-generic/odp_power.c
 create mode 100644 platform/linux-generic/odp_power_governor.c

-- 
1.9.1

Comments

Bill Fischofer Jan. 17, 2017, 8:51 p.m. UTC | #1
First off, thanks for this submission, however this series has a
number of problems:

1. It does not compile due to the incorrect specification of
<odp/api/visibility_begin/end.h> There is no /api/ level in these
includes.

2. Numerous checkpatch issues throughout. Please run
./scripts/checkpatch *.patch before submitting and ensure that
checkpatch gives a clean report.

3. Missing doxygen for new API changes. Please run make doxygen-doc
and ensure that it builds cleanly as well.

4. Patch series organization. Part 1 (the API patch) should include
just the new include/odp/api/spec/power.h file and the update to
odp_api.h to include that. The makefile changes and related
implementation changes should go in subsequent parts. Generally, new
API patches should be organized into four sections consisting of one
or more patch parts each: The API definition, the linux-generic
implementation of these APIs, the validation tests for these new APIs,
and the User Guide documentation for these new APIs. The last two do
not have to be part of the initial patch series if that's more
convenient but if the API is accepted into api-next then all four will
need to be present before it can be promoted to master.

Thanks.

On Tue, Jan 17, 2017 at 10:28 AM, Sergei Trofimov
<sergei.trofimov@arm.com> wrote:
> This patch series introduces a power management API and provides a sample power

> governor implementation. The API provides a way to query abstract performance

> levels supported by the platform, and to associate a power "governor" to manage

> power/performance levels on a set of CPUs.

>

> The sample governor implementation lowers frequencies of governed CPUs over

> time, raising them to max if monitored queues' depths exceed a set threshold.

> This behavior is analogous to the "ondemand" cpufreq governor in the Linux

> kernel.

>

> In order to enable the implementation of the sample governor, queue API is

> extended to support depth tracking and blocking dequeues.

>

> Sergei Trofimov (5):

>   power: added API for managing CPU DVFS

>   odp_queue: added support for queue depth tracking

>   queue: adding a notification queue type

>   queue: adding depth threshold trigger

>   power: Adding a power governor implementation

>

>  doc/users-guide/users-guide.adoc                   |   7 +

>  include/odp/api/spec/power.h                       | 153 +++++++++++

>  include/odp/api/spec/queue.h                       |  71 ++++-

>  include/odp_api.h                                  |   1 +

>  platform/Makefile.inc                              |   1 +

>  platform/linux-generic/Makefile.am                 |   3 +

>  platform/linux-generic/include/odp/api/power.h     |   1 +

>  .../linux-generic/include/odp_config_internal.h    |   5 +

>  platform/linux-generic/include/odp_internal.h      |   4 +

>  .../linux-generic/include/odp_packet_io_queue.h    |   4 +-

>  .../linux-generic/include/odp_queue_internal.h     |  16 +-

>  platform/linux-generic/odp_init.c                  |  12 +

>  platform/linux-generic/odp_packet_io.c             |   6 +-

>  platform/linux-generic/odp_power.c                 | 294 +++++++++++++++++++++

>  platform/linux-generic/odp_power_governor.c        | 220 +++++++++++++++

>  platform/linux-generic/odp_queue.c                 | 196 +++++++++++++-

>  test/common_plat/validation/api/queue/queue.c      |   2 +

>  17 files changed, 984 insertions(+), 12 deletions(-)

>  create mode 100644 include/odp/api/spec/power.h

>  create mode 100644 platform/linux-generic/include/odp/api/power.h

>  create mode 100644 platform/linux-generic/odp_power.c

>  create mode 100644 platform/linux-generic/odp_power_governor.c

>

> --

> 1.9.1

>