Skip to content

Commit

Permalink
Merge pull request opencontainers#2643 from xiaochenshen/rdt-cmt-check
Browse files Browse the repository at this point in the history
libcontainer/intelrdt: fix CMT feature check
  • Loading branch information
AkihiroSuda authored Nov 17, 2020
2 parents 636f23d + 620f4c5 commit 689513c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 12 deletions.
10 changes: 6 additions & 4 deletions libcontainer/intelrdt/cmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ func IsCMTEnabled() bool {
func getCMTNumaNodeStats(numaPath string) (*CMTNumaNodeStats, error) {
stats := &CMTNumaNodeStats{}

llcOccupancy, err := getIntelRdtParamUint(numaPath, "llc_occupancy")
if err != nil {
return nil, err
if enabledMonFeatures.llcOccupancy {
llcOccupancy, err := getIntelRdtParamUint(numaPath, "llc_occupancy")
if err != nil {
return nil, err
}
stats.LLCOccupancy = llcOccupancy
}
stats.LLCOccupancy = llcOccupancy

return stats, nil
}
26 changes: 18 additions & 8 deletions libcontainer/intelrdt/intelrdt.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,16 +237,20 @@ func init() {
}
}

if flagsSet.MBMTotal || flagsSet.MBMLocal {
if _, err := os.Stat(filepath.Join(intelRdtRoot, "info", "L3_MON")); err == nil {
mbmEnabled = true
cmtEnabled = true
if flagsSet.MBMTotal || flagsSet.MBMLocal || flagsSet.CMT {
if _, err := os.Stat(filepath.Join(intelRdtRoot, "info", "L3_MON")); err != nil {
return
}

enabledMonFeatures, err = getMonFeatures(intelRdtRoot)
if err != nil {
return
}
if enabledMonFeatures.mbmTotalBytes || enabledMonFeatures.mbmLocalBytes {
mbmEnabled = true
}
if enabledMonFeatures.llcOccupancy {
cmtEnabled = true
}
}
}

Expand Down Expand Up @@ -313,6 +317,8 @@ type cpuInfoFlags struct {
// Memory Bandwidth Monitoring related.
MBMTotal bool
MBMLocal bool

CMT bool // Cache Monitoring Technology
}

func parseCpuInfoFile(path string) (cpuInfoFlags, error) {
Expand Down Expand Up @@ -342,6 +348,8 @@ func parseCpuInfoFile(path string) (cpuInfoFlags, error) {
infoFlags.MBMTotal = true
case "cqm_mbm_local":
infoFlags.MBMLocal = true
case "cqm_occup_llc":
infoFlags.CMT = true
}
}
return infoFlags, nil
Expand Down Expand Up @@ -659,9 +667,11 @@ func (m *intelRdtManager) GetStats() (*Stats, error) {
}
}

err = getMonitoringStats(containerPath, stats)
if err != nil {
return nil, err
if IsMBMEnabled() || IsCMTEnabled() {
err = getMonitoringStats(containerPath, stats)
if err != nil {
return nil, err
}
}

return stats, nil
Expand Down

0 comments on commit 689513c

Please sign in to comment.