DPDK  24.03.0
Typedefs | Functions | Variables
rte_power_uncore.h File Reference
#include <rte_compat.h>
#include "rte_power.h"

Go to the source code of this file.

Typedefs

typedef uint32_t(* rte_power_get_uncore_freq_t) (unsigned int pkg, unsigned int die)
 
typedef int(* rte_power_set_uncore_freq_t) (unsigned int pkg, unsigned int die, uint32_t index)
 
typedef int(* rte_power_uncore_freq_change_t) (unsigned int pkg, unsigned int die)
 
typedef int(* rte_power_uncore_freqs_t) (unsigned int pkg, unsigned int die, uint32_t *freqs, uint32_t num)
 
typedef int(* rte_power_uncore_get_num_freqs_t) (unsigned int pkg, unsigned int die)
 
typedef unsigned int(* rte_power_uncore_get_num_pkgs_t) (void)
 
typedef unsigned int(* rte_power_uncore_get_num_dies_t) (unsigned int pkg)
 

Functions

__rte_experimental int rte_power_set_uncore_env (enum rte_uncore_power_mgmt_env env)
 
__rte_experimental void rte_power_unset_uncore_env (void)
 
__rte_experimental enum rte_uncore_power_mgmt_env rte_power_get_uncore_env (void)
 
int rte_power_uncore_init (unsigned int pkg, unsigned int die)
 
int rte_power_uncore_exit (unsigned int pkg, unsigned int die)
 

Variables

rte_power_uncore_freq_change_t rte_power_uncore_freq_max
 
rte_power_uncore_freq_change_t rte_power_uncore_freq_min
 

Detailed Description

RTE Uncore Frequency Management

Definition in file rte_power_uncore.h.

Typedef Documentation

◆ rte_power_get_uncore_freq_t

typedef uint32_t(* rte_power_get_uncore_freq_t) (unsigned int pkg, unsigned int die)

Return the current index of available frequencies of a specific die on a package. It should be protected outside of this function for threadsafe.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
Returns
The current index of available frequencies. If error, it will return 'RTE_POWER_INVALID_FREQ_INDEX = (~0)'.

Definition at line 119 of file rte_power_uncore.h.

◆ rte_power_set_uncore_freq_t

typedef int(* rte_power_set_uncore_freq_t) (unsigned int pkg, unsigned int die, uint32_t index)

Set minimum and maximum uncore frequency for specified die on a package to specified index value. It should be protected outside of this function for threadsafe.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
indexThe index of available frequencies.
Returns
  • 1 on success with frequency changed.
  • 0 on success without frequency changed.
  • Negative on error.

Definition at line 144 of file rte_power_uncore.h.

◆ rte_power_uncore_freq_change_t

typedef int(* rte_power_uncore_freq_change_t) (unsigned int pkg, unsigned int die)

Function pointer definition for generic frequency change functions.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
Returns
  • 1 on success with frequency changed.
  • 0 on success without frequency changed.
  • Negative on error.

Definition at line 163 of file rte_power_uncore.h.

◆ rte_power_uncore_freqs_t

typedef int(* rte_power_uncore_freqs_t) (unsigned int pkg, unsigned int die, uint32_t *freqs, uint32_t num)

Return the list of available frequencies in the index array.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
freqsThe buffer array to save the frequencies.
numThe number of frequencies to get.
Returns
  • The number of available index's in frequency array.
  • Negative on error.

Definition at line 203 of file rte_power_uncore.h.

◆ rte_power_uncore_get_num_freqs_t

typedef int(* rte_power_uncore_get_num_freqs_t) (unsigned int pkg, unsigned int die)

Return the list length of available frequencies in the index array.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
Returns
  • The number of available index's in frequency array.
  • Negative on error.

Definition at line 224 of file rte_power_uncore.h.

◆ rte_power_uncore_get_num_pkgs_t

typedef unsigned int(* rte_power_uncore_get_num_pkgs_t) (void)

Return the number of packages (CPUs) on a system by parsing the uncore sysfs directory.

This function should NOT be called in the fast path.

Returns
  • Zero on error.
  • Number of package on system on success.

Definition at line 238 of file rte_power_uncore.h.

◆ rte_power_uncore_get_num_dies_t

typedef unsigned int(* rte_power_uncore_get_num_dies_t) (unsigned int pkg)

Return the number of dies for pakckages (CPUs) specified from parsing the uncore sysfs directory.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
Returns
  • Zero on error.
  • Number of dies for package on sucecss.

Definition at line 256 of file rte_power_uncore.h.

Function Documentation

◆ rte_power_set_uncore_env()

__rte_experimental int rte_power_set_uncore_env ( enum rte_uncore_power_mgmt_env  env)

Set the default uncore power management implementation. This has to be called prior to calling any other rte_power_uncore_*() API. It is thread safe. New env can be set only in uninitialized state. rte_power_unset_uncore_env must be called if different env was already set.

Parameters
envenv. The environment in which to initialise Uncore Power Management for.
Returns
  • 0 on success.
  • Negative on error.
Examples:
examples/l3fwd-power/main.c.

◆ rte_power_unset_uncore_env()

__rte_experimental void rte_power_unset_uncore_env ( void  )

Unset the global uncore environment configuration. This can only be called after all threads have completed.

◆ rte_power_get_uncore_env()

__rte_experimental enum rte_uncore_power_mgmt_env rte_power_get_uncore_env ( void  )

Get the default uncore power management implementation.

Returns
power_management_env The configured environment.

◆ rte_power_uncore_init()

int rte_power_uncore_init ( unsigned int  pkg,
unsigned int  die 
)

Initialize uncore frequency management for specific die on a package. It will get the available frequencies and prepare to set new die frequencies.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
Returns
  • 0 on success.
  • Negative on error.
Examples:
examples/l3fwd-power/main.c.

◆ rte_power_uncore_exit()

int rte_power_uncore_exit ( unsigned int  pkg,
unsigned int  die 
)

Exit uncore frequency management on a specific die on a package. It will restore uncore min and* max values to previous values before initialization of API.

This function should NOT be called in the fast path.

Parameters
pkgPackage number. Each physical CPU in a system is referred to as a package.
dieDie number. Each package can have several dies connected together via the uncore mesh.
Returns
  • 0 on success.
  • Negative on error.
Examples:
examples/l3fwd-power/main.c.

Variable Documentation

◆ rte_power_uncore_freq_max

rte_power_uncore_freq_change_t rte_power_uncore_freq_max

Set minimum and maximum uncore frequency for specified die on a package to maximum value according to the available frequencies. It should be protected outside of this function for threadsafe.

This function should NOT be called in the fast path.

Examples:
examples/l3fwd-power/main.c.

◆ rte_power_uncore_freq_min

rte_power_uncore_freq_change_t rte_power_uncore_freq_min

Set minimum and maximum uncore frequency for specified die on a package to minimum value according to the available frequencies. It should be protected outside of this function for threadsafe.

This function should NOT be called in the fast path.

Examples:
examples/l3fwd-power/main.c.