Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AllocationInfo ¶
type AllocationInfo struct { PodUid string `json:"pod_uid,omitempty"` PodNamespace string `json:"pod_namespace,omitempty"` PodName string `json:"pod_name,omitempty"` ContainerName string `json:"container_name,omitempty"` ContainerType string `json:"container_type,omitempty"` ContainerIndex uint64 `json:"container_index,omitempty"` RampUp bool `json:"ramp_up,omitempty"` PodRole string `json:"pod_role,omitempty"` PodType string `json:"pod_type,omitempty"` Egress uint32 `json:"egress"` Ingress uint32 `json:"ingress"` IfName string `json:"if_name"` // we do not support cross-nic bandwidth NumaNodes machine.CPUSet `json:"numa_node"` // associated numa nodes of the socket connecting to the selected NIC Labels map[string]string `json:"labels"` Annotations map[string]string `json:"annotations"` }
func (*AllocationInfo) CheckMainContainer ¶
func (ai *AllocationInfo) CheckMainContainer() bool
CheckMainContainer returns true if the AllocationInfo is for main container
func (*AllocationInfo) CheckSideCar ¶
func (ai *AllocationInfo) CheckSideCar() bool
CheckSideCar returns true if the AllocationInfo is for side-car container
func (*AllocationInfo) Clone ¶
func (ai *AllocationInfo) Clone() *AllocationInfo
func (*AllocationInfo) String ¶
func (ai *AllocationInfo) String() string
type BandwidthInfo ¶
type BandwidthInfo struct { // Actual line speed of a NIC. E.g. a 25Gbps NIC's max bandwidth is around 23.5Gbps // It's configurable. Its value = NIC line speed x configured CapacityRate Capacity uint32 // Reserved bandwidth on this NIC (e.g. for system components or high priority tasks) // For the sake of safety, we generally keep an overflow buffer and do not allocate all bandwidth to tasks // Thus, both reservations should be set slightly larger than the actual required amount SysReservation uint32 Reservation uint32 Allocatable uint32 Allocated uint32 Free uint32 }
type ContainerEntries ¶
type ContainerEntries map[string]*AllocationInfo // Keyed by container name
type NICMap ¶
func GenerateMachineState ¶
func GenerateMachineState(conf *qrm.QRMPluginsConfiguration, nics []machine.InterfaceInfo, reservation map[string]uint32) (NICMap, error)
GenerateMachineState returns NICResourcesMap based on machine info and reserved resources
func GenerateMachineStateFromPodEntries ¶
func GenerateMachineStateFromPodEntries(conf *qrm.QRMPluginsConfiguration, nics []machine.InterfaceInfo, podEntries PodEntries, reservation map[string]uint32) (NICMap, error)
GenerateMachineStateFromPodEntries returns NICMap for bandwidth based on machine info and reserved resources along with existed pod entries
func (NICMap) EgressBandwidthPerNIC ¶
EgressBandwidthPerNIC is a helper function to parse egress bandwidth per NIC
func (NICMap) IngressBandwidthPerNIC ¶
IngressBandwidthPerNIC is a helper function to parse egress bandwidth per NIC
type NICState ¶
type NICState struct { EgressState BandwidthInfo `json:"egress_state"` IngressState BandwidthInfo `json:"ingress_state"` PodEntries PodEntries `json:"pod_entries"` }
NICState indicates the status of a NIC, including the capacity/reservation/allocation (in Mbps)
func (*NICState) SetAllocationInfo ¶
func (ns *NICState) SetAllocationInfo(podUID string, containerName string, allocationInfo *AllocationInfo)
SetAllocationInfo adds a new AllocationInfo (for pod/container pairs) into the given NICState
type NetworkPluginCheckpoint ¶
type NetworkPluginCheckpoint struct { PolicyName string `json:"policyName"` MachineState NICMap `json:"machineState"` PodEntries PodEntries `json:"pod_entries"` Checksum checksum.Checksum `json:"checksum"` }
func NewNetworkPluginCheckpoint ¶
func NewNetworkPluginCheckpoint() *NetworkPluginCheckpoint
func (*NetworkPluginCheckpoint) MarshalCheckpoint ¶
func (cp *NetworkPluginCheckpoint) MarshalCheckpoint() ([]byte, error)
MarshalCheckpoint returns marshaled checkpoint
func (*NetworkPluginCheckpoint) UnmarshalCheckpoint ¶
func (cp *NetworkPluginCheckpoint) UnmarshalCheckpoint(blob []byte) error
UnmarshalCheckpoint tries to unmarshal passed bytes to checkpoint
func (*NetworkPluginCheckpoint) VerifyChecksum ¶
func (cp *NetworkPluginCheckpoint) VerifyChecksum() error
VerifyChecksum verifies that current checksum of checkpoint is valid
type PodEntries ¶
type PodEntries map[string]ContainerEntries // Keyed by pod UID
func (PodEntries) Clone ¶
func (pe PodEntries) Clone() PodEntries
func (PodEntries) GetMainContainerAllocation ¶
func (pe PodEntries) GetMainContainerAllocation(podUID string) (*AllocationInfo, bool)
GetMainContainerAllocation returns AllocationInfo that belongs the main container for this pod
func (PodEntries) String ¶
func (pe PodEntries) String() string
type ReadonlyState ¶
type ReadonlyState interface { GetMachineInfo() *info.MachineInfo GetEnabledNICs() []machine.InterfaceInfo GetReservedBandwidth() map[string]uint32 // contains filtered or unexported methods }
ReadonlyState interface only provides methods for tracking pod assignments
type State ¶
type State interface { ReadonlyState // contains filtered or unexported methods }
State interface provides methods for tracking and setting pod assignments
func NewCheckpointState ¶
func NewCheckpointState(conf *qrm.QRMPluginsConfiguration, stateDir, checkpointName, policyName string, machineInfo *info.MachineInfo, nics []machine.InterfaceInfo, reservedBandwidth map[string]uint32, skipStateCorruption bool) (State, error)
func NewNetworkPluginState ¶
func NewNetworkPluginState(conf *qrm.QRMPluginsConfiguration, machineInfo *info.MachineInfo, nics []machine.InterfaceInfo, reservedBandwidth map[string]uint32) (State, error)