Add Current (Instant) Socket Power
* Updates:
- rocm_smi_logger:
General cleanup &
Aligned to cpplint rules for usage
- rocm_smi_monitor:
Fixed MonitorTypes
from not displaying properly in logs
& Added socket power label + current
socket power MonitorTypes
- rocm_smi API:
Added rsmi_dev_current_socket_power_get API
- rocm_smi CLI:
General cleanup,
Concise info now displays device data
in variable width (see printLogSpacer's
new field),
printLogSpacer now as an adjustable
variable that overrides appWidth,
Added Socket Power to base rocm-smi +
--showpower CLI calls,
--showpower & base rocm-smi CLI defaults
to printing socket power (if not available,
displays average power)
- Cleaned up temp label references
- power_read gtests:
Added current socket power to testing
Change-Id: Ica57e6f98ad96e2584e7c7955e188f68d2dab89d
Signed-off-by: Charis Poag <Charis.Poag@amd.com>
[ROCm/rocm_smi_lib commit: f078375350]
This commit is contained in:
committad av
Dmitrii Galantsev
förälder
80c47e3c09
incheckning
fd5066437b
@@ -1707,6 +1707,30 @@ rsmi_status_t rsmi_dev_pci_bandwidth_set(uint32_t dv_ind, uint64_t bw_bitmask);
|
||||
rsmi_status_t
|
||||
rsmi_dev_power_ave_get(uint32_t dv_ind, uint32_t sensor_ind, uint64_t *power);
|
||||
|
||||
/**
|
||||
* @brief Get the current socket power (also known as instant
|
||||
* power) of the device index provided.
|
||||
*
|
||||
* @details Given a device index @p dv_ind and a pointer to a uint64_t
|
||||
* @p socket_power, this function will write the current socket power
|
||||
* (in microwatts) to the uint64_t pointed to by @p socket_power.
|
||||
*
|
||||
* @param[in] dv_ind a device index
|
||||
*
|
||||
* @param[inout] socket_power a pointer to uint64_t to which the current
|
||||
* socket power will be written to. If this parameter is nullptr,
|
||||
* this function will return ::RSMI_STATUS_INVALID_ARGS if the function is
|
||||
* supported with the provided, arguments and ::RSMI_STATUS_NOT_SUPPORTED
|
||||
* if it is not supported with the provided arguments.
|
||||
*
|
||||
* @retval ::RSMI_STATUS_SUCCESS call was successful
|
||||
* @retval ::RSMI_STATUS_NOT_SUPPORTED installed software or hardware does not
|
||||
* support this function with the given arguments
|
||||
* @retval ::RSMI_STATUS_INVALID_ARGS the provided arguments are not valid
|
||||
*/
|
||||
rsmi_status_t
|
||||
rsmi_dev_current_socket_power_get(uint32_t dv_ind, uint64_t *socket_power);
|
||||
|
||||
/**
|
||||
* @brief Get the energy accumulator counter of the device with provided
|
||||
* device index.
|
||||
|
||||
@@ -130,18 +130,18 @@ class Logger {
|
||||
break;
|
||||
}
|
||||
return *getInstance();
|
||||
};
|
||||
}
|
||||
|
||||
Logger &operator<<(const char* s) {
|
||||
return operator<<(std::string(s));
|
||||
};
|
||||
}
|
||||
|
||||
template <class T> Logger &operator<<(const T &v) {
|
||||
std::ostringstream s;
|
||||
s << v;
|
||||
std::string str = s.str();
|
||||
return operator<<(str);
|
||||
};
|
||||
}
|
||||
|
||||
// Interface for Error Log
|
||||
void error(const char* text) throw();
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* The University of Illinois/NCSA
|
||||
* Open Source License (NCSA)
|
||||
*
|
||||
* Copyright (c) 2017, Advanced Micro Devices, Inc.
|
||||
* Copyright (c) 2017-2023, Advanced Micro Devices, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Developed by:
|
||||
@@ -67,6 +67,8 @@ enum MonitorTypes {
|
||||
kMonPowerCapMax,
|
||||
kMonPowerCapMin,
|
||||
kMonPowerAve,
|
||||
kMonPowerInput,
|
||||
kMonPowerLabel,
|
||||
kMonTempMax,
|
||||
kMonTempMin,
|
||||
kMonTempMaxHyst,
|
||||
@@ -94,45 +96,47 @@ enum MonitorTypes {
|
||||
kMonInvalid = 0xFFFFFFFF,
|
||||
};
|
||||
|
||||
const std::map<MonitorTypes,std::string> monitorTypesToString {
|
||||
{MonitorTypes::kMonName, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTemp, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonFanSpeed, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonMaxFanSpeed, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonFanRPMs, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonFanCntrlEnable, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonPowerCap, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonPowerCapDefault, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonPowerCapMax, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonPowerCapMin, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonPowerAve, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempMax, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempMin, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempMaxHyst, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempMinHyst, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempCritical, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempCriticalHyst, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempEmergency, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempEmergencyHyst, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempCritMin, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempCritMinHyst, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempOffset, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempLowest, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempHighest, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonTempLabel, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVolt, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltMax, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltMinCrit, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltMin, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltMaxCrit, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltAverage, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltLowest, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltHighest, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonVoltLabel, "amd::smi::kMonName"},
|
||||
{MonitorTypes::kMonInvalid, "amd::smi::kMonName"},
|
||||
const std::map<MonitorTypes, std::string> monitorTypesToString{
|
||||
{MonitorTypes::kMonName, "MonitorTypes::kMonName"},
|
||||
{MonitorTypes::kMonTemp, "MonitorTypes::kMonTemp"},
|
||||
{MonitorTypes::kMonFanSpeed, "MonitorTypes::kMonFanSpeed"},
|
||||
{MonitorTypes::kMonMaxFanSpeed, "MonitorTypes::kMonMaxFanSpeed"},
|
||||
{MonitorTypes::kMonFanRPMs, "MonitorTypes::kMonFanRPMs"},
|
||||
{MonitorTypes::kMonFanCntrlEnable, "MonitorTypes::kMonFanCntrlEnable"},
|
||||
{MonitorTypes::kMonPowerCap, "MonitorTypes::kMonPowerCap"},
|
||||
{MonitorTypes::kMonPowerCapDefault, "MonitorTypes::kMonPowerCapDefault"},
|
||||
{MonitorTypes::kMonPowerCapMax, "MonitorTypes::kMonPowerCapMax"},
|
||||
{MonitorTypes::kMonPowerCapMin, "MonitorTypes::kMonPowerCapMin"},
|
||||
{MonitorTypes::kMonPowerAve, "MonitorTypes::kMonPowerAve"},
|
||||
{MonitorTypes::kMonPowerInput, "MonitorTypes::kMonPowerInput"},
|
||||
{MonitorTypes::kMonPowerLabel, "MonitorTypes::kMonPowerLabel"},
|
||||
{MonitorTypes::kMonTempMax, "MonitorTypes::kMonTempMax"},
|
||||
{MonitorTypes::kMonTempMin, "MonitorTypes::kMonTempMin"},
|
||||
{MonitorTypes::kMonTempMaxHyst, "MonitorTypes::kMonTempMaxHyst"},
|
||||
{MonitorTypes::kMonTempMinHyst, "MonitorTypes::kMonTempMinHyst"},
|
||||
{MonitorTypes::kMonTempCritical, "MonitorTypes::kMonTempCritical"},
|
||||
{MonitorTypes::kMonTempCriticalHyst, "MonitorTypes::kMonTempCriticalHyst"},
|
||||
{MonitorTypes::kMonTempEmergency, "MonitorTypes::kMonTempEmergency"},
|
||||
{MonitorTypes::kMonTempEmergencyHyst,
|
||||
"MonitorTypes::kMonTempEmergencyHyst"},
|
||||
{MonitorTypes::kMonTempCritMin, "MonitorTypes::kMonTempCritMin"},
|
||||
{MonitorTypes::kMonTempCritMinHyst, "MonitorTypes::kMonTempCritMinHyst"},
|
||||
{MonitorTypes::kMonTempOffset, "MonitorTypes::kMonTempOffset"},
|
||||
{MonitorTypes::kMonTempLowest, "MonitorTypes::kMonTempLowest"},
|
||||
{MonitorTypes::kMonTempHighest, "MonitorTypes::kMonTempHighest"},
|
||||
{MonitorTypes::kMonTempLabel, "MonitorTypes::kMonTempLabel"},
|
||||
{MonitorTypes::kMonVolt, "MonitorTypes::kMonVolt"},
|
||||
{MonitorTypes::kMonVoltMax, "MonitorTypes::kMonVoltMax"},
|
||||
{MonitorTypes::kMonVoltMinCrit, "MonitorTypes::kMonVoltMinCrit"},
|
||||
{MonitorTypes::kMonVoltMin, "MonitorTypes::kMonVoltMin"},
|
||||
{MonitorTypes::kMonVoltMaxCrit, "MonitorTypes::kMonVoltMaxCrit"},
|
||||
{MonitorTypes::kMonVoltAverage, "MonitorTypes::kMonVoltAverage"},
|
||||
{MonitorTypes::kMonVoltLowest, "MonitorTypes::kMonVoltLowest"},
|
||||
{MonitorTypes::kMonVoltHighest, "MonitorTypes::kMonVoltHighest"},
|
||||
{MonitorTypes::kMonVoltLabel, "MonitorTypes::kMonVoltLabel"},
|
||||
{MonitorTypes::kMonInvalid, "MonitorTypes::kMonInvalid"},
|
||||
};
|
||||
|
||||
|
||||
class Monitor {
|
||||
public:
|
||||
explicit Monitor(std::string path, RocmSMI_env_vars const *e);
|
||||
|
||||
Referens i nytt ärende
Block a user