|
geopm
|
IOGroup that provides signals and controls based on MSRs. More...
#include <MSRIOGroup.hpp>
Public Types | |
| enum | m_cpuid_e { M_CPUID_SNB = 0x62D, M_CPUID_IVT = 0x63E, M_CPUID_HSX = 0x63F, M_CPUID_BDX = 0x64F, M_CPUID_KNL = 0x657, M_CPUID_SKX = 0x655, M_CPUID_ICX = 0x66A } |
| Public Types inherited from geopm::IOGroup | |
| enum | m_units_e { M_UNITS_NONE, M_UNITS_SECONDS, M_UNITS_HERTZ, M_UNITS_WATTS, M_UNITS_JOULES, M_UNITS_CELSIUS, M_NUM_UNITS } |
| enum | m_signal_behavior_e { M_SIGNAL_BEHAVIOR_CONSTANT, M_SIGNAL_BEHAVIOR_MONOTONE, M_SIGNAL_BEHAVIOR_VARIABLE, M_SIGNAL_BEHAVIOR_LABEL, M_NUM_SIGNAL_BEHAVIOR } |
| Description of the runtime behavior of a signal. More... | |
Public Member Functions | |
| MSRIOGroup () | |
| MSRIOGroup (const PlatformTopo &platform_topo, std::shared_ptr< MSRIO > msrio, int cpuid, int num_cpu) | |
| virtual | ~MSRIOGroup ()=default |
| std::set< std::string > | signal_names (void) const override |
| Returns the names of all signals provided by the IOGroup. More... | |
| std::set< std::string > | control_names (void) const override |
| Returns the names of all controls provided by the IOGroup. More... | |
| bool | is_valid_signal (const std::string &signal_name) const override |
| Test if signal_name refers to a signal supported by the group. More... | |
| bool | is_valid_control (const std::string &control_name) const override |
| Test if control_name refers to a control supported by the group. More... | |
| int | signal_domain_type (const std::string &signal_name) const override |
| Query the domain for a named signal. More... | |
| int | control_domain_type (const std::string &control_name) const override |
| Query the domain for a named control. More... | |
| int | push_signal (const std::string &signal_name, int domain_type, int domain_idx) override |
| Add a signal to the list of signals that is read by read_batch() and sampled by sample(). More... | |
| int | push_control (const std::string &control_name, int domain_type, int domain_idx) override |
| Add a control to the list of controls that is written by write_batch() and configured with adjust(). More... | |
| void | read_batch (void) override |
| Read all pushed signals from the platform so that the next call to sample() will reflect the updated data. More... | |
| void | write_batch (void) override |
| Write all of the pushed controls so that values previously given to adjust() are written to the platform. More... | |
| double | sample (int sample_idx) override |
| Retrieve signal value from data read by last call to read_batch() for a particular signal previously pushed with push_signal(). More... | |
| void | adjust (int control_idx, double setting) override |
| Adjust a setting for a particular control that was previously pushed with push_control(). This adjustment will be written to the platform on the next call to write_batch(). More... | |
| double | read_signal (const std::string &signal_name, int domain_type, int domain_idx) override |
| Read from platform and interpret into SI units a signal given its name and domain. Does not modify the values stored by calling read_batch(). More... | |
| void | write_control (const std::string &control_name, int domain_type, int domain_idx, double setting) override |
| Interpret the setting and write setting to the platform. Does not modify the values stored by calling adjust(). More... | |
| void | save_control (void) override |
| Save the state of all controls so that any subsequent changes made through the IOGroup can be undone with a call to the restore() method. More... | |
| void | restore_control (void) override |
| Restore all controls to values recorded in previous call to the save() method. More... | |
| std::function< double(const std::vector< double > &)> | agg_function (const std::string &signal_name) const override |
| Return a function that should be used when aggregating the given signal. More... | |
| std::function< std::string(double)> | format_function (const std::string &signal_name) const override |
| Returns a function that can be used to convert a signal of the given name into a printable string. May be one of the IOGroup::format_*() static methods, or another function. More... | |
| std::string | signal_description (const std::string &signal_name) const override |
| Returns a description of the signal. This string can be used by tools to generate help text for users of the IOGroup. More... | |
| std::string | control_description (const std::string &control_name) const override |
| Returns a description of the control. This string can be used by tools to generate help text for users of the IOGroup. More... | |
| int | signal_behavior (const std::string &signal_name) const override |
| Returns a hint about how a signal will change as a function of time. More... | |
| void | parse_json_msrs (const std::string &str) |
| Parse a JSON string and add any raw MSRs and fields as available signals and controls. More... | |
| Public Member Functions inherited from geopm::IOGroup | |
| IOGroup ()=default | |
| virtual | ~IOGroup ()=default |
Static Public Member Functions | |
| static std::string | msr_allowlist (int cpuid) |
| Fill string with the msr-safe allowlist file contents reflecting all known MSRs for the specified platform. More... | |
| static int | cpuid (void) |
| Get the cpuid of the current platform. More... | |
| static std::string | plugin_name (void) |
| static std::unique_ptr< IOGroup > | make_plugin (void) |
| Static Public Member Functions inherited from geopm::IOGroup | |
| static std::vector< std::string > | iogroup_names (void) |
| static std::unique_ptr< IOGroup > | make_unique (const std::string &iogroup_name) |
| static m_units_e | string_to_units (const std::string &str) |
| Convert a string to the corresponding m_units_e value. More... | |
| static std::string | units_to_string (int) |
| Convert the m_units_e value to the corresponding string. More... | |
| static m_signal_behavior_e | string_to_behavior (const std::string &str) |
| Convert a string to the corresponding m_signal_behavior_e value. More... | |
Additional Inherited Members | |
| Static Public Attributes inherited from geopm::IOGroup | |
| static const std::string | M_PLUGIN_PREFIX = "libgeopmiogroup_" |
IOGroup that provides signals and controls based on MSRs.
| geopm::MSRIOGroup::MSRIOGroup | ( | ) |
| geopm::MSRIOGroup::MSRIOGroup | ( | const PlatformTopo & | platform_topo, |
| std::shared_ptr< MSRIO > | msrio, | ||
| int | cpuid, | ||
| int | num_cpu | ||
| ) |
|
virtualdefault |
|
overridevirtual |
Adjust a setting for a particular control that was previously pushed with push_control(). This adjustment will be written to the platform on the next call to write_batch().
| [in] | control_idx | The index returned by previous call to push_control(). |
| [in] | setting | Value of the control in SI units. |
Implements geopm::IOGroup.
|
overridevirtual |
Return a function that should be used when aggregating the given signal.
| [in] | signal_name | Name of the signal. |
Implements geopm::IOGroup.
|
overridevirtual |
Returns a description of the control. This string can be used by tools to generate help text for users of the IOGroup.
Implements geopm::IOGroup.
|
overridevirtual |
Query the domain for a named control.
| [in] | control_name | Name of the control to query. |
Implements geopm::IOGroup.
|
overridevirtual |
Returns the names of all controls provided by the IOGroup.
Implements geopm::IOGroup.
|
static |
Get the cpuid of the current platform.
|
overridevirtual |
Returns a function that can be used to convert a signal of the given name into a printable string. May be one of the IOGroup::format_*() static methods, or another function.
Reimplemented from geopm::IOGroup.
|
overridevirtual |
Test if control_name refers to a control supported by the group.
| [in] | control_name | Name of control to test. |
Implements geopm::IOGroup.
|
overridevirtual |
Test if signal_name refers to a signal supported by the group.
| [in] | signal_name | Name of signal to test. |
Implements geopm::IOGroup.
|
static |
|
static |
Fill string with the msr-safe allowlist file contents reflecting all known MSRs for the specified platform.
| cpuid | [in] The CPUID of the platform. |
| void geopm::MSRIOGroup::parse_json_msrs | ( | const std::string & | str | ) |
Parse a JSON string and add any raw MSRs and fields as available signals and controls.
Validate fields within MSR
|
static |
|
overridevirtual |
Add a control to the list of controls that is written by write_batch() and configured with adjust().
| [in] | control_name | Name of the control requested. |
| [in] | domain_type | One of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp. |
| [in] | domain_idx | The index of the domain within the set of domains of the same type on the platform. |
Implements geopm::IOGroup.
|
overridevirtual |
Add a signal to the list of signals that is read by read_batch() and sampled by sample().
| [in] | signal_name | Name of the signal requested. |
| [in] | domain_type | One of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp. |
| [in] | domain_idx | The index of the domain within the set of domains of the same type on the platform. |
Implements geopm::IOGroup.
|
overridevirtual |
Read all pushed signals from the platform so that the next call to sample() will reflect the updated data.
Implements geopm::IOGroup.
|
overridevirtual |
Read from platform and interpret into SI units a signal given its name and domain. Does not modify the values stored by calling read_batch().
| [in] | signal_name | Name of the signal requested. |
| [in] | domain_type | One of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp. |
| [in] | domain_idx | The index of the domain within the set of domains of the same type on the platform. |
Implements geopm::IOGroup.
|
overridevirtual |
Restore all controls to values recorded in previous call to the save() method.
Implements geopm::IOGroup.
|
overridevirtual |
Retrieve signal value from data read by last call to read_batch() for a particular signal previously pushed with push_signal().
| [in] | sample_idx | The index returned by previous call to push_signal(). |
Implements geopm::IOGroup.
|
overridevirtual |
Save the state of all controls so that any subsequent changes made through the IOGroup can be undone with a call to the restore() method.
Implements geopm::IOGroup.
|
overridevirtual |
Returns a hint about how a signal will change as a function of time.
This can be used when generating reports to decide how to summarize a signal's value for the entire application run.
| [in] | signal_name | Name of the signal. |
Implements geopm::IOGroup.
|
overridevirtual |
Returns a description of the signal. This string can be used by tools to generate help text for users of the IOGroup.
Implements geopm::IOGroup.
|
overridevirtual |
Query the domain for a named signal.
| [in] | signal_name | Name of the signal to query. |
Implements geopm::IOGroup.
|
overridevirtual |
Returns the names of all signals provided by the IOGroup.
Implements geopm::IOGroup.
|
overridevirtual |
Write all of the pushed controls so that values previously given to adjust() are written to the platform.
Implements geopm::IOGroup.
|
overridevirtual |
Interpret the setting and write setting to the platform. Does not modify the values stored by calling adjust().
| [in] | control_name | Name of the control requested. |
| [in] | domain_type | One of the values from the PlatformTopo::m_domain_e enum described in PlatformTopo.hpp. |
| [in] | domain_idx | The index of the domain within the set of domains of the same type on the platform. |
| [in] | setting | Value in SI units of the setting for the control. |
Implements geopm::IOGroup.