geopm  3.1.1.dev214+gba4f9f6d
GEOPM - Global Extensible Open Power Manager
Public Member Functions | Static Public Member Functions | List of all members
geopm::FrequencyLimitDetector Class Referenceabstract

Detect maximum achievable frequency limits of CPU cores. More...

#include <FrequencyLimitDetector.hpp>

Inheritance diagram for geopm::FrequencyLimitDetector:
Inheritance graph
[legend]

Public Member Functions

 FrequencyLimitDetector ()=default
 
virtual ~FrequencyLimitDetector ()=default
 
virtual void update_max_frequency_estimates (const std::vector< double > &observed_core_frequencies)=0
 Update the estimates for maximum achievable core frequencies. More...
 
virtual std::vector< std::pair< unsigned int, double > > get_core_frequency_limits (unsigned int core_idx) const =0
 Estimate the maximum achievable frequencies of a given core. More...
 
virtual double get_core_low_priority_frequency (unsigned int core_idx) const =0
 Estimate the low priority frequency of a given core. More...
 

Static Public Member Functions

static std::unique_ptr< FrequencyLimitDetectormake_unique (PlatformIO &platform_io, const PlatformTopo &platform_topo)
 
static std::shared_ptr< FrequencyLimitDetectormake_shared (PlatformIO &platform_io, const PlatformTopo &platform_topo)
 

Detailed Description

Detect maximum achievable frequency limits of CPU cores.

Estimates the maximum freuqency that each core can achieve if it is given a sufficiently high frequency cap. Estimates are based on recent behavior of the target core and other cores in the same CPU package.

Constructor & Destructor Documentation

◆ FrequencyLimitDetector()

geopm::FrequencyLimitDetector::FrequencyLimitDetector ( )
default

◆ ~FrequencyLimitDetector()

virtual geopm::FrequencyLimitDetector::~FrequencyLimitDetector ( )
virtualdefault

Member Function Documentation

◆ get_core_frequency_limits()

virtual std::vector<std::pair<unsigned int, double> > geopm::FrequencyLimitDetector::get_core_frequency_limits ( unsigned int  core_idx) const
pure virtual

Estimate the maximum achievable frequencies of a given core.

Parameters
[in]core_idxGEOPM topology index of the core to query.
Returns
A vector of alternative frequency configurations. Each vector element is a pair of a count of high-priority cores in the package, and this core's achievable frequency if that count is not exceeded.

Implemented in geopm::TRLFrequencyLimitDetector, and geopm::SSTFrequencyLimitDetector.

◆ get_core_low_priority_frequency()

virtual double geopm::FrequencyLimitDetector::get_core_low_priority_frequency ( unsigned int  core_idx) const
pure virtual

Estimate the low priority frequency of a given core.

Implemented in geopm::TRLFrequencyLimitDetector, and geopm::SSTFrequencyLimitDetector.

◆ make_shared()

std::shared_ptr< FrequencyLimitDetector > geopm::FrequencyLimitDetector::make_shared ( PlatformIO &  platform_io,
const PlatformTopo &  platform_topo 
)
static

◆ make_unique()

std::unique_ptr< FrequencyLimitDetector > geopm::FrequencyLimitDetector::make_unique ( PlatformIO &  platform_io,
const PlatformTopo &  platform_topo 
)
static

◆ update_max_frequency_estimates()

virtual void geopm::FrequencyLimitDetector::update_max_frequency_estimates ( const std::vector< double > &  observed_core_frequencies)
pure virtual

Update the estimates for maximum achievable core frequencies.

Caches the estimates to be queried by other functions in this interface.

Parameters
observed_core_frequenciesThe measured frequency for each core across a region of interest (e.g., epoch to epoch, across GEOPM regions, etc).

Implemented in geopm::TRLFrequencyLimitDetector, and geopm::SSTFrequencyLimitDetector.


The documentation for this class was generated from the following files: