machine

package
v0.3.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2023 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultNICNamespace = ""

	IPVersionV4 = 4
	IPVersionV6 = 6
)

Variables

This section is empty.

Functions

func CheckNUMACrossSockets

func CheckNUMACrossSockets(numaNodes []int, cpuTopology *CPUTopology) (bool, error)

CheckNUMACrossSockets judges whether the given NUMA nodes are located in different sockets

func CountCPUAssignmentCPUs

func CountCPUAssignmentCPUs(assignment map[int]CPUSet) int

CountCPUAssignmentCPUs returns sum of cpus among all numas in assignment

func DeepcopyCPUAssignment

func DeepcopyCPUAssignment(assignment map[int]CPUSet) map[int]CPUSet

DeepcopyCPUAssignment returns a deep-copied assignments for the given one

func Discover

func Discover(machineInfo *info.MachineInfo) (*CPUTopology, *MemoryTopology, error)

Discover returns CPUTopology based on cadvisor node info

func GenerateDummyMachineInfo

func GenerateDummyMachineInfo(numaNum int, memoryCapacityGB int) (*info.MachineInfo, error)

func GetCoreNumReservedForReclaim

func GetCoreNumReservedForReclaim(numReservedCores, numNumaNodes int) map[int]int

GetCoreNumReservedForReclaim generates per numa reserved for reclaim resource value map. per numa reserved resource is taken in a fair way with even step, e.g. 4 -> 1 1 1 1; 2 -> 1 0 1 0

func GetNumaAwareAssignments

func GetNumaAwareAssignments(topology *CPUTopology, cset CPUSet) (map[int]CPUSet, error)

GetNumaAwareAssignments returns a mapping from NUMA id to cpu core

func MaskToUInt64Array

func MaskToUInt64Array(mask bitmask.BitMask) []uint64

MaskToUInt64Array transforms bit mask to uint slices

func ParseCPUAssignmentFormat

func ParseCPUAssignmentFormat(assignments map[int]CPUSet) map[uint64]string

ParseCPUAssignmentFormat parses the given assignments into string format

func ParseCPUAssignmentQuantityMap

func ParseCPUAssignmentQuantityMap(csetMap map[string]CPUSet) map[string]int

ParseCPUAssignmentQuantityMap is used to generate cpu resource counting map based on the given CPUSet map

func TransformCPUAssignmentFormat

func TransformCPUAssignmentFormat(assignment map[uint64]string) map[int]CPUSet

TransformCPUAssignmentFormat transforms cpu assignment string format to cpuset format

Types

type CPUDetails

type CPUDetails map[int]CPUInfo

CPUDetails is a map from CPU ID to Core ID, Socket ID, and NUMA ID.

func (CPUDetails) CPUs

func (d CPUDetails) CPUs() CPUSet

CPUs returns all logical CPU IDs in this CPUDetails.

func (CPUDetails) CPUsInCores

func (d CPUDetails) CPUsInCores(ids ...int) CPUSet

CPUsInCores returns all logical CPU IDs associated with the given core IDs in this CPUDetails.

func (CPUDetails) CPUsInNUMANodes

func (d CPUDetails) CPUsInNUMANodes(ids ...int) CPUSet

CPUsInNUMANodes returns all logical CPU IDs associated with the given NUMANode IDs in this CPUDetails.

func (CPUDetails) CPUsInSockets

func (d CPUDetails) CPUsInSockets(ids ...int) CPUSet

CPUsInSockets returns all logical CPU IDs associated with the given socket IDs in this CPUDetails.

func (CPUDetails) Cores

func (d CPUDetails) Cores() CPUSet

Cores returns all core IDs associated with the CPUs in this CPUDetails.

func (CPUDetails) CoresInNUMANodes

func (d CPUDetails) CoresInNUMANodes(ids ...int) CPUSet

CoresInNUMANodes returns all core IDs associated with the given NUMANode IDs in this CPUDetails.

func (CPUDetails) CoresInSockets

func (d CPUDetails) CoresInSockets(ids ...int) CPUSet

CoresInSockets returns all core IDs associated with the given socket IDs in this CPUDetails.

func (CPUDetails) KeepOnly

func (d CPUDetails) KeepOnly(cpus CPUSet) CPUDetails

KeepOnly returns a new CPUDetails object with only the supplied cpus.

func (CPUDetails) NUMANodes

func (d CPUDetails) NUMANodes() CPUSet

NUMANodes returns all NUMANode IDs associated with the CPUs in this CPUDetails.

func (CPUDetails) NUMANodesInSockets

func (d CPUDetails) NUMANodesInSockets(ids ...int) CPUSet

NUMANodesInSockets returns all logical NUMANode IDs associated with the given socket IDs in this CPUDetails.

func (CPUDetails) Sockets

func (d CPUDetails) Sockets() CPUSet

Sockets returns all socket IDs associated with the CPUs in this CPUDetails.

func (CPUDetails) SocketsInNUMANodes

func (d CPUDetails) SocketsInNUMANodes(ids ...int) CPUSet

SocketsInNUMANodes returns all logical Socket IDs associated with the given NUMANode IDs in this CPUDetails.

type CPUInfo

type CPUInfo struct {
	NUMANodeID int
	SocketID   int
	CoreID     int
}

CPUInfo contains the NUMA, socket, and core IDs associated with a CPU.

type CPUSet

type CPUSet struct {
	// nil elems and empty elems both will be unmarshal to
	// empty elems, so we must use Initialed property to identify them
	Initialed bool
	// contains filtered or unexported fields
}

func GetCPUAssignmentNUMAs

func GetCPUAssignmentNUMAs(assignment map[int]CPUSet) CPUSet

GetCPUAssignmentNUMAs returns memset for cpuset

func GetSiblingNUMAs

func GetSiblingNUMAs(numaID int, topology *CPUTopology) (CPUSet, error)

GetSiblingNUMAs returns numa IDs that lays in the socket with the given numa

func MustParse

func MustParse(s string) CPUSet

MustParse CPUSet constructs a new CPU set from a Linux CPU list formatted string. Unlike Parse, it does not return an error but rather panics if the input cannot be used to construct a CPU set.

func NewCPUSet

func NewCPUSet(cpus ...int) CPUSet

func NewCPUSetUint64

func NewCPUSetUint64(cpus ...uint64) (CPUSet, error)

func Parse

func Parse(s string) (CPUSet, error)

Parse CPUSet constructs a new CPU set from a Linux CPU list formatted string.

See: http://man7.org/linux/man-pages/man7/cpuset.7.html#FORMATS

func (CPUSet) Add

func (s CPUSet) Add(elems ...int)

Add adds the supplied elements to the result.

func (CPUSet) AddUint64

func (s CPUSet) AddUint64(elems ...uint64) error

AddUint64 adds the supplied uint64 elements to the result.

func (CPUSet) Clone

func (s CPUSet) Clone() CPUSet

func (CPUSet) Contains

func (s CPUSet) Contains(cpu int) bool

Contains returns true if the supplied element is present in this set.

func (CPUSet) Difference

func (s CPUSet) Difference(s2 CPUSet) CPUSet

Difference returns a new CPU set that contains all of the elements that are present in this set and not the supplied set, without mutating either source set.

func (CPUSet) Equals

func (s CPUSet) Equals(s2 CPUSet) bool

Equals returns true if the supplied set contains exactly the same elements as this set (s IsSubsetOf s2 and s2 IsSubsetOf s).

func (CPUSet) Filter

func (s CPUSet) Filter(predicate func(int) bool) CPUSet

Filter returns a new CPU set that contains all elements from this set that match the supplied predicate, without mutating the source set.

func (CPUSet) FilterNot

func (s CPUSet) FilterNot(predicate func(int) bool) CPUSet

FilterNot returns a new CPU set that contains all elements from this set that do not match the supplied predicate, without mutating the source set.

func (CPUSet) Intersection

func (s CPUSet) Intersection(s2 CPUSet) CPUSet

Intersection returns a new CPU set that contains all of the elements that are present in both this set and the supplied set, without mutating either source set.

func (CPUSet) IsEmpty

func (s CPUSet) IsEmpty() bool

IsEmpty returns true if there are zero elements in this set.

func (CPUSet) IsSubsetOf

func (s CPUSet) IsSubsetOf(s2 CPUSet) bool

IsSubsetOf returns true if the supplied set contains all the elements

func (CPUSet) MarshalJSON

func (s CPUSet) MarshalJSON() ([]byte, error)

func (CPUSet) Size

func (s CPUSet) Size() int

Size returns the number of elements in this set.

func (CPUSet) String

func (s CPUSet) String() string

String returns a new string representation of the elements in this CPU set in canonical linux CPU list format.

See: http://man7.org/linux/man-pages/man7/cpuset.7.html#FORMATS

func (CPUSet) ToSliceInt

func (s CPUSet) ToSliceInt() []int

ToSliceInt returns an ordered slice of int that contains all elements from this set

func (CPUSet) ToSliceInt64

func (s CPUSet) ToSliceInt64() []int64

ToSliceInt64 returns an ordered slice of int64 that contains all elements from this set

func (CPUSet) ToSliceNoSortInt

func (s CPUSet) ToSliceNoSortInt() []int

ToSliceNoSortInt returns an ordered slice of int that contains all elements from this set

func (CPUSet) ToSliceNoSortInt64

func (s CPUSet) ToSliceNoSortInt64() []int64

ToSliceNoSortInt64 returns an ordered slice of int64 that contains all elements from this set

func (CPUSet) ToSliceNoSortUInt64

func (s CPUSet) ToSliceNoSortUInt64() []uint64

ToSliceNoSortUInt64 returns an ordered slice of uint64 that contains all elements from this set

func (CPUSet) ToSliceUInt64

func (s CPUSet) ToSliceUInt64() []uint64

ToSliceUInt64 returns an ordered slice of uint64 that contains all elements from this set

func (CPUSet) Union

func (s CPUSet) Union(s2 CPUSet) CPUSet

Union returns a new CPU set that contains all elements from this set and all elements from the supplied set, without mutating either source set.

func (CPUSet) UnionAll

func (s CPUSet) UnionAll(s2 []CPUSet) CPUSet

UnionAll returns a new CPU set that contains all elements from this set and all elements from the supplied sets, without mutating either source set.

func (*CPUSet) UnmarshalJSON

func (s *CPUSet) UnmarshalJSON(b []byte) error

type CPUTopology

type CPUTopology struct {
	NumCPUs      int
	NumCores     int
	NumSockets   int
	NumNUMANodes int
	CPUDetails   CPUDetails
}

CPUTopology contains details of node cpu, where : CPU - logical CPU, cadvisor - thread Core - physical CPU, cadvisor - Core Socket - socket, cadvisor - Socket NUMA Node - NUMA cell, cadvisor - Node

func GenerateDummyCPUTopology

func GenerateDummyCPUTopology(cpuNum, socketNum, numaNum int) (*CPUTopology, error)

func (*CPUTopology) CPUsPerCore

func (topo *CPUTopology) CPUsPerCore() int

CPUsPerCore returns the number of logical CPUs associated with each core.

func (*CPUTopology) CPUsPerNuma

func (topo *CPUTopology) CPUsPerNuma() int

CPUsPerNuma returns the number of logical CPUs associated with each numa node.

func (*CPUTopology) CPUsPerSocket

func (topo *CPUTopology) CPUsPerSocket() int

CPUsPerSocket returns the number of logical CPUs associated with each socket.

func (*CPUTopology) GetSocketTopology

func (topo *CPUTopology) GetSocketTopology() map[int]string

GetSocketTopology parses the given CPUTopology to a mapping from socket id to cpu id lists

func (*CPUTopology) NUMAsPerSocket

func (topo *CPUTopology) NUMAsPerSocket() (int, error)

NUMAsPerSocket returns the the number of NUMA are associated with each socket.

type ExtraCPUInfo

type ExtraCPUInfo struct {
	// SupportInstructionSet instructions all cpus support.
	SupportInstructionSet sets.String
}

func GetExtraCPUInfo

func GetExtraCPUInfo() (*ExtraCPUInfo, error)

GetExtraCPUInfo get extend cpu info from proc system

type ExtraNetworkInfo

type ExtraNetworkInfo struct {
	// Interface info list of all network interface.
	Interface []InterfaceInfo
}

func GetExtraNetworkInfo

func GetExtraNetworkInfo(conf *global.MachineInfoConfiguration) (*ExtraNetworkInfo, error)

GetExtraNetworkInfo get network info from /sys/class/net and system function net.Interfaces. if multiple network namespace is enabled, we should exec into all namespaces and parse nics for them.

type IfaceAddr

type IfaceAddr struct {
	IPV4 []*net.IP
	IPV6 []*net.IP
}

type InterfaceInfo

type InterfaceInfo struct {
	// Iface name of this interface.
	Iface string
	// Speed of this interface.
	Speed int
	// NumaNode numa node of this interface belongs to.
	NumaNode int
	// Enable whether enable this interface.
	Enable bool
	// Addr address of this interface, which includes ipv4 and ipv6.
	Addr *IfaceAddr

	// NSName indicates the namespace for this interface
	NSName string
	// NSAbsolutePath indicates the namespace path for this interface
	NSAbsolutePath string
}

func (*InterfaceInfo) GetNICIPs

func (nic *InterfaceInfo) GetNICIPs(ipVersion int) []string

type KatalystMachineInfo

type KatalystMachineInfo struct {
	*info.MachineInfo

	// actually, CPUTopology can be generated by info.MachineInfo,
	// but we still keep it since it construct topology info in a
	// more convenient way
	*CPUTopology

	*MemoryTopology

	// ExtraCPUInfo is extra cpu info not in MachineInfo, such as
	// supported instructions
	*ExtraCPUInfo

	// ExtraNetworkInfo is extra network info not in MachineInfo,
	// such as numa node of each interface
	*ExtraNetworkInfo
}

KatalystMachineInfo is a combination of machine info generated by cadvisor, along with the extra info customized in katalyst environment

func GetKatalystMachineInfo

func GetKatalystMachineInfo(conf *global.MachineInfoConfiguration) (*KatalystMachineInfo, error)

GetKatalystMachineInfo returns KatalystMachineInfo by collecting machine info actually, this function should be only called in initial processes

type MemoryDetails

type MemoryDetails map[int]uint64

type MemoryTopology

type MemoryTopology struct {
	MemoryDetails MemoryDetails
}

func GenerateDummyMemoryTopology

func GenerateDummyMemoryTopology(numaNum int, memoryCapacity uint64) (*MemoryTopology, error)

type NUMANodeInfo

type NUMANodeInfo map[int]CPUSet

NUMANodeInfo is a map from NUMANode ID to a list of CPU IDs associated with that NUMANode.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL