mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	The commands used were (roughly): hack/pin-dependency.sh github.com/opencontainers/runc v1.0.1 hack/lint-dependencies.sh # Follow its recommendations. hack/pin-dependency.sh github.com/cilium/ebpf v0.6.2 hack/pin-dependency.sh github.com/opencontainers/selinux v1.8.2 hack/pin-dependency.sh github.com/sirupsen/logrus v1.8.1 # Recheck. hack/lint-dependencies.sh GO111MODULE=on go mod edit -dropreplace github.com/willf/bitset hack/update-vendor.sh # Recheck. hack/lint-dependencies.sh hack/update-internal-modules.sh # Recheck. hack/lint-dependencies.sh Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
		
			
				
	
	
		
			85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package intelrdt
 | 
						|
 | 
						|
import (
 | 
						|
	"bufio"
 | 
						|
	"io"
 | 
						|
	"io/ioutil"
 | 
						|
	"os"
 | 
						|
	"path/filepath"
 | 
						|
 | 
						|
	"github.com/sirupsen/logrus"
 | 
						|
)
 | 
						|
 | 
						|
var enabledMonFeatures monFeatures
 | 
						|
 | 
						|
type monFeatures struct {
 | 
						|
	mbmTotalBytes bool
 | 
						|
	mbmLocalBytes bool
 | 
						|
	llcOccupancy  bool
 | 
						|
}
 | 
						|
 | 
						|
func getMonFeatures(intelRdtRoot string) (monFeatures, error) {
 | 
						|
	file, err := os.Open(filepath.Join(intelRdtRoot, "info", "L3_MON", "mon_features"))
 | 
						|
	if err != nil {
 | 
						|
		return monFeatures{}, err
 | 
						|
	}
 | 
						|
	defer file.Close()
 | 
						|
	return parseMonFeatures(file)
 | 
						|
}
 | 
						|
 | 
						|
func parseMonFeatures(reader io.Reader) (monFeatures, error) {
 | 
						|
	scanner := bufio.NewScanner(reader)
 | 
						|
 | 
						|
	monFeatures := monFeatures{}
 | 
						|
 | 
						|
	for scanner.Scan() {
 | 
						|
		switch feature := scanner.Text(); feature {
 | 
						|
		case "mbm_total_bytes":
 | 
						|
			monFeatures.mbmTotalBytes = true
 | 
						|
		case "mbm_local_bytes":
 | 
						|
			monFeatures.mbmLocalBytes = true
 | 
						|
		case "llc_occupancy":
 | 
						|
			monFeatures.llcOccupancy = true
 | 
						|
		default:
 | 
						|
			logrus.Warnf("Unsupported Intel RDT monitoring feature: %s", feature)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return monFeatures, scanner.Err()
 | 
						|
}
 | 
						|
 | 
						|
func getMonitoringStats(containerPath string, stats *Stats) error {
 | 
						|
	numaFiles, err := ioutil.ReadDir(filepath.Join(containerPath, "mon_data"))
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	var mbmStats []MBMNumaNodeStats
 | 
						|
	var cmtStats []CMTNumaNodeStats
 | 
						|
 | 
						|
	for _, file := range numaFiles {
 | 
						|
		if file.IsDir() {
 | 
						|
			numaPath := filepath.Join(containerPath, "mon_data", file.Name())
 | 
						|
			if IsMBMEnabled() {
 | 
						|
				numaMBMStats, err := getMBMNumaNodeStats(numaPath)
 | 
						|
				if err != nil {
 | 
						|
					return err
 | 
						|
				}
 | 
						|
				mbmStats = append(mbmStats, *numaMBMStats)
 | 
						|
			}
 | 
						|
			if IsCMTEnabled() {
 | 
						|
				numaCMTStats, err := getCMTNumaNodeStats(numaPath)
 | 
						|
				if err != nil {
 | 
						|
					return err
 | 
						|
				}
 | 
						|
				cmtStats = append(cmtStats, *numaCMTStats)
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	stats.MBMStats = &mbmStats
 | 
						|
	stats.CMTStats = &cmtStats
 | 
						|
 | 
						|
	return err
 | 
						|
}
 |