Documentation
¶
Index ¶
Constants ¶
View Source
const ( // PolicyName is the symbol used to pull us in as a builtin policy. PolicyName = "memtier" // PolicyDescription is a short description of this policy. PolicyDescription = "A policy for prototyping memory tiering." // PolicyPath is the path of this policy in the configuration hierarchy. PolicyPath = "policy." + PolicyName )
View Source
const (
IndentDepth = 4
)
indent produces an indentation string for the given level.
View Source
const (
// OverfitPenalty is the per layer penalty for overfitting in the node tree.
OverfitPenalty = 0.9
)
Variables ¶
This section is empty.
Functions ¶
func CreateTopologyAwarePolicy ¶
func CreateTopologyAwarePolicy(opts *policyapi.BackendOptions) policyapi.Backend
CreateTopologyAwarePolicy creates a new policy instance.
Types ¶
type Grant ¶
type Grant interface { // GetContainer returns the container CPU capacity is granted to. GetContainer() cache.Container // GetCPUNode returns the node that granted CPU capacity to the container. GetCPUNode() Node // GetMemoryNode returns the node which granted memory capacity to // the container. GetMemoryNode() Node // ExclusiveCPUs returns the exclusively granted non-isolated cpuset. ExclusiveCPUs() cpuset.CPUSet SharedCPUs() cpuset.CPUSet SharedPortion() int // IsolatedCpus returns the exclusively granted isolated cpuset. IsolatedCPUs() cpuset.CPUSet // MemoryType returns the type(s) of granted memory. MemoryType() memoryType // SetMemoryNode updates the grant memory controllers. SetMemoryNode(Node) // Memset returns the granted memory controllers as a string. Memset() system.IDSet // ExpandMemset() makes the memory controller set larger as the grant // is moved up in the node hierarchy. ExpandMemset() (bool, error) // MemLimit returns the amount of memory that the container is // allowed to use. MemLimit() memoryMap // String returns a printable representation of this grant. String() string // Release releases the grant from all the Supplys it uses. Release() // UpdateExtraMemoryReservation() updates the reservations in the subtree // of nodes under the node from which the memory was granted. UpdateExtraMemoryReservation() }
Grant represents CPU and memory capacity allocated to a container from a node.
type Node ¶
type Node interface { // IsNil tests if this node is nil. IsNil() bool // Name returns the name of this node. Name() string // Kind returns the type of this node. Kind() NodeKind // NodeID returns the (enumerated) node id of this node. NodeID() int // Parent returns the parent node of this node. Parent() Node // Children returns the child nodes of this node. Children() []Node // LinkParent sets the given node as the parent node, and appends this node as a its child. LinkParent(Node) // AddChildren appends the nodes to the children, *WITHOUT* updating their parents. AddChildren([]Node) // IsSameNode returns true if the given node is the same as this one. IsSameNode(Node) bool // IsRootNode returns true if this node has no parent. IsRootNode() bool // IsLeafNode returns true if this node has no children. IsLeafNode() bool // Get the distance of this node from the root node. RootDistance() int // Get the height of this node (inverse of depth: tree depth - node depth). NodeHeight() int // System returns the policy sysfs instance. System() system.System // Policy returns the policy back pointer. Policy() *policy // DiscoverSupply DiscoverSupply() Supply // GetSupply returns the full CPU at this node. GetSupply() Supply // FreeSupply returns the available CPU supply of this node. FreeSupply() Supply GrantedSharedCPU() int // GetMemset GetMemset(mtype memoryType) system.IDSet // DiscoverMemset DiscoverMemset() // DepthFirst traverse the tree@node calling the function at each node. DepthFirst(func(Node) error) error // BreadthFirst traverse the tree@node calling the function at each node. BreadthFirst(func(Node) error) error // Dump state of the node. Dump(string, ...int) GetMemoryType() memoryType HasMemoryType(memoryType) bool GetPhysicalNodeIDs() []system.ID GetScore(Request) Score HintScore(topology.Hint) float64 // contains filtered or unexported methods }
Node is the abstract interface our partition tree nodes implement.
type NodeKind ¶
type NodeKind string
NodeKind represents a unique node type.
const ( // NilNode is the type of a nil node. NilNode NodeKind = "" // UnknownNode is the type of unknown node type. UnknownNode NodeKind = "unknown" // SocketNode represents a physical CPU package/socket in the system. SocketNode NodeKind = "socket" // NumaNode represents a NUMA node in the system. NumaNode NodeKind = "numa node" // VirtualNode represents a virtual node, currently the root multi-socket setups. VirtualNode NodeKind = "virtual node" )
type Request ¶
type Request interface { // GetContainer returns the container requesting CPU capacity. GetContainer() cache.Container // String returns a printable representation of this request. String() string // FullCPUs return the number of full CPUs requested. FullCPUs() int // CPUFraction returns the amount of fractional milli-CPU requested. CPUFraction() int // Isolate returns whether isolated CPUs are preferred for this request. Isolate() bool // Elevate returns the requested elevation/allocation displacement for this request. Elevate() int // MemoryType returns the type(s) of requested memory. MemoryType() memoryType // MemAmountToAllocate retuns how much memory we need to reserve for a request. MemAmountToAllocate() uint64 }
Request represents CPU and memory resources requested by a container.
type Score ¶
type Score interface { // Calculate the actual score from the collected parameters. Eval() float64 // Supply returns the supply associated with this score. Supply() Supply // Request returns the request associated with this score. Request() Request IsolatedCapacity() int Colocated() int HintScores() map[string]float64 String() string }
Score represents how well a supply can satisfy a request.
type Supply ¶
type Supply interface { // GetNode returns the node supplying this capacity. GetNode() Node // Clone creates a copy of this supply. Clone() Supply // IsolatedCPUs returns the isolated cpuset in this supply. IsolatedCPUs() cpuset.CPUSet // SharableCPUs returns the sharable cpuset in this supply. SharableCPUs() cpuset.CPUSet // Granted returns the locally granted CPU capacity in this supply. Granted() int // GrantedMemory returns the locally granted memory capacity in this supply. GrantedMemory(memoryType) uint64 // Cumulate cumulates the given supply into this one. Cumulate(Supply) // AccountAllocate accounts for (removes) allocated exclusive capacity from the supply. AccountAllocate(Grant) // AccountRelease accounts for (reinserts) released exclusive capacity into the supply. AccountRelease(Grant) // GetScore calculates how well this supply fits/fulfills the given request. GetScore(Request) Score // Allocate allocates CPU capacity from this supply and returns it as a grant. Allocate(Request) (Grant, error) // ReleaseCPU releases a previously allocated CPU grant from this supply. ReleaseCPU(Grant) // ReleaseMemory releases a previously allocated memory grant from this supply. ReleaseMemory(Grant) // ReallocateMemory updates the Grant to allocate memory from this supply. ReallocateMemory(Grant) error // ExtraMemoryReservation returns the memory reservation. ExtraMemoryReservation(memoryType) uint64 // SetExtraMemroyReservation sets the extra memory reservation based on the granted memory. SetExtraMemoryReservation(Grant) // ReleaseExtraMemoryReservation removes the extra memory reservations based on the granted memory. ReleaseExtraMemoryReservation(Grant) // MemoryLimit returns the amount of various memory types belonging to this grant. MemoryLimit() memoryMap // Reserve accounts for CPU grants after reloading cached allocations. Reserve(Grant) error // ReserveMemory accounts for memory grants after reloading cached allocations. ReserveMemory(Grant) error // String returns a printable representation of this supply. String() string }
Supply represents avaialbe CPU and memory capacity of a node.
Click to show internal directories.
Click to hide internal directories.