geopm  3.1.1.dev272+gdfb40a8d
GEOPM - Global Extensible Open Power Manager
Public Types | Public Member Functions | Static Public Member Functions | List of all members
geopm::SSTClosGovernor Class Referenceabstract

Govern class of service (CLOS) controls. More...

#include <SSTClosGovernor.hpp>

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

Public Types

enum  ClosLevel_e { HIGH_PRIORITY = 0 , MEDIUM_HIGH_PRIORITY = 1 , MEDIUM_LOW_PRIORITY = 2 , LOW_PRIORITY = 3 }
 

Public Member Functions

 SSTClosGovernor ()=default
 
virtual ~SSTClosGovernor ()=default
 
virtual void init_platform_io (void)=0
 Registers signals and controls with PlatformIO using the default control domain. More...
 
virtual int clos_domain_type (void) const =0
 Get the domain type of CLOS control on the platform. Users of the SSTClosGovernor can use this information to determine the size of the vector to pass to adjust_platform(). More...
 
virtual void adjust_platform (const std::vector< double > &clos_by_core)=0
 Write CLOS controls. More...
 
virtual bool do_write_batch (void) const =0
 Returns true if the last call to adjust_platform requires writing controls. More...
 
virtual void enable_sst_turbo_prioritization ()=0
 
virtual void disable_sst_turbo_prioritization ()=0
 

Static Public Member Functions

static bool is_supported (PlatformIO &platform_io)
 
static std::unique_ptr< SSTClosGovernormake_unique (void)
 
static std::shared_ptr< SSTClosGovernormake_shared (void)
 

Detailed Description

Govern class of service (CLOS) controls.

Member Enumeration Documentation

◆ ClosLevel_e

Enumerator
HIGH_PRIORITY 
MEDIUM_HIGH_PRIORITY 
MEDIUM_LOW_PRIORITY 
LOW_PRIORITY 

Constructor & Destructor Documentation

◆ SSTClosGovernor()

geopm::SSTClosGovernor::SSTClosGovernor ( )
default

◆ ~SSTClosGovernor()

virtual geopm::SSTClosGovernor::~SSTClosGovernor ( )
virtualdefault

Member Function Documentation

◆ adjust_platform()

virtual void geopm::SSTClosGovernor::adjust_platform ( const std::vector< double > &  clos_by_core)
pure virtual

Write CLOS controls.

Parameters
[in]clos_by_coreDesired per-core CLOS.

Implemented in geopm::SSTClosGovernorImp.

◆ clos_domain_type()

virtual int geopm::SSTClosGovernor::clos_domain_type ( void  ) const
pure virtual

Get the domain type of CLOS control on the platform. Users of the SSTClosGovernor can use this information to determine the size of the vector to pass to adjust_platform().

Returns
The domain with which CLOS will be governed.

Implemented in geopm::SSTClosGovernorImp.

◆ disable_sst_turbo_prioritization()

virtual void geopm::SSTClosGovernor::disable_sst_turbo_prioritization ( )
pure virtual

Disable prioritized turbo frequency and core priority features. This is a no-op if those features are not supported on the platform.

Implemented in geopm::SSTClosGovernorImp.

◆ do_write_batch()

virtual bool geopm::SSTClosGovernor::do_write_batch ( void  ) const
pure virtual

Returns true if the last call to adjust_platform requires writing controls.

Returns
True if platform adjustments have been made, false otherwise.

Implemented in geopm::SSTClosGovernorImp.

◆ enable_sst_turbo_prioritization()

virtual void geopm::SSTClosGovernor::enable_sst_turbo_prioritization ( )
pure virtual

Enable prioritized turbo frequency and core priority features. This is a no-op if those features are not supported on the platform.

Implemented in geopm::SSTClosGovernorImp.

◆ init_platform_io()

virtual void geopm::SSTClosGovernor::init_platform_io ( void  )
pure virtual

Registers signals and controls with PlatformIO using the default control domain.

Implemented in geopm::SSTClosGovernorImp.

◆ is_supported()

bool geopm::SSTClosGovernor::is_supported ( PlatformIO &  platform_io)
static

Indicate whether this platform supports core priority and prioritized turbo frequency limits.

◆ make_shared()

std::shared_ptr< SSTClosGovernor > geopm::SSTClosGovernor::make_shared ( void  )
static

◆ make_unique()

std::unique_ptr< SSTClosGovernor > geopm::SSTClosGovernor::make_unique ( void  )
static

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