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

package topologymanager

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


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


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
    //Adds a hint provider to manager to indicate the hint provider
    //wants to be consoluted when making topology hints
    //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

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.



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