kubernetes: k8s.io/kubernetes/pkg/kubelet/cm/topologymanager Index | Files | Directories

package topologymanager

import "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager"

Index

Package Files

fake_topology_manager.go policy.go policy_best_effort.go policy_none.go policy_restricted.go policy_single_numa_node.go topology_manager.go

Constants

const PolicyBestEffort string = "best-effort"

PolicyBestEffort policy name.

const PolicyNone string = "none"

PolicyNone policy name.

const PolicyRestricted string = "restricted"

PolicyRestricted policy name.

const PolicySingleNumaNode string = "single-numa-node"

PolicySingleNumaNode policy name.

type HintProvider Uses

type HintProvider interface {
    // GetTopologyHints returns a map of resource names to a list of possible
    // concrete resource allocations in terms of NUMA locality hints. Each hint
    // is optionally marked "preferred" and indicates the set of NUMA nodes
    // involved in the hypothetical allocation. The topology manager calls
    // this function for each hint provider, and merges the hints to produce
    // a consensus "best" hint. The hint providers may subsequently query the
    // topology manager to influence actual resource assignment.
    GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]TopologyHint
    // Allocate triggers resource allocation to occur on the HintProvider after
    // all hints have been gathered and the aggregated Hint is available via a
    // call to Store.GetAffinity().
    Allocate(pod *v1.Pod, container *v1.Container) error
}

HintProvider is an interface for components that want to collaborate to achieve globally optimal concrete resource alignment with respect to NUMA locality.

type Manager Uses

type Manager interface {
    //Manager implements pod admit handler interface
    lifecycle.PodAdmitHandler
    //Adds a hint provider to manager to indicate the hint provider
    //wants to be consoluted when making topology hints
    AddHintProvider(HintProvider)
    //Adds pod to Manager for tracking
    AddContainer(pod *v1.Pod, containerID string) error
    //Removes pod from Manager tracking
    RemoveContainer(containerID string) error
    //Interface for storing pod topology hints
    Store
}

Manager interface provides methods for Kubelet to manage pod topology hints

func NewFakeManager Uses

func NewFakeManager() Manager

NewFakeManager returns an instance of FakeManager

func NewManager Uses

func NewManager(topology []cadvisorapi.Node, topologyPolicyName string) (Manager, error)

NewManager creates a new TopologyManager based on provided policy

type Policy Uses

type Policy interface {
    // Returns Policy Name
    Name() string
    // Returns a merged TopologyHint based on input from hint providers
    // and a Pod Admit Handler Response based on hints and policy type
    Merge(providersHints []map[string][]TopologyHint) (TopologyHint, bool)
}

Policy interface for Topology Manager Pod Admit Result

func NewBestEffortPolicy Uses

func NewBestEffortPolicy(numaNodes []int) Policy

NewBestEffortPolicy returns best-effort policy.

func NewNonePolicy Uses

func NewNonePolicy() Policy

NewNonePolicy returns none policy.

func NewRestrictedPolicy Uses

func NewRestrictedPolicy(numaNodes []int) Policy

NewRestrictedPolicy returns restricted policy.

func NewSingleNumaNodePolicy Uses

func NewSingleNumaNodePolicy(numaNodes []int) Policy

NewSingleNumaNodePolicy returns single-numa-node policy.

type Store Uses

type Store interface {
    GetAffinity(podUID string, containerName string) TopologyHint
}

Store interface is to allow Hint Providers to retrieve pod affinity

type TopologyHint Uses

type TopologyHint struct {
    NUMANodeAffinity bitmask.BitMask
    // Preferred is set to true when the NUMANodeAffinity encodes a preferred
    // allocation for the Container. It is set to false otherwise.
    Preferred bool
}

TopologyHint is a struct containing the NUMANodeAffinity for a Container

func (*TopologyHint) IsEqual Uses

func (th *TopologyHint) IsEqual(topologyHint TopologyHint) bool

IsEqual checks if TopologyHint are equal

func (*TopologyHint) LessThan Uses

func (th *TopologyHint) LessThan(other TopologyHint) bool

LessThan checks if TopologyHint `a` is less than TopologyHint `b` this means that either `a` is a preferred hint and `b` is not or `a` NUMANodeAffinity attribute is narrower than `b` NUMANodeAffinity attribute.

Directories

PathSynopsis
bitmask

Package topologymanager imports 7 packages (graph) and is imported by 43 packages. Updated 2020-09-12. Refresh now. Tools for package owners.