Skip to content

Commit fa11196

Browse files
authored
enhance: add enable MSR flag to allow MSR model (#537)
1 parent 20b965e commit fa11196

File tree

6 files changed

+14
-3
lines changed

6 files changed

+14
-3
lines changed

cmd/exporter.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ var (
5959
cpuProfile = flag.String("cpuprofile", "", "dump cpu profile to a file")
6060
memProfile = flag.String("memprofile", "", "dump mem profile to a file")
6161
profileDuration = flag.Int("profile-duration", 60, "duration in seconds")
62+
enabledMSR = flag.Bool("enable-msr", false, "whether MSR is allowed to obtain energy data")
6263
)
6364

6465
func healthProbe(w http.ResponseWriter, req *http.Request) {
@@ -151,6 +152,7 @@ func main() {
151152
config.SetEnabledEBPFCgroupID(*enabledEBPFCgroupID)
152153
config.SetEnabledHardwareCounterMetrics(*exposeHardwareCounterMetrics)
153154
config.SetEnabledGPU(*enableGPU)
155+
config.EnabledMSR = *enabledMSR
154156

155157
cgroup.SetSliceHandler()
156158

pkg/bpfassets/attacher/bcc_attacher.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ package attacher
2121

2222
import (
2323
"fmt"
24-
"golang.org/x/sys/unix"
2524
"runtime"
2625
"strconv"
2726

27+
"golang.org/x/sys/unix"
28+
2829
assets "github.com/sustainable-computing-io/kepler/pkg/bpfassets"
2930
"github.com/sustainable-computing-io/kepler/pkg/config"
3031

pkg/config/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ const (
5858
var (
5959
modelServerService = fmt.Sprintf("kepler-model-server.%s.svc.cluster.local", KeplerNamespace)
6060

61+
EnabledMSR = false
62+
6163
KeplerNamespace = getConfig("KELPER_NAMESPACE", defaultNamespace)
6264
EnabledEBPFCgroupID = getBoolConfig("ENABLE_EBPF_CGROUPID", true)
6365
ExposeHardwareCounterMetrics = getBoolConfig("EXPOSE_HW_COUNTER_METRICS", true)

pkg/power/accelerator/gpu.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package accelerator
2121

2222
import (
2323
"fmt"
24+
2425
accelerator_source "github.com/sustainable-computing-io/kepler/pkg/power/accelerator/source"
2526
"k8s.io/klog/v2"
2627
)

pkg/power/components/power.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package components
1919
import (
2020
"k8s.io/klog/v2"
2121

22+
"github.com/sustainable-computing-io/kepler/pkg/config"
2223
"github.com/sustainable-computing-io/kepler/pkg/power/components/source"
2324
)
2425

@@ -45,15 +46,14 @@ var (
4546
msrImpl = &source.PowerMSR{}
4647
apmXgeneSysfsImpl = &source.ApmXgeneSysfs{}
4748
powerImpl powerInterface = sysfsImpl
48-
useMSR = false // it looks MSR on kvm or hyper-v is not working
4949
)
5050

5151
func InitPowerImpl() {
5252
if sysfsImpl.IsSystemCollectionSupported() /*&& false*/ {
5353
klog.V(1).Infoln("use sysfs to obtain power")
5454
powerImpl = sysfsImpl
5555
} else {
56-
if msrImpl.IsSystemCollectionSupported() && useMSR {
56+
if msrImpl.IsSystemCollectionSupported() && config.EnabledMSR {
5757
klog.V(1).Infoln("use MSR to obtain power")
5858
powerImpl = msrImpl
5959
} else {

pkg/power/components/source/rapl_msr_util.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import (
3131
"strings"
3232
"syscall"
3333
"unsafe"
34+
35+
"k8s.io/klog/v2"
3436
)
3537

3638
const (
@@ -142,16 +144,19 @@ func ReadMSR(packageID int, msr int64) (uint64, error) {
142144

143145
func InitUnits() error {
144146
if err := mapPackageAndCore(); err != nil {
147+
klog.V(1).Info(err)
145148
return err
146149
}
147150
if err := OpenAllMSR(); err != nil {
151+
klog.V(1).Info(err)
148152
return err
149153
}
150154
cpuEnergyUnits = make([]float64, len(packageList))
151155
dramEnergyUnits = make([]float64, len(packageList))
152156
for i := 0; i < len(packageList); {
153157
result, err := ReadMSR(i, msrRaplPowerUnit)
154158
if err != nil {
159+
klog.V(1).Info(err)
155160
return fmt.Errorf("failed to read power unit: %v", err)
156161
}
157162
powerUnits = math.Pow(0.5, float64((result & 0xf)))

0 commit comments

Comments
 (0)