1
0
Fork 0

Adding upstream version 1.34.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-24 07:26:29 +02:00
parent e393c3af3f
commit 4978089aab
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
4963 changed files with 677545 additions and 0 deletions

View file

@ -0,0 +1,139 @@
//go:build linux && amd64
package intel_powerstat
import (
ptel "github.com/intel/powertelemetry"
)
// topologyFetcher fetches topology information of the host.
type topologyFetcher interface {
// GetMsrCPUIDs returns a slice with available CPU IDs of the host for which msr will access to.
GetMsrCPUIDs() []int
// GetPerfCPUIDs returns a slice with available CPU IDs of the host for which perf will access to.
GetPerfCPUIDs() []int
// GetPackageIDs returns a slice with available package IDs of the host.
GetPackageIDs() []int
// GetCPUPackageID returns the package ID of the host corresponding to the given CPU ID.
GetCPUPackageID(cpuID int) (int, error)
// GetCPUCoreID returns the core ID of the host corresponding to the given CPU ID.
GetCPUCoreID(cpuID int) (int, error)
// GetPackageDieIDs returns the die IDs of the host corresponding to the given package ID.
GetPackageDieIDs(packageID int) ([]int, error)
}
// cpuFreqFetcher fetches supported CPU-related metrics relying on core frequency.
type cpuFreqFetcher interface {
// GetCPUFrequency returns the current frequency value of a given CPU ID, in MHz.
GetCPUFrequency(cpuID int) (float64, error)
}
// cpuMsrFetcher fetches supported CPU-related metrics relying on msr registers.
type cpuMsrFetcher interface {
// GetCPUTemperature returns the temperature value of a given CPU ID, in degrees Celsius.
GetCPUTemperature(cpuID int) (uint64, error)
// UpdatePerCPUMetrics reads multiple MSR offsets needed to get metric values that are time sensitive.
// Below are the list of methods that need the update to be performed beforehand.
UpdatePerCPUMetrics(cpuID int) error
// GetCPUC0StateResidency returns the C0 state residency value of a given CPU ID, as a percentage.
GetCPUC0StateResidency(cpuID int) (float64, error)
// GetCPUC1StateResidency returns the C1 state residency value of a given CPU ID, as a percentage.
GetCPUC1StateResidency(cpuID int) (float64, error)
// GetCPUC3StateResidency returns the C3 state residency value of a given CPU ID, as a percentage.
GetCPUC3StateResidency(cpuID int) (float64, error)
// GetCPUC6StateResidency returns the C6 state residency value of a given CPU ID, as a percentage.
GetCPUC6StateResidency(cpuID int) (float64, error)
// GetCPUC7StateResidency returns the C7 state residency value of a given CPU ID, as a percentage.
GetCPUC7StateResidency(cpuID int) (float64, error)
// GetCPUBusyFrequencyMhz returns the busy frequency value of a given CPU ID, in MHz.
GetCPUBusyFrequencyMhz(cpuID int) (float64, error)
}
// cpuPerfFetcher fetches supported CPU-related metrics relying on perf events.
type cpuPerfFetcher interface {
// ReadPerfEvents reads values of perf events needed to get C0X state residency metrics.
// Below getter methods that need this operation to be performed previously.
ReadPerfEvents() error
// DeactivatePerfEvents deactivates perf events. It closes file descriptors used to get perf event values.
DeactivatePerfEvents() error
// GetCPUC0SubstateC01Percent takes a CPU ID and returns a value indicating the percentage of time
// the processor spent in its C0.1 substate out of the total time in the C0 state.
// C0.1 is characterized by a light-weight slower wakeup time but more power-saving optimized state.
GetCPUC0SubstateC01Percent(cpuID int) (float64, error)
// GetCPUC0SubstateC02Percent takes a CPU ID and returns a value indicating the percentage of time
// the processor spent in its C0.2 substate out of the total time in the C0 state.
// C0.2 is characterized by a light-weight faster wakeup time but less power saving optimized state.
GetCPUC0SubstateC02Percent(cpuID int) (float64, error)
// GetCPUC0SubstateC0WaitPercent takes a CPU ID and returns a value indicating the percentage of time
// the processor spent in its C0_Wait substate out of the total time in the C0 state.
// CPU is in C0_Wait substate when the thread is in the C0.1 or C0.2 or running a PAUSE in C0 ACPI state.
GetCPUC0SubstateC0WaitPercent(cpuID int) (float64, error)
}
// packageRaplFetcher fetches supported package related metrics relying on rapl.
type packageRaplFetcher interface {
// GetCurrentPackagePowerConsumptionWatts returns the current package power consumption value of a given package ID, in watts.
GetCurrentPackagePowerConsumptionWatts(packageID int) (float64, error)
// GetCurrentDramPowerConsumptionWatts returns the current dram power consumption value of a given package ID, in watts.
GetCurrentDramPowerConsumptionWatts(packageID int) (float64, error)
// GetPackageThermalDesignPowerWatts returns the thermal power design value of a given package ID, in watts.
GetPackageThermalDesignPowerWatts(packageID int) (float64, error)
}
// packageUncoreFreqFetcher fetches supported package related metrics relying on uncore frequency.
type packageUncoreFreqFetcher interface {
// GetInitialUncoreFrequencyMin returns the minimum initial uncore frequency value of a given package ID, in MHz.
GetInitialUncoreFrequencyMin(packageID, dieID int) (float64, error)
// GetInitialUncoreFrequencyMax returns the maximum initial uncore frequency value of a given package ID, in MHz.
GetInitialUncoreFrequencyMax(packageID, dieID int) (float64, error)
// GetCustomizedUncoreFrequencyMin returns the minimum custom uncore frequency value of a given package ID, in MHz.
GetCustomizedUncoreFrequencyMin(packageID, dieID int) (float64, error)
// GetCustomizedUncoreFrequencyMax returns the maximum custom uncore frequency value of a given package ID, in MHz.
GetCustomizedUncoreFrequencyMax(packageID, dieID int) (float64, error)
// GetCurrentUncoreFrequency returns the current uncore frequency value of a given package ID, in MHz.
GetCurrentUncoreFrequency(packageID, dieID int) (float64, error)
}
// packageMsrFetcher fetches supported package related metrics relying on msr registers.
type packageMsrFetcher interface {
// GetCPUBaseFrequency returns the CPU base frequency value of a given package ID, in MHz.
GetCPUBaseFrequency(packageID int) (uint64, error)
// GetMaxTurboFreqList returns a list of max turbo frequencies and related active cores of a given package ID.
GetMaxTurboFreqList(packageID int) ([]ptel.MaxTurboFreq, error)
}
// metricFetcher fetches metrics supported by this plugin.
type metricFetcher interface {
topologyFetcher
cpuFreqFetcher
cpuMsrFetcher
cpuPerfFetcher
packageRaplFetcher
packageUncoreFreqFetcher
packageMsrFetcher
}